MySQL 双向同步实现异地多活
TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。TapData Community 是一个开源的数据集成平台,提供基础的数据同步和转换功能,可通过 Docker 一键部署,帮助您快速探索和实施数据集成项目。随着项目或企业发展,您可以平滑升级至 TapData Cloud 或 TapData Enterprise,以获得更多高级功能或服务支持。随着企业业务的快速发展,保障数据一致性与系统高可用性成为核心需求。通过不同地域间的数据同步,不仅可以实现就近访问,降低响应延迟,还能构建异地多活架构,从而提高系统在面对单点故障时的稳定性与可靠性。
在本文中,我们将介绍如何使用 Tapdata 实现两个地域的 MySQL 数据库之间的双向同步,从而实现多活架构,保障业务持续性。
场景说明
随着业务的快速发展和用户数量的增长,如果业务部署在单个地域中,可能会面临如下问题:
- 高访问延迟:用户在地理位置上分布较广,地理位置较远的用户访问延迟较高,影响用户体验。
- 扩展受限:单个地域底层基础设施的能力限制了业务扩展,例如供电能力、网络带宽建设能力等。
为了解决上述问题,您可以通过 TapData 实现同城或异地多个业务单元间的数据实时同步,从而保障全局数据的一致性。当任何一个单元出现故障时,只需将流量自动切换至其他可用单元即可,有效地保障服务的高可用性。
TapData 通过跨地域的数据同步,帮助企业实现如下目标:
- 降低访问延迟:通过将数据同步至离用户最近的业务单元,显著降低访问延迟,提升用户体验。
- 提高系统扩展性:突破单个地域基础设施的限制,利用多个地域的资源进行业务扩展。
- 增强高可用性:在任一单元出现故障时,能够快速将流量切换至其他可用单元,确保业务连续性。
Tapdata 支持 MySQL ↔ MySQL、PostgreSQL ↔ PostgreSQL、MongoDB ↔ MongoDB、PostgreSQL ↔ MySQL 的双向数据同步,接下来,我们以 MySQL 间的双向同步为例介绍具体的操作流程。
注意事项
- 为保障双向的 DML 操作可正常执行,待同步的表需具备主键。
- 双向同步期间,请勿对同步的表执行 DDL 变更(如增加列),否则将导致任务失败。
- 双向同步任务由 2 个数据同步任务构成,其中一个任务负责同步全量与增量数据,另一个仅需选择同步增量数据,避免数据重复。
- 为保障双向同步任务的正常运行,Tapdata 会自动在数据库中新增一个名为
_tap_double_active
的表用于记录任务心跳信息。
准备工作
您需要跟随该文档中的介绍,完成 Binlog 配置并创建用于数据同步的账号。
操作步骤
在左侧导航栏,单击数据转换。
创建正向数据同步任务。
单击页面右侧的创建。
在页面左侧,将我们在准备工作创建的两个地域的 MySQL 数据源(分别命名为 Region A 和 Region B),分别拖拽至右侧画布中,然后将其连接起来。
单击 Region A 节点,选择要同步的表,本案例选择为
customer
表。更多参数的介绍(如高级设置),见创建数据复制任务。提示为保障任务正常运行,请勿打开高级配置中的同步 DDL 事件开关。
单击 Region B 节点,根据下述说明完成节点配置。
- 目标表结构:展示 TapData 将写入目标端的表结构信息,该信息基于源端节点设置所推演,您还可以直接单击目标字段旁的编辑按钮,在弹出的对话框中调整字段类型和精度。
- 重复处理策略:根据业务需求选择,默认为保持目标端原有表结构和数据。
- 全量多线程写入:全量数据写入的并发线程数,默认为 8,可基于目标端写性能适当调整。
- 增量多线程写入:增量数据写入的并发线程数,默认未启用,启用后可基于目标端写性能适当调整。
- 每批次写入条数:全量同步时,每批次写入的条目数,默认为 100 条。
- 每批写入最大等待时间:根据目标库的性能和网络延迟评估,设置最大等待时间,默认为 500 毫秒。
单击页面右上角的设置,设置同步类型为全量+增量,然后打开双向同步开关。
单击启动,等待任务启动运行。
返回至数据复制任务列表页面,找到刚刚配置的任务,等待其进入增量数据复制状态。
配置反向增量同步任务。
单击页面右侧的创建。
在页面左侧,将我们在准备工作创建的两个地域的 MySQL 数据源(分别命名为 Region A 和 Region B),分别拖拽至右侧画布中,然后将其连接起来。
单击 Region B 节点,选择要反向同步的表,保持和正向同步任务的表相同,本案例中为
customer
表。单击 Region A 节点,确认表结构预览无误,其他保持默认即可。
单击页面右上角的设置,设置同步类型为增量,然后打开双向同步开关。
确认无误后,单击启动。
操作完成后,您可以在当前页面观察任务的执行情况,如 RPS(每秒处理记录数)、延迟、任务时间统计等信息。
等待一段时间后,在任务列表可查看到刚刚创建的 2 个任务均已进入增量同步复制状态。
至此,我们已完成双向同步任务的配置,接下来,您可以验证双向同步的效果,例如在 Region A 的数据上变更一条数据,然后在 Region B 上查看其变化。
提示对于 Tapdata Enterprise 产品,您还可以通过数据校验功能,对双向同步的两个任务的数据进行持续校验,更好满足业务需求。
任务管理
在任务列表页面,您还可以对任务进行启动/停止、监控、编辑、复制、重置、删除等操作。
具体操作,见管理任务。