Mysql5.6半同步策略

Mysql 5.6在半同步的时候,采用的是After Commit策略。即在主库上commit了之后,等待从库返回确认。

在这里,首先会出现幻读的问题,即当前连接的事务读取不到这条记录,而其他连接因为主库已经提交了事务,所以能读取到这条记录。

其次,如果在主库等待从库确认的过程中,主库宕机。此时有两种情况:

1. 事务还没有提交到从库。此时客户端会得到失败的结果。此时如果从库切换为主库,主库恢复变为从库,客户端提交数据到原来的从库,就会发现原来的主库上数据被重复提交。

2. 事务已经提交到从库。此时主库向客户端返回提交失败,而从库已经提交了事务。再次提交的时候,从库便会多出一个事务。

Mysql5.7上半同步的改进

Mysql5.7上,主从的同步等待由主库提交之后等待改为了主库提交之前等待,即 Before Commit。这样就保证了从库在提交了事务之后,主库才会提交事务并返回。从一定程度上解决了主从不一致的问题。

并且,在Mysql5.7上提供了rpl semi sync master wait_point配置,来决定半同步在什么地方等待从库返回。

rpl_semi_sync_master_wait_point

AFTER

SYNC

新的半同步方案,Waiting Slave dump在Storage Commit之前。

COMMIT

老的半同步方案,Waiting Slave dump在Storage Commit之后。

Mysql5.7 半同步改进的更多相关文章

  1. 关于Mysql5.6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  2. MySQL5.5半同步模式

    MySQL5.5支持半同步的复制模式,什么是半同步的? 1. MySQL5.5之前的Master-SLave的复制模式是异步的,这里的文档有详细的说明;

  3. MySQL5.7 半同步复制

    一.概述 5.5与5.7的半同步复制可能存在差异,从MySQL5.5开始,MySQL以插件的形式支持半同步复制 异步:默认情况下,MySQL复制是异步的.主库在执行完客户端提交的事务后会立即将结果返给 ...

  4. Mysql的ssl主从复制+半同步主从复制

    Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...

  5. 【可靠性】Mysql 5.7 降低了半同步复制-数据丢失的风险

    如果你的生产线开启了半同步复制,那么对数据的一致性会要求较高,但在MySQL5.5/5.6里,会存在数据不一致的风险.有这么一个场景,客户端提交了一个事务,master把binlog发送给slave, ...

  6. PostgreSQL的同步级别与MySQL的半同步after_sync比较

    MySQL的半同步中通过binlog进行流复制,同步级别和PostgreSQL对比可以发现: PostgreSQL                MySQL off local            ...

  7. MySQL主从复制之半同步模式

    MySQL主从复制之半同步模式 MySQL半同步介绍: 一般情况下MySQL默认复制模式为异步,何为异步?简单的说就是主服务器上的I/O threads 将binlog写入二进制日志中就返回给客户端一 ...

  8. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)

    之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...

  9. MySQL5.7延迟复制半同步复制

    MySQL5.7延迟复制半同步复制 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.延迟复制 1>.什么是延迟复制 延迟复制是指定从库对主库的延迟至少是指定的这个间隔时间 ...

随机推荐

  1. [label][JavaScript]读nowmagic - js词法作用域、调用对象与闭包

     原文链接:                 http://www.nowamagic.net/librarys/veda/detail/1305 作用域(scope) JavaScript 中的函数 ...

  2. linux系统上查看硬件信息

    一:查看CPU more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo 如 ...

  3. Win 8下Rime输入法无法同步的临时解决方法

    意外发现了Rime输入法(OS X上叫鼠须管'Squirrel',windows上叫小狼毫'Weasel',linux上叫中州韵'ibus-rime',连名字都起的这么牛逼),真是神器啊,流畅的速度, ...

  4. WPF上下滚动字幕

    XAML代码: <local:WorkSpaceContent x:Class="SunCreate.CombatPlatform.Client.NoticeMarquee" ...

  5. console使用技巧

    http://heikezhi.com/yuanyi/10%E4%B8%AAchrome%20console%E5%AE%9E%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7 ...

  6. DS博客作业01-日期抽象数据类型的设计与实现

    1.思维导图和学习体会 1.1绪论知识思维导图 1.2学习体会 通过这几节课数据结构的新学习,让我感到了难度,很多概念性的东西,不是很好理解,老师在讲内容的时候,很容易跟不上节奏,我发现这门课的学习一 ...

  7. 修改 nginx 默认端口

     修改 nginx 默认端口 nginx 解压目录下的  conf 目录下的 nginx.conf 修改对应端口

  8. IDEA去除 xml 中Sql语句的背景

    去掉黄色背景 去掉绿色背景

  9. SQL Server 根据树状结构表生成以/号分割的路由字符串

    很多情况下,我们有必要把树形结构进行数据梳理.比如,要方便的过滤出一个父节点下的所有子节点等等... 这个时候,我们可以生成一个路径表字符串,在应用时只需要对该字符串进行索引即可达成目的. 目标:按图 ...

  10. docker启动时报错

    docker安装成功后,启动时报错. 1.后来排查后发现yum install docker安装的是从test存储库中安装的. 后来我指定了特定的版本后,而且从stable存储库安装的,以后再启动就好 ...