Mysql Group Replication介绍

一、Mysql Group Replication简介

Mysql Group Replication(MGR)是一个全新的高可用和高扩展的MySQL集群服务。

高一致性,基于原生复制及paxos协议的组复制技术,以插件方式提供一致数据安全保证;

高容错性,大多数服务正常就可继续工作,自动不同节点检测资源征用冲突,按顺序优先处理,内置自动防脑裂机制;

高扩展性,自动添加移除节点,并更新组信息;

高灵活性,单主模式和多主模式。单主模式自动选主,所有更新操作在主进行;多主模式,所有server同时更新。

paxos协议,paxos是个分布式一致性协议,简单来说就是,它的事件需要多个节点共同参与,一个事件完成是指多个节点上均完成了自身的子事件(就让我门把这样的事件称为"分布式事件"),这样的分布式事件可以看作是多个子事件的复合。

二、数据库架构

多主模式(Mutil primary mode)和单主模式(Single primary mode)

下图为多主模式,3master+1slave,34为主库开启读写,31/33开启只读,37挂在34上做slave进行异步复制。

三、MySQL5.7版本 MGR部署

创建复制用户

mysql> grant replication slave,replication client on *.* to rep@'%' identified by '123456';

构建group replication集群

mysql> change master to master_user='rep',master_password='123456' for channel 'group_replication_recovery'; 

安装插件

mysql> install PLUGIN group_replication SONAME 'group_replication.so';

设置group_replication_bootstrap_group为ON是为了标示以后加入集群的服务器以这台服务器为基准,以后加入的就不需要设置。

mysql> set global group_replication_bootstrap_group=ON; 

作为首个节点启动mgr集群

mysql> start group_replication;
mysql> set global group_replication_bootstrap_group=OFF;

添加实例(从库)

mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
mysql> start group_replication;

查看MGR状态

mysql> select * from performance_schema.replication_group_members;

基本配置

# Group Replication
server_id = 34
gtid_mode = ON
enforce_gtid_consistency = ON 
master_info_repository = TABLE 
relay_log_info_repository = TABLE 
binlog_checksum = NONE 
log_slave_updates = ON
log_bin = binlog
binlog_format= ROW

group_replication变量使用的loose-前缀是指示Server启用时尚未加载复制插件也将继续启动,根据自己配置修改

transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="127.0.0.1:13309"
loose-group_replication_group_seeds="127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308"
loose-group_replication_bootstrap_group = off

相关参数

show variables like '%group_replication%';

流控制默认配置开启,默认配置,队列超过默认值会触发流控制,使整体集群性能受到影响。

四、MGR测试

MGR经过一段时间的测试,出现的问题大概总结为以下几点:

1.每次提交事务时尽量控制单次操作事务的数据量,减少大事物在其他节点check的时间和堵塞后面的操作带来的集群复制延迟,如事务回滚影响更大;

2.MGR集群环境部署对网络的依赖性较强,网络延时会导致整个集群性能的下降,集群内服务器尽量保持配置一致,集群内其中一服务器性能不好也会影响整个集群的整体性能;

3.DDL操作时,如操作的table有事物执行,在ddl时间内的所有的 插入,更新和删除操作记录到一个日志文件,然后再把这些增量数据应用到相应的表上(等表上的事务完全释放后),日志大小受innodb_online_alter_log_max_size参数限制,如写一直持续innodb_online_alter_log_max_size参数大小不好人为控制,会导致ddl执行失败;

4.Mysqldump会直接影响集群性能,xtrbackup因对磁盘io占用也会间接影响集群性能,建议备份节点考虑在mgr集群下挂载slave节点上执行备份;

5.版本升级,5.6在开启gtid后可直接升级至5.7.17并开启组复制模式;5.5版本则需要升级到5.6版本过渡一下才可升级为组复制模式。由于5.6、5.7版本上时间类型time,timestamp,datetime精度都支持到微秒精度,从5.5升级后带来的影响需要评估;

6.数据校验,现有工具Pt-table-checksum并不支持MGR集群的校验,仅可以对slave节点数据校验;

7.流量控制,当certifer_queue队列深度大于flow_crontrol_ certifer_threshold或者applier_queue队列深度大于flow_crontrol_ applier_threshold值时会触发流控制,触发流控制后写入会降低,这是为了避免更大的复制延迟,但是触发流控制后前端应用就会感觉可用率的下降,所以这个参数是个双刃剑,要根据实际生产环境设置,并且certifer_queue和applier_queue队列深度暂时没有监控项可监控,后期带来的运维问题也需要考虑;

8.MGR集群最多为9个节点,以5节点集群为例,集群内2个节点故障时,其余3个节点是可以继续提供服务的,但是当集群内有3个节点故障时,剩余2个节点就不能提供服务了,此时需要人工处理,如处理不当极容易发生脑裂现象。

原文发布于微信公众号 - MYSQL轻松学(learnmysql)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构

高并发解决方案--负载均衡

612
来自专栏散尽浮华

Tomcat利用MSM实现Session共享方案解说

Session共享有多种解决方法,常用的有四种: 1)客户端Cookie保存 2)服务器间Session同步 3)使用集群管理Session(如MSM) 4)...

21410
来自专栏磨磨谈

Ceph recover的速度控制

磁盘损坏对于一个大集群来说,可以说是必然发生的事情,即使再小的概率,磁盘量上去,总会坏那么几块盘,这个时候就会触发内部的修复过程,修复就是让不满足副本要求的PG...

1193
来自专栏北京马哥教育

Linux之HA高可用集群的基础概念总结

HA(High Availability)高可用集群,其特点为根据实际需求为前端Diretor,后端RS-server,数据库服务器,共享存储等集群节点做一个...

3716
来自专栏杨建荣的学习笔记

清理session的小插曲(二) (r6笔记第4天)

在上周巡检系统的时候发现session列表中显示有一个session的状态为“KILLED",当时没有太在意,等到周一回来做检查的时候,发现那个session的...

2686
来自专栏架构师之路

这才是真正的分布式锁

昨晚十点下班,回家花了1个小时写了一篇《一分钟实现分布式锁》,引起读者一些反响,有些朋友反馈“setnx算什么方案”,“没有考虑超时”,“为啥不用zookeep...

3657
来自专栏IT大咖说

VMware vSAN 架构解析及存储策略

摘要 VMware vSAN 通过 vSphere 原生的高性能体系结构支持业界领先的超融合基础架构解决方案。 vSAN是 Software-Defined D...

3523
来自专栏Java技术分享

dubbo 到底是用来干嘛的?

一个一个回答吧。 1. 负载均衡:对外提供一个公共地址,请求过来时通过轮询、随机等,路由到不同server。目的是分摊压力。    失效备援:发现一台serve...

19710
来自专栏SDNLAB

SDN私享汇(十三):DCFabirc控制器实现高级OpenStack网络功能

DCFabirc的主要特性和基于DCFabric的OpenStack网络的高性能优势。DCFabric的最新版本“秦”在峰会上正式发布,新版本主要在多线程优化、...

2352
来自专栏我是东东强

转发表(MAC表)、ARP表、路由表总结

计算机网络中一个关键步骤在于通信路径上不同节点对于流经本节点的数据包转发,常见的交换设备主要是交换机(第二层、三层)和路由器(第三层),在实际运行时,它们各自维...

1262

扫码关注云+社区