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

相关文章

来自专栏Flutter&Dart

DartVM服务器开发(第七天)--WebSocket

可以看到我们熟悉的dart介绍,它被用于web、服务器、移动开发和物联网等领域的开发,等等,这里有一个目前比较热门的一个名词,物联网、对的,dart支持物...

1113
来自专栏FreeBuf

Web黑盒渗透思路之猜想

场景:WEB后台爆破 后台爆破很多人都会选择最经典的模式,如字典爆破,挖掘未授权访问漏洞,挖掘验证码漏洞(未刷新,验证码识别)等方法。 猜想: 1、后台程序是采...

2105
来自专栏吴伟祥

Druid总结 原

https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

1202
来自专栏web编程技术分享

列举两个前端开发中的“灵异事件”0102

3275
来自专栏FreeBuf

Kali Linux渗透基础知识整理(四):维持访问

*本文原创作者:sysorem 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限。使用木马程序、后门程序和rootkit来达到这一目的。...

2118
来自专栏Golang语言社区

Go语言实现的WebSocket

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

2632
来自专栏Python与爬虫

websocket与爬虫

背景 写爬虫的目的应该就是为了拿到数据,或者说模拟某种操作 如果他使用的是http(s) 协议来传输数据的,那么我们就模拟http协议来发送数据 如果它使用的是...

50711
来自专栏存储

Xen server虚拟化中虚拟机磁盘文件丢失的处理办法

因服务器突然断电原因导致Xen Server服务器中一台VPS(即Xen Server虚拟机)不可用,虚拟磁盘文件丢失,通过电话联系北亚数据来进行恢复。硬件环...

1847
来自专栏Java Edge

Tair 简介1 Tair的功能2 Tair的内部结构3 数据的分布4 多备份的支持5 多机架和多数据中心的支持6 轻量级的configserver7 DataServer内部结构8 抽象的存

Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。 在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都...

713
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】Web服务器的工作原理

Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的...

38312

扫码关注云+社区