MySQL主动-主动同步复制的4种解决方案
2026-05-09
要实现实时数据同步,核心要求是基于日志进行,从而实现接近实时的数据同步。这种方式不会对数据库自身的设计与实现施加任何额外限制。MySQL 双活同步复制的目的是保障持续可用性与容错能力。以下是实现 MySQL 双活同步复制的 4 种方法。
基于MySQL数据库原生复制功能的主-主复制
通常适用于中小型规模部署。
在此架构中,两个节点可采用简单的双主模式,并使用专用连接。当主节点 A 发生故障时,应用程序连接可快速切换至主节点 B;反之亦然。
为避免“脑裂”情况(即两个节点写入相互冲突的数据),必须为两个节点分别设置不同的 auto-increment-increment 和 auto-increment-offset 值。这是因为:若主节点意外崩溃或不可用,部分二进制日志(binlog)事件可能尚未复制到从节点。在此类情况下,从节点生成的自增数值与主节点原有的自增数值之间可能发生冲突。
然而,如果存在合适的容错机制来解决主从自增ID冲突问题,则可避免采用此类方法。在MySQL更新版本5.7及以上版本中,利用多线程复制可显著降低复制延迟。此外,对复制延迟特别敏感的另一种替代方案是半同步复制,其几乎不存在延迟。但该方案可能导致事务并发性能下降,尤其是在双向写入场景下。因此,需进行全面评估后方可决策。
基于 Galera 复制的解决方案
Galera 是由 Codership 提供的一种多主数据同步复制机制。它支持多个节点间的数据同步复制,以及读写操作,从而保障数据库的高可用性与数据一致性。基于 Galera 的主要高可用性解决方案包括 MariaDB Galera 集群和 Percona XtraDB 集群(PXC)。
目前,PXC(Percona XtraDB Cluster)应用更为广泛,可提供严格的数据一致性,因此特别适用于电子商务场景。然而,PXC也存在自身局限性。在高并发事务量的场景下,建议采用InfiniBand网络以降低网络延迟。这是因为PXC可能出现写放大及瓶颈效应,从而导致并发效率显著下降。与半同步复制类似,Galera复制通常限制为最多三个节点。此外,网络抖动可能引发性能与稳定性问题。
基于组复制的解决方案
MGR(MySQL 组复制)是 MySQL 官方推出的高可用性解决方案。它通过 Paxos 协议,在数据库集群的各节点间提供强数据一致性保障。MGR 基于原生复制技术,以插件形式提供,支持集群中所有节点均可写入,从而突破单集群的性能瓶颈,解决因网络分区引发的脑裂问题,并提升复制数据的可靠性。
然而,现实情况却有些严峻。目前,MGR 的早期采用者并不多。此外,它仅支持 InnoDB 表,且要求每张表都必须拥有主键,以实现写集合冲突检测;必须启用 GTID 功能,并将二进制日志格式设置为 ROW,以支持领导者选举和写集合机制。
提交(COMMIT)操作可能失败,其失败场景与快照隔离级别中的失败情形类似。目前,MySQL组复制(MGR)集群最多支持9个节点。它不支持外键和保存点(savepoint)功能,因此无法执行全局约束检查,也无法进行部分回滚。二进制日志(binary log)不支持binlog事件校验和(binlog event checksum)。
基于 Canal 的解决方案
在实时数据库同步方面,阿里巴巴推出了一款名为 Otter 的专用开源项目,可实现分布式数据库的同步复制。Otter 的核心思想仍是通过捕获数据库的增量数据日志,来达成近实时的同步复制。Otter 本身依赖于另一款开源项目 Canal,后者专注于捕获数据库增量同步日志信息。
目前,Otter 专注于实现 MySQL 数据库之间的同步复制。它采用类似的技术,实现两个 MySQL 数据库之间的双向同步复制。需要特别注意的是,此处的“双向”是指数据既可从 A 同步至 B,也可从 B 同步至 A,但在某一特定时刻,实际同步方向可能是单向的。
主从复制的过程可分为三个步骤:
1. 主服务器将更改记录到二进制日志中,这些记录称为二进制日志事件。可使用“show binlog events”命令查看这些事件。
2. 从服务器将主服务器的二进制日志事件复制到自身的中继日志中。
3. 从服务器将按顺序重放中继日志中记录的事件,以将其主服务器上的更改应用到自身的数据中。
至于运河原则,它相对简单明了:
1. Canal 通过伪装成 MySQL 从库,向 MySQL 主库发送 dump 请求,从而模拟 MySQL 从库的交互协议。
2. MySQL 主服务器在收到转储请求后,开始将二进制日志推送至从服务器(即 Canal)。
3. Canal 随后解析二进制日志对象(原始格式为字节流),以提取相关信息。
使用Vinchin备份与恢复工具备份MySQL数据库
为更好地保护数据,建议对数据库进行备份。Vin chin备份与恢复工具具备强大功能,可为虚拟机和物理服务器中的数据库提供全面保护。该工具与虚拟机层级备份协同工作,为虚拟环境用户的关键业务数据和信息系统提供双重保障。
Vinchin 备份与恢复软件支持对安装在物理机和虚拟机上的Oracle 数据库、MySQL、SQL Server、PostgreSQL、Postgres Pro 和 MariaDB进行保护,并具备强大的数据库备份与恢复功能。同时,它还提供完整备份、差异备份、增量备份以及事务日志备份策略,供您按需定制专属备份方案。
Vinchin 备份与恢复支持高效热备份,不会影响数据库的正常运行,且可轻松创建自定义的数据库备份任务。
1 选择目标数据库
2 选择备份存储
3 选择备份策略
4 提交任务
您可以使用为期60天的全功能免费试用版开始体验这一强大系统。只需点击按钮即可获取安装包。您可点击此处了解有关如何使用Vinchin备份与恢复软件备份MySQL的更多信息。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
结论
MySQL 主动-主动同步复制旨在提供高可用性与灵活性。它允许多个 MySQL 实例同时处于活动状态,并在彼此之间同步数据,从而支持双向读写操作。该方案可确保服务持续可用、负载均衡、数据一致以及部署灵活。然而,正确的配置与管理至关重要,而具体实施方案与工具的选择则取决于实际需求。
为高效保护数据库数据,您可以选择 Vinchin 备份与恢复软件,轻松完成数据库的备份与恢复。立即免费试用,切勿错过!