如何优雅地添加MGR节点?

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月份推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩展、高可靠的MySQL集群服务,是MySQL数据库未来发展的一个重要方向。

场景描述

操作系统

MySQL版本

CentOS Linux release 7.3.1611

MySQL5.7.20 二进制

  • ip地址规划

IP地址

hosts

port

192.168.74.134

mgr-node1.up.com

3306\23306

192.168.74.135

mgr-node2.up.com

3306\23306

192.168.74.136

mgr-node3.up.com

3306\23306

一个已经运行很久的MGR集群,以single-master模式运行(单主模式),binlog过期策略为7天。

  • 参数设置

Key

Value

enforce_gtid_consistency

ON

master_info_repository

TABLE

relay_log_info_repository

TABLE

binlog_checksum

NONE

log_slave_updates

ON

binlog_format

ROW

==expire_logs_days==

7

  • 需求描述

因为不可抗力的因素,mgr-node3.up.com 节点永久性的down,并且无法恢复,或者mgr-node3.up.com 宕机超过时间7days, 或需要快速添加节点,那么该如何快速添加或扩容呢?

猜想

  • 如果这个问题发生在Percona XtraDB Cluster(pxc)或者Mariadb Galera Cluster,那解决方案就是通过SST(全量)或者IST(增量)来实现,那么MGR是否有相关的解决方案呢?
  • 假设MGR也是通过SST或者IST来的解决方案,加入MGR是否可以使用MySQLdump 或者rsync来获得一份全量?
  • 假设是通过MySQLdump来实现传递增量。是否可以用xtrabackup来替换呢?

下面根据上述的猜想和假设来求证,如何优雅地添加MGR节点。

验证

猜想:在MySQL官方文档中没有找到关于SST或IST的描述,既然官方文档没有写,那么在实验环境中能否模拟出来呢?

  • 实验:在mgr-node1.up.com主节点创建一张表

加入新的节点mgr-node4.up.com并初始化,开启现有环境所有节点的general_log,并观察general的输出mgr-node1.up.com 节点。

从general_log中找到了蛛丝马迹,目前版本的MGR,不支持SST或IST,实现的方式是根据GTID的方式来实现的。

同时在general_log中也发现,目前版本的MGR也不支持MySQLdump或者rsync方式来给新加入的节点传递全量。如果binlog被清空的话 则显示为空,新的节点无法加入集群,但

"root@localhost:mysql3306.sock [aa]>start group_replication; 会提示成功。

正确姿势

1.首先,需要手动在MGR集群中获得一致性备份。

2.初始化新节点,并应用备份。 注意如下操作,否则无法正常启动集群。

3.安装官方文档正常初始化集群

4.验证

总结

1.如果需要添加一个节点

添加节点 需要自己手动在MGR集群中备份,MGR集群不存在SST和IST概念,而是完全通过GTID和binlog来实现“追数据”的一个操作。

2.节点宕机

如果MGR集群中某个节点宕机,宕机节点会询问存活集群,是否能补全binlog?如果能补齐,那么就会正常传输,进行追数据 ;如果宕机节点需要的日志不存在了,则该节点无法正常加入到集群环境中。

对于MGR一个建议

在宕机节点加入MGR集群中,如果发现需要的binlog日志不存在,则无法启动集群start group_replication。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-12-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

【循序渐进Oracle】Oracle的物理备份(上)

编辑手记:备份重于一切,我们必需知道,系统总是要崩溃的,没有有效的备份只是等哪一天死!今天你备份了吗?我们一起来回顾Oracle的物理备份,本文摘自《循序渐进O...

3248
来自专栏乐沙弥的世界

实验二:SQL server 2005高可用性之----数据库镜像

如转载,请注明出处:http://blog.csdn.net/robinson_0612/archive/2009/11/04/4769060.aspx

642
来自专栏乐沙弥的世界

delete archivelog all 无法彻底删除归档日志?

    最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢?

571
来自专栏乐沙弥的世界

Oracle 数据库实例启动关闭过程

Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载。Oracle数据启动的过程被划分为

734
来自专栏乐沙弥的世界

使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)

--================================================

431
来自专栏恰同学骚年

Hadoop学习笔记—17.Hive框架学习

  Hive 是建立在 Hadoop 基础上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在...

732
来自专栏北京马哥教育

Linux磁盘及文件系统管理

磁盘(Hard Disk Drive,简称HDD)是一种存储介质,传统的机械硬盘由一个或多个铝制或玻璃制的碟片组成,碟片外覆盖有铁磁性材料。 磁盘的物...

2273
来自专栏Jackson0714

【T-SQL性能优化】01.TempDB的使用和性能问题

33813
来自专栏刘迪的专栏

MongoDB 第五期 : 托管 MongoDB 操作指南

本文从自动化部署工具的介绍开始,从四点介绍了MongoDB的部署流程,并从结构、采集部署配置、日报及数据库表结构介绍了MongoDB的监控,以及从策略、状态查询...

3481
来自专栏Jackson0714

【T-SQL性能优化】01.TempDB的使用和性能问题

1462

扫码关注云+社区