如何将MongoDB Atlas中的数据迁移至AWS EC2实例?
MongoDB Atlas 迁移到 AWS EC2 自建实例可行方案
前置准备工作
- 确认 Atlas M10 集群的网络访问规则,将你用来执行迁移操作的设备/EC2 实例 IP 加入 Atlas 的白名单,同时获取具备数据库
read及以上权限的 Atlas 连接账号 - 在 AWS EC2 上完成 MongoDB 部署,版本尽量和 Atlas 所用版本完全一致,避免兼容性问题。部署完成后创建具备
readWrite权限的数据库账号,配置 EC2 安全组开放 27017 端口(仅开放必要访问的 IP 段,不要全开 0.0.0.0 避免安全风险) - 提前用 MongoDB Shell 测试本地/EC2 设备可以正常连接 Atlas 和 EC2 上的 MongoDB 实例,确认连接链路无问题
迁移方案
方案1:全量导出导入(适合数据量不大、可接受短时间停服的场景,对初学者最友好,操作简单易排查问题)
- 第一步:暂停业务应用的所有写入操作,避免迁移过程中产生新数据导致两边数据不一致
- 第二步:用
mongodump工具导出 Atlas 全量数据,命令示例:
mongodump --uri "mongodb+srv://<Atlas账号>:<Atlas密码>@<Atlas集群地址>/<待迁移的数据库名>" --out <本地备份文件保存路径>
- 第三步:通过 scp 或其他你熟悉的文件传输工具,把导出的备份文件传到 EC2 服务器上
- 第四步:在 EC2 上用
mongorestore工具导入数据,命令示例:
mongorestore --uri "mongodb://<EC2 MongoDB账号>:<EC2 MongoDB密码>@<EC2地址>:27017/<目标数据库名>" <备份文件中对应数据库的文件夹路径>
- 第五步:导入完成后手动抽查两边的数据条数、核心字段内容确认完全一致,没有报错后就可以把业务应用的数据库连接地址替换为 EC2 上的 MongoDB 地址,重启应用验证功能正常即完成迁移。
方案2:全量+增量同步(适合数据量大、不能接受长时间停服的场景,操作复杂度稍高)
- 第一步:确认 Atlas 集群已开启 oplog,M10 层级默认开启无需额外配置
- 第二步:执行带 oplog 记录的全量导出,命令示例:
mongodump --uri "mongodb+srv://<Atlas账号>:<Atlas密码>@<Atlas集群地址>" --oplog --out <本地备份路径>
- 第三步:把备份文件传到 EC2 后,执行带 oplog 重放的全量导入,命令示例:
mongorestore --uri "mongodb://<EC2 MongoDB账号>:<EC2 MongoDB密码>@<EC2地址>:27017" --oplogReplay <备份文件路径>
- 第四步:用 MongoDB 自带的 Change Stream 功能或第三方同步工具配置增量同步,将全量备份完成后 Atlas 产生的新数据实时同步到 EC2 实例
- 第五步:等到两边数据完全追平后,选择业务低峰期暂停应用写入,确认最后一批增量数据同步完成,切换应用的数据库连接到 EC2 实例,重启验证功能正常即完成迁移。
注意事项
- 迁移前后必须做数据校验,可分别在 Atlas 和 EC2 上执行
db.<集合名>.count()核对数据条数,抽查核心业务字段内容是否一致 - 建议先在测试环境走一遍完整迁移流程,确认没有问题再操作生产数据
- EC2 上的 MongoDB 要配置定期自动备份策略,备份文件可存储到 S3 避免数据丢失
内容的提问来源于stack exchange,提问作者흑수의 세상
相关产品推荐
相关产品推荐

