如何将SSH连接的服务器数据库复制到本地,及Atlas数据库迁移方法
MongoDB跨环境数据库复制替代方案
MongoDB 4.0之后已正式废弃copyDatabase()方法,当前官方推荐的替代方案为mongodump+mongorestore的组合,可适配绝大多数跨环境数据复制场景。
1 SSH连接远程服务器到本地的数据复制方案
操作步骤:
- 第一步:建立SSH端口转发隧道,将远程服务器的MongoDB端口映射到本地端口,避免和本地MongoDB服务冲突
命令示例:
执行后保持终端窗口开启,即可通过本地27018端口访问远程服务器上的MongoDB服务。ssh -L 27018:127.0.0.1:27017 <SSH登录用户名>@<远程服务器公网地址> - 第二步:导出远程数据库数据到本地临时目录
命令示例:
若远程数据库未开启身份验证,可省略用户名和密码部分。mongodump --uri="mongodb://<远程数据库用户名>:<远程数据库密码>@127.0.0.1:27018/<要复制的数据库名>" --out=./mongo_temp_dump - 第三步:将导出的数据导入本地MongoDB
命令示例:
导入完成后可删除mongorestore --uri="mongodb://<本地数据库用户名>:<本地数据库密码>@127.0.0.1:27017/<本地存储的数据库名>" ./mongo_temp_dump/<远程数据库名>./mongo_temp_dump临时目录释放存储空间。
2 MongoDB Atlas数据库复制通用方案
Atlas的数据复制同样可以用mongodump+mongorestore的方案实现,适配本地、其他云服务器等任意目标环境:
- 第一步:在Atlas控制台获取目标集群的连接字符串,选择
Connect with MongoDB Shell类型的连接地址 - 第二步:导出Atlas数据库数据
命令示例:mongodump --uri="mongodb+srv://<Atlas用户名>:<Atlas密码>@<Atlas集群地址>/<要复制的数据库名>" --out=./atlas_dump - 第三步:将导出的数据导入到目标环境即可,命令和上述本地导入逻辑完全一致。
如果需要实现不停服的实时数据同步,可直接使用Atlas控制台内置的Live Migration功能,按照页面提示填入源集群的连接信息即可自动完成同步,无需手动执行命令。
通用注意事项
- 操作前确认源端和目标端的MongoDB大版本兼容,跨大版本迁移建议先核对版本兼容规则
- 数据量较大的场景可以加
--gzip参数压缩导出文件,减少磁盘占用,恢复时同步添加--gzip参数即可 - 导出时如果需要排除指定集合,可添加
--excludeCollection=<集合名称>参数 - 生产环境操作建议在业务低峰期执行,避免对线上服务产生性能影响
内容的提问来源于stack exchange,提问作者nivalderramas
相关产品推荐
相关产品推荐

