如何优雅地添加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 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

redis 学习笔记(3)-master/slave(主/从模式)

类似mysql的master-slave模式一样,redis的master-slave可以提升系统的可用性,master节点写入cache后,会自动同步到sla...

1898
来自专栏智能计算时代

Envoy架构概览(7):断路,全局限速和TLS

断路 断路是分布式系统的关键组成部分。快速失败并尽快收回下游施加压力几乎总是好的。 Envoy网格的主要优点之一是,Envoy在网络级别强制实现断路限制,而不必...

2776
来自专栏进击的程序猿

raft 系列解读(3) 之 代码实现最小规则followercandidateleader规则RequestVote RPCAppendEntries RPC

首先,其实raft如果你不去看理论正确性的证明,光实现的话,只要按照raft里面给出的原则写代码就ok!如果代码写出来不正确,只能是你自己实现的问题。囧

512
来自专栏逸鹏说道

分布式小文件系统fastdfs与weedfs的对比

小编小文件存储用的一直是Mongodb,Tair和FastDFS风评一直很不错,最近1年Net界用的比较多的基本上都是FastDFS或者Mongodb(分布式图...

4437
来自专栏salesforce零基础学习

salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)

salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段...

1838
来自专栏Golang语言社区

服务器备份方式大概有以下几种 详细??

1、正常备份(Normal): 也叫完全备份。正常备份是最普遍的一种备份方式,是将整个系统的状态和数据完全进行备份,包括服务器的操作系统、应用软件以及所有的数据...

28510
来自专栏aoho求索

consul配置与实战

上一篇提到,项目用的分布式服务发现与注册组件是consul,这篇文章主要来讲下consul组件在项目中的应用以及相关介绍。本文以官方文档为主要参考consul文...

3405
来自专栏磨磨谈

Ceph用户邮件列表Vol45-Issue1

这个问题是作者一个集群中(ceph 0.94.5)出现了一个磁盘损坏以后造成了一些对象的丢失,然后在做了一定的处理以后,集群状态已经正常了,但是还是新的请求会出...

552
来自专栏后端技术探索

解决nginx负载均衡的session共享问题

查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享

564
来自专栏后端技术探索

解决nginx负载均衡的session共享问题

查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享

681

扫描关注云+社区