一、背景
传统数据复制方式有如下三种:
·异步复制:应用发起更新请求,主节点(Master) 完成相应操作后立即响应应用,Master 向从节点(Slave)异步复制数据。
·强同步复制:应用发起更新请求,Master 完成操作后向 Slave 复制数据,Slave 接收到数据后向 Master 返回成功信息,Master 接到 Slave 的反馈后再应答给应用。Master 向 Slave 复制数据是同步进行的。
·半同步复制:应用发起更新请求,Master 在执行完更新操作后立即向 Slave 复制数据,Slave 接收到数据并写到 relay log 中(无需执行) 后才向 Master 返回成功信息,Master 必须在接受到 Slave 的成功信息后再向应用程序返回响应。
二、解决方案
MAR 强同步复制方案是腾讯自主研发的基于 MySQL 协议的并行多线程强同步复制方案,只有当备机数据完全同步(日志)后,才由主机给予应用事务应答,保障数据正确安全。
原理示意图如下:
在应用层发起请求时,只有当从节点(Slave)返回信息成功后,主节点(Master)才向应用层应答请求成功,以确保主从节点数据完全一致。
MAR 强同步方案在性能上优于其他主流同步方案,具体数据详情可参见 强同步性能对比数据。主要特点如下:
·一致性的同步复制,保证节点间数据强一致性。
·对业务层面完全透明,业务层面无需做读写分离或同步强化工作。
·将串行同步线程异步化,引入线程池能力,大幅度提高性能。
·支持集群架构。
·支持自动成员控制,故障节点自动从集群中移除。
·支持自动节点加入,无需人工干预。
·每个节点都包含完整的数据副本,可以随时切换。
·无需共享存储设备。