MySQL半同步复制

本文介绍了MySQL中的半同步复制机制,包括其工作原理、异步与半同步的区别,以及lossless半同步复制的特点。通过详细解释半同步复制过程中的关键步骤WaitACK,帮助读者理解如何确保数据的一致性和减少数据丢失的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL半同步复制

      MySQL为了容灾数据一致性服务,有几种复制方式: 主从复制方式,异步,半同步,lossless半同步复制方式。
      异步的复制: 默认的复制是异步的,即master commit时不等更新被slave接受就向客户端回话应答成功。slave会对master有一个更新延迟,当master宕机,slave被提升为新的master时,必然会发生数据丢失。
      半同步复制:半同步复制时,master会等本地commit成功并且至少有一个半同步复制slave收到了binglog且写入relay log刷新到磁盘。
      lossless半同步复制:就是先等待slave返回已接受到binglog并刷盘的应答,然后再提交Commit命令到存储层,说白了就是对调了一下两个操作的次序。      
      下面重点介绍下MySQL半同步复制:
             

注: 上图摘自微信后台团队。

上图描述了MySQL的Binlog半同步过程。Wait ACK是半同步的关键步骤,Master把Binlog发给Slave之后,需要等待Slave的ACK。Master直到成功收到ACK之后,才执行Engine Commit把数据持久化到Storage。具体细节可参考:http://my-replication-life.blogspot.com/2013/09/loss-less-semi-synchronous-replication.html

MySQL启动时,Wait ACK过程会被跳过,导致Engine Commit会被直接执行。具体细节请参考:https://jira.mariadb.org/browse/MDEV-162 

总结:MySQL的半同步复制和Master切换都存在一些不足。数据复制存在回滚难题,Master切换存在多Master难题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值