MySQL半同步复制
2016-09-06 17:26
141 查看
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难题。
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难题。
相关文章推荐
- mysql同步复制搭建方法指南详细步骤
- MySQL主从服务器复制同步设置
- (转)mysql同步复制
- mysql 5.5中的半同步复制
- mysql5.5.9半同步复制功能部署
- mysql同步复制搭建方法
- MySQL主从replication半同步设置及支持基于ssl复制配置
- (转)mysql同步复制
- MySQL主主以及主从复制、半同步复制
- mysql服务器复制的主从架构半同步的实现
- MYSQL数据同步备份复制
- Mysql双向同步复制
- mysql同步复制的示例和配置选项
- AB复制(mysql同步)
- mysql主从同步复制错误解决一例
- mysql同步复制搭建方法指南详细步骤
- Linux下MySQL双向同步复制配置方法
- MYSQL--之--主从复制同步
- mysql的主从构架,复制,半同步,SSL加密复制的实现
- mysql主从复制,半同步,主主复制架构的实现