微信数据强一致高可用分布式数据库PhxSQL设计与实现

本文详细描述了 PhxSQL 的设计与实现。从 MySQL 的容灾缺陷开始讲起,接着阐述实现高可用强一致的思路,然后具体分析每个实现环节要注意的要点和解决方案,最后展示了 PhxSQL 在容灾和性能上的成果。

设计背景

互联网应用中账号和金融类关键系统要求和强调强一致性及高可用性。当面临机器损坏、网络分区、主备手工或者自动切换时,传统的 MySQL 主备难以保证强一致性和高可用性。PhxSQL 将 MySQL 集群构建在一致性完善的 Paxos 协议基础上,保证了集群内 MySQL 机器之间数据的强一致性和整个集群的高可用性。

原生 MySQL 的容灾缺陷

MySQL 容灾方案

MySQL 有两种常见的复制方案,异步复制和半同步复制。

  • 异步复制方案

Master 对数据进行 commit 操作后再将数据异步复制到 Slave。

但数据无法保证成功复制,也就无法保证 MySQL 主备间的数据一致性,如图1所示。

图1   MySQL 异步复制流程

图1 MySQL 异步复制流程

  • 半同步复制方案

Master 对数据进行 commit 操作前将数据复制到 Slave,确认复制成功后再对数据进行 commit 操作。

绝大多数情况下,半同步复制能保证 MySQL 主备间的数据一致性,如图2所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值