mysql5.7+mgr功能_(16)MGR-MySQL官方高可用方案 5.7新特性

MySQL Group Replication基于Paxos协议的状态机复制。之前高可用方式,本质都是Master-Slave。MySQL 5.7开始无损半同步复制(lossless semi-sync replication),提升数据复制强一致性

概要:异步复制、半同步复制、组复制对比,特性,影响

一、对比其他复制

1、MySQL异步复制

master事务提交不需slave确认,不care slave是否接收到master的binlog(缺点:1、slave接受或应用失败,m无法感知,master宕机s为新m,数据不一致!)

缺点:2、高并发的主从复制,从与主较大延迟(并行复制优化,降低延迟)

slave收到master binlog先写relay log,异步执行relay log的sql应用到自身。

优点:性能最好,无需等待传输结果

c71922e6db09

2、MySQL半同步复制

主库在binlog commit后将binlog发送到从库,从库接收到binlog后,落盘relay log后回复ack;主库收到ack再进行提交

在具体的版本中,5.5、5.6的半同步机制做了优化,主库等待从库ack的时机不同:5.5 采用after-commit,即在binlog sync、innodb commit后再等待从库ack,这会造成其他session可以看到已提交的事务,如果此时发生主从切换,会产生幻读;5.6采用after-sync,把等待ack的时机提前到iinnodb commit之前,在binlog sync后等待从库ack,其他session看不到等待提交的事务,避免了幻读问题。下图是采用after-sync的半同步方式。

c71922e6db09

3、MySQL组复制

5.7.17推出组复制MGR,依靠分布式一致性协议(Paxos变体),实现最终一致性:组内大多数节点(N / 2 + 1)决议通过,事务才可提交

例:3个节点组成一个复制组,Consensus层为一致性协议层,2个节点通过才提交

各节点维护各自数据副本(Share Nothing),通过一致性协议实现原子和全局有序消息,实现组内一致。

ps:针对只读(RO)事务则不需组内同意,直接 COMMIT

c71922e6db09

二、特性

数据一致性保障:集群大部分节点收到日志

Fault Tolerance:故障(包括脑裂)依然可用,双写对系统无影响

三、影响

仅支持InnoDB表,一定要一个主键,做write set冲突检测;

必须开GTID特性,二进制日志格式为ROW,用于选主与write set

COMMIT失败,类似快照事务隔离级别失败场景

MGR集群最多支持9个节点

不支持外键于save point特性,无法做全局间的约束检测与部分回滚

二进制日志不支持binlog event checksum

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值