数据传输服务 基于 DTS 搭建 MongoDB 同步灾备实践教程

本方案适用于腾讯云上 MongoDB 生产实例搭建灾备架构的场景。通过 DTS 数据同步(全量+增量)将主库 A 实时同步至灾备库 B,主库故障时快速切换至灾备库。切换后根据主库 A 的恢复情况,搭建 B→A 反向同步链路切回 A,或为新主库 B 搭建 B→C 灾备同步链路,确保灾备能力不中断。

相关产品
数据传输服务 产品页,含版本规格、价格与购买入口。

一、业务场景

MongoDB 生产实例已在腾讯云上稳定运行,但缺少灾备架构。当实例所在可用区发生基础设施故障、数据库主节点出现不可恢复的异常、或因运维操作失误导致数据损坏时,业务中断时间完全取决于故障修复或数据恢复的速度,RTO 不可控。

本方案推荐使用 DTS 数据同步链路将主库 A 的全量 + 增量数据实时同步至灾备库 B。灾备库 B 平时不对外提供服务,仅作为 A 的热备副本——数据延迟通常在秒级。当主库 A 发生故障时,结束 A→B 同步任务并将业务切换至 B。

切换至 B 后,根据主库 A 的恢复情况选择不同的后续操作:

·A 可恢复(灾备演练、临时故障等):搭建 B→A 反向同步链路,数据追平后将业务切回 A。

·A 不可恢复(可用区级故障、数据严重损坏等):为新主库 B 搭建 B→C 灾备同步链路,确保灾备能力不中断。

二、方案优势

·RPO 趋近于 0:灾备库实时保持与主库数据一致,切换时数据丢失最小化。

·灾备不断档:切换完成后可快速重建灾备链路,灾备能力不存在空窗期。

·支持异地容灾:灾备库可部署在不同地域,满足跨地域容灾合规要求。

三、前提条件

·已注册腾讯云账号并完成实名认证。

·源数据库和目标数据库符合 DTS 同步功能和版本要求,请参见 MongoDB 同步至 MongoDB 使用说明。

·已根据接入类型完成网络打通(公网/专线/VPN/云联网),请参见 准备工作概述。

·已在源端和目标端创建满足权限要求的数据库账号。

·建议在源数据库创建一个具有读写权限账号供同步使用,参考方式如下。

# 源数据库为副本集、单节点时的语法示例 use admin db.createUser({user: "username",pwd: "password",roles:[{role: "readWriteAnyDatabase", db: "admin"},{role: "read", db: "local"}]}) # 源数据库为分片集群时的语法示例 use admin db.createUser({user: "username",pwd: "password",roles:[{role: "readWriteAnyDatabase", db: "admin"},{role: "read", db: "local"},{role: "read", db: "config"}]})

·目标库为腾讯云数据库实例,可以使用 mongouser 进行同步,也可以自行创建账号,自行创建账号的参考方式如下。

