mysql的mgr是什么意思_MySQL之MGR简介

一、什么是MGR?

MGR(MySQL Group Replication),是MySQL在2016年12月推出的一个全新的高可用与高扩展的解决方案。

二、为什么要使用MGR?

MySQL推出MGR之前,传统复制分为两种,异步复制、半同步复制。

MySQL Asynchronous Replication(异步复制):master执行事务,写入binlog日志,然后提交。slave接收binlog日志事务并将事务先写入relay日志,然后重做事务。当master宕机时有可能会造成数据不一致情况。

MySQL Semisynchronous Replication (半同步复制):master执行事务,写入二进制日志,将binlog事务日志传送到slave,slave接收到binlog事务日志后,将其写到relay log,然后向master返回传送成功ACK;master收到ACK后,再在存储引擎中提交事务。(两种提交方式,由参数rpl_semi_sync_master_wait_point决定)

但是以上两种主从复制存在以下弊端:

1、写操作集中在MASTER服务器上;

2、可能产生数据不一致的问题;

3、MASTER宕机后,需要人为选择新主并重新给其他的slave端执行change master。

三、MGR提供了哪些功能?

1、同步复制;

2、单主模式、多主模式;

3、自动切换;

4、弹性扩展。

四、MGR建置限制?

1、仅支持innodb引擎;

2、所有新增表必须显式创建主键;

3、建议隔离级别为READ COMMITED,多主模式下,不支持SERIALIZABLE;

4、多主模式下,不建议使用外键;

5、需开启bin_log_format=row、log_slave_updates=ON;

6、需开启GTID;

7、需安装引擎group_replication.so;

8、MGR最多支持9个节点。

五、MGR原理

1、单主模式

单主模式下,只有一个节点可以读写,其他节点提供只读服务。单主模式下,当主节点宕掉,其他节点自动会根据服务器的server_uuid变量和group_replication_member_weight变量值,选择下一个slave作为主节点,group_replication_member_weight的值最高的成员被选为新的主节点,该参数默认为50,可以在节点上设置不同值;在group_replication_member_weight值相同的情况下,group根据数据字典中server_uuid排序,排序在最前的被选择为主节点。

2、多主模式

多主模式下,在组复制中通过Group Replication Protocol协议及Paxos协议,形成的整体高可用解决方案,同时增加了certify的概念,负责检查事务是否允许提交,是否与其它事务存在冲突,Group Replication是由多个节点共同组成一个数据库集群,每个节点都可以单独执行事务,但是read-write(RW)的操作只有在组内验证后才可以commit,Read-only (RO)事务是不需要验证可以立即执行,当一个事务在一个节点上提交之前,会在组内自动进行原子性的广播,告知其他节点变更了什么内容/执行了什么事务,然后为该事物建立一个全局的排序,最终,这意味着所有的服务器都以相同的顺序接收相同的事务集。因此,所有服务器都按照相同的顺序应用相同的变更集,因此它们在组中保持一致。 在多主模式下,该组的所有成员都设置为读写模式,在多主模式下,不支持SERIALIZABLE事务隔离级别,且不能完全支持级联外键约束。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值