MongoDB Atlas 到 DocumentDB 数据同步
简述
MongoDB Atlas 是一个全托管的云数据库即服务 (DBaaS),由 MongoDB 官方提供,支持在主流云平台(AWS、Azure、GCP)上快速部署、扩展和管理 MongoDB 集群,为用户提供高可用、安全合规的数据库托管服务。
本文主要介绍 CloudCanal 如何快速构建一条 MongoDB Atlas 到 DocumentDB 数据迁移同步链路。链路特点包括:
- 基于 ChangeStream 增量订阅方式
- 支持索引迁移
技术点
基于 ChangeStream 增量订阅方式
CloudCanal 利用 MongoDB Change Stream 的能力来实时订阅数据库的数据变更,当数据库中的数据发生 DML 等操作时,MongoDB Change Stream 会立即将这些 DML 事件,以流的形式实时推送给 CloudCanal。
CloudCanal 在消费 ChangeStream 事件时,会持久化保存其同步位点。当任务因异常或重 启而中断后,CloudCanal 会将位点发送给 MongoDB,从而实现从上一次中断的位置 无缝续传,保证数据变更事件的“不重不漏”。
支持索引迁移
CloudCanal 提供对 MongoDB 索引的迁移支持,确保目标端数据库 继承与源端一致的查询性能优化,保障业务的无缝过渡。
由于 DocumentDB 不支持哈希(Hashed)索引,CloudCanal 会在迁移时自动识别并忽略此类索引,从而保障其余所有兼容索引能够成功迁移,确保任务的平滑进行。
操作示例
步骤 1: 安装 CloudCanal
请参考 全新安装(Docker Linux/MacOS),下载安装 CloudCanal 私有部署版本。
步骤 2: 准备数据源
-
登录 AWS 管理控制台并启动一台 EC2 实例,启动时开启公网以便 CloudCanal 连接。
-
切换至 Amazon DocumentDB 管理控制台,在左侧面板点击 参数组,创建参数组:
- 填写 新集群参数组名 和 描述 后,点击 创建。
- 进入刚创建的参数组,选择
tls
参数,点击 编辑,设置为 disabled,保存生效。
-
在左侧面板点击 集群,创建集群:
- 在 连接 部分中,选择 连接到 EC2 计算资源,并选择第一步创建的 EC2。
- 在 高级设置 > 集群选项 中,切换集群参数组为第二步创建的参数组。
- 其他所有选项保持默认,并点击 创建。
步骤 2: 添加数据源
登录 CloudCanal 平台,点击 数据源管理 > 添加数据源,分别添加 2 个数据源。
-
添加 MongoDB Atlas 集群实例时,需设置额外参数
isAtlas
为 true。 -
添加 DocumentDB 数据源时,需要在 Sidecar 容器中创建 SSH 隧道,参考以下命令。
ssh -i "ec2Access.pem" -L 27017:sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 ubuntu@ec2-34-229-221-164.compute-1.amazonaws.com -N
-- 使用 SSH 隧道时,建议使用集群端点连接到集群
创建 SSH 隧道后,连接 localhost:27017 即可。