db.createUser({user:"username",pwd:"password",roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

四、注意事项

·MongoDB 链路未内置破环机制,不支持两端同时写入。正反向链路为串行关系,任何时刻仅一端写入。

·DTS 执行全量数据同步时会占用源端实例资源,可能导致源实例负载上升,建议在业务低峰期执行。

·同步过程中请勿修改或删除源端和目标端的数据库用户信息(包括用户名、密码和权限)及端口号。

五、操作步骤概要

1. 创建灾备同步任务(A → B),初始化类型选择全量数据初始化。

2. 主库 A 故障或需要维护时,根据 A 的状态执行灾备切换与重建:

·A 可恢复时,切换至 B 后搭建 B→A 反向同步并切回 A;

·A 不可恢复时,切换至 B 后创建 B→C 新灾备。

六、步骤一:创建灾备同步任务(A→B)

注意:说明:

注意:各参数的详细配置说明请参见 MongoDB 同步操作指导。

1. 登录 DTS 控制台,在左侧导航栏选择数据同步。

2. 单击新建同步任务,在新建同步任务页面,选择同步的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。

3. 在设置同步源和目标数据库页签,填写源和目标数据库等信息,然后单击测试连通性,测试连通性后,单击下一步。

·源端选择主库 A。

·目标端选择灾备库 B。

4. 在设置同步选项和同步对象页签,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步。

·初始化类型选择全量数据初始化。

·同步对象选择整个实例或指定对象。

5. 在设置一致性校验页面,勾选开启数据一致性校验,配置参数后,单击下一步。

6. 在校验任务页面,完成校验并全部校验项通过后,单击立即启动。任务启动后进入持续同步状态。

七、步骤二:灾备切换与重建

确认主库 A 需要切换(计划内维护、故障等)时,根据主库 A 的状态选择对应方案。

八、主库 A 可恢复:

适用于灾备演练、计划内维护、临时故障等主库 A 仍可访问且后续可恢复的场景。

1. 切换至灾备库 B

1.1 登录 DTS 控制台,确认灾备同步任务(A→B)的同步步骤显示为同步中,目标与源库数据差距为 0 KB,时间延迟为 0 秒。

1.2 暂停主库 A 的业务,停止新的数据写入。

1.3 在同步任务操作列选择更多 > 结束,结束 A→B 同步任务。

1.4 验证源库和目标库的数据一致后,将业务系统指向灾备库 B,恢复业务使用。

2. 创建反向同步任务(B→A)

2.1 在 DTS 控制台左侧导航栏选择数据同步。

2.2 单击新建同步任务,在新建同步任务页面,选择同步的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。

2.3 在设置同步源和目标数据库页签,填写源和目标数据库等信息,然后单击测试连通性,测试连通性后,单击下一步。

·源端选择灾备库 B(当前主库)。

·目标端选择原主库 A。

2.4 在设置同步选项和同步对象页签,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步。

·初始化类型选择不选择。

2.5 在设置一致性校验页面,勾选开启数据一致性校验,配置参数后,单击下一步。

2.6 在校验任务页面,完成校验并全部校验项通过后,单击立即启动。

3. 切回原主库 A

3.1 登录 DTS 控制台,确认反向同步任务(B→A)的同步步骤显示为同步中,目标与源库数据差距为 0 KB,时间延迟为 0 秒。

3.2 暂停灾备库 B 的业务,停止新的数据写入。

3.3 在同步任务操作列选择更多 > 结束,结束 B→A 同步任务。

3.4 验证源库和目标库的数据一致后,将业务系统指向原主库 A,恢复业务使用。

九、主库 A 不可恢复:

适用于可用区级故障、数据严重损坏等主库 A 完全不可用的场景。

1. 切换至灾备库 B

1.1 登录 DTS 控制台,以灾备库 B 当前已同步的数据为准执行切换。

1.2 在同步任务操作列选择更多 > 结束,结束 A→B 同步任务。

1.3 将业务系统指向灾备库 B,恢复业务使用。

2. 创建灾备同步任务(B→C)

2.1 在 DTS 控制台左侧导航栏选择数据同步。

2.2 单击新建同步任务,在新建同步任务页面,选择同步的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。

2.3 在设置同步源和目标数据库页签,填写源和目标数据库等信息,然后单击测试连通性,测试连通性后,单击下一步。

·源端选择新主库 B。

·目标端选择新灾备库 C。

2.4 在设置同步选项和同步对象页签,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步。

·初始化类型选择全量数据初始化。

·同步对象选择范围与步骤一保持一致。

2.5 在设置一致性校验页面,勾选开启数据一致性校验,配置参数后,单击下一步。

2.6 在校验任务页面,完成校验并全部校验项通过后,单击立即启动。任务启动后进入持续同步状态。

十、Q1:MongoDB 是否支持两端同时写入(异地多活)?

当前不支持。DTS MongoDB 同步链路未内置破环机制,不支持两端同时写入。如果两个方向的同步任务同时运行且两端都在写入,会产生数据回环导致数据错乱。这篇方案中正反向链路为串行关系,任何时刻仅一端写入。

十一、Q2:灾备库 B 的实例规格如何选择?

建议灾备库 B 的实例规格与主库 A 保持一致或略高。灾备切换后 B 将直接承接生产负载,如果规格不足可能导致切换后性能不达预期。建议在日常运维中定期对灾备库进行性能验证。

十二、相关文档

文档 说明
准备工作概述 DTS 任务创建前的网络打通、账号准备等前置工作指导。
MongoDB 同步操作指导 MongoDB 同步任务的详细配置步骤和参数说明。
MongoDB 数据一致性校验 割接前数据对比验证工具的使用说明。
赞 (0)
上一篇 4天前
下一篇 4天前