IT技术博客大学习 共学习 共进步

MySQL半同步存在的问题

MySQL实验室 2010-03-03 23:57:38 累计浏览 4,101 次
本机暂存

      去年提到过我做的一个MySQL HA高可用方案,就是利用了Google的半同步补丁来加以实现的。而现在MySQL5.5中已经集成了semi-sync replication的功能,那么我们可以放心用它和其他组件及服务判断程序来实现我们的高可用解决方案。但是这里还存在一点瑕疵,需要注意。 By ivan@mysqlab.net

MySQL半同步流程设计图

MySQL半同步流程设计图

  在开启MySQL半同步的时候,需要至少一个开启了半同步的slave。在master提交一个写事务之后,master会block这个事务,直到至少一个slave确认已经接受到了该复制事件,这时master才想应用程序确认提交成功。否则超时中断半同步,直到重新满足条件开启。

  在master提交事务之后,而slave未来得及接收复制事件,这时候master crash的话,应用程序会切换到slave上,并重新发起事务,这正好是我们所需要的,满足高可用的初衷。但是这里存在一个缺陷,那就是在master恢复之后,原来的事务已经提交,这时候复制会出现问题。

  解决办法:在原来的master恢复之后数据重做(推荐),或者跳过重复数据错误。

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,162)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,321)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,080)
  4. Mysql监控指南 (累计阅读 21,204)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,180)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 12,980)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,461)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,482)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,424)
  10. 架构师的思考 (累计阅读 10,461)