背景
传统数据复制形式有如下三种:
异步复制:利用发动更新申请,主节点(Master)实现相应操作后立刻响应利用,Master 向从节点(Slave)异步复制数据。
强同步复制:利用发动更新申请,Master 实现操作后向 Slave 复制数据,Slave 接管到数据后向 Master 返回胜利信息,Master 接到 Slave 的反馈后再应答给利用。Master 向 Slave 复制数据是同步进行的。
半同步复制:利用发动更新申请,Master 在执行完更新操作后立刻向 Slave 复制数据,Slave 接管到数据并写到 relay log 中(无需执行)后才向 Master 返回胜利信息,Master 必须在承受到 Slave 的胜利信息后再向应用程序返回响应。
存在问题
当 Master 或 Slave 不可用时,以上三种传统数据复制形式均有几率引起数据不统一。
数据库作为零碎数据存储和服务的外围能力,其可用性要求十分高。在生产零碎中,通常都须要用高可用计划来保证系统不间断运行,而数据同步技术是数据库高可用计划的根底。
解决方案
MAR 强同步复制计划是腾讯自主研发的基于 MySQL 协定的并行多线程强同步复制计划,只有当备机数据齐全同步(日志)后,才由主机给予利用事务应答,保障数据正确平安。
原理示意图如下:
在应用层发动申请时,只有当从节点(Slave)返回信息胜利后,主节点(Master)才向应用层应答申请胜利,以确保主从节点数据完全一致。
MAR 强同步计划在性能上优于其余支流同步计划,具体数据详情可参见 强同步性能比照数据。次要特点如下:
一致性的同步复制,保障节点间数据强一致性。
对业务层面齐全通明,业务层面无需做读写拆散或同步强化工作。
将串行同步线程异步化,引入线程池能力,大幅度提高性能。
反对集群架构。
反对主动成员管制,故障节点主动从集群中移除。
反对主动节点退出,无需人工干预。
每个节点都蕴含残缺的数据正本,能够随时切换。
无需共享存储设备。