zoukankan      html  css  js  c++  java
  • Mysql5.7 半同步改进

    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之后。

  • 相关阅读:
    mysql缓存
    复杂映射
    SQL 映射的 XML 文件
    xml配置文件
    从xml中构建sqlSessionFactory
    eclipse使用时jar不在libraries
    去掉不用的工作空间
    javac找不到或无法加载主类 com.sun.tools.javac.Main,
    文本,布局,样式
    (常用)re模块
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/7199589.html
Copyright © 2011-2022 走看看