Ubuntu下MongoDB的数据迁移步骤是什么
导读:Ubuntu 下 MongoDB 数据迁移步骤 一 方案选择 优先使用官方工具 mongodump/mongorestore(BSON 格式),可保留索引、数据类型与一致性,适合整库或跨实例迁移。对于副本集为保证一致性,使用 –oplog...
Ubuntu 下 MongoDB 数据迁移步骤
一 方案选择
- 优先使用官方工具 mongodump/mongorestore(BSON 格式),可保留索引、数据类型与一致性,适合整库或跨实例迁移。对于副本集为保证一致性,使用 –oplog 捕获备份期间的写入,或在备份窗口内停止写入;对分片集群需按官方流程执行或使用 Atlas/Cloud Manager/Ops Manager 的协调备份。若对性能敏感或数据量大,优先考虑文件系统快照/云备份等方案。迁移时建议将备份输出为归档文件(–archive)并通过管道直接传输,减少磁盘 I/O 与中转步骤。
二 准备与版本匹配
- 在两台 Ubuntu 主机安装匹配的 MongoDB Database Tools(包含 mongodump/mongorestore/mongoexport/mongoimport)。建议工具版本与目标 MongoDB 服务器版本兼容。验证命令:
mongodump --version。如使用旧版或未安装,可下载 .deb/.tgz 包安装并更新 PATH。迁移前确认网络、端口(默认 27017)、磁盘空间与权限配置。
三 迁移步骤
- 场景 A 整库迁移(推荐)
- 源库备份(示例:备份到时间戳目录)
如需压缩:mongodump --host < 源主机> --port 27017 --username < 用户> --password < 密码> \ --authenticationDatabase admin --db < 源库名> \ --out /var/backups/mongobackups/$(date +'%F')--gzip;如需一致性(副本集):加--oplog。 - 传输备份到目标机(二选一)
- 归档并管道直传(高效、少占磁盘):
mongodump --host < 源主机> --port 27017 -u < 用户> -p < 密码> \ --authenticationDatabase admin --db < 源库名> --archive | \ mongorestore --host < 目标主机> --port 27017 -u < 用户> -p < 密码> \ --authenticationDatabase admin --archive - 或先拷贝目录再恢复:
scp -r /var/backups/mongobackups/2025-11-27/< 源库名> < 目标用户> @< 目标主机> :/tmp/ mongorestore --host < 目标主机> --port 27017 -u < 用户> -p < 密码> \ --authenticationDatabase admin --dir /tmp/< 源库名>
- 归档并管道直传(高效、少占磁盘):
- 目标库恢复(示例)
如需先清空目标库再写入,可加mongorestore --host < 目标主机> --port 27017 -u < 用户> -p < 密码> \ --authenticationDatabase admin --db < 目标库名> /tmp/< 源库名>--drop(谨慎使用)。
- 源库备份(示例:备份到时间戳目录)
- 场景 B 单集合迁移(JSON,便于跨平台/审阅)
- 导出集合
mongoexport --host < 源主机> --port 27017 -u < 用户> -p < 密码> \ --authenticationDatabase admin --db < 库名> --collection < 集合名> \ --out /tmp/< 集合名> .json - 传输文件
scp /tmp/< 集合名> .json < 目标用户> @< 目标主机> :/tmp/ - 导入集合(可改名导入)
mongoimport --host < 目标主机> --port 27017 -u < 用户> -p < 密码> \ --authenticationDatabase admin --db < 目标库名> --collection < 新集合名> \ /tmp/< 集合名> .json - 如源库启用了认证机制(如 MONGODB-CR),需在命令中追加:
--authenticationMechanism=MONGODB-CR(新版 SCRAM-SHA-1 通常无需指定)。
- 导出集合
四 校验与常见问题
- 校验
- 集合计数对比(示例):
mongo --host < 源主机> --eval "db.< 集合名> .count()" mongo --host < 目标主机> --eval "db.< 集合名> .count()" - 抽样查询对比结构、索引与样本文档,确认无丢失或类型偏差。
- 集合计数对比(示例):
- 常见问题与要点
- 权限:执行 mongodump 需具备各库的 find 权限;目标库写入需具备相应 insert 权限。
- 一致性:副本集请使用 –oplog 或在备份窗口停写;分片集群按官方协调流程或采用 Atlas/Cloud Manager/Ops Manager。
- 性能:mongodump/restore 会与运行实例交互并引发额外负载,建议在低峰时段执行,或改用快照/云备份。
- 特殊库:迁移时 mongodump 默认排除 local 数据库;请勿尝试导入 local/admin,以免鉴权或元数据错乱。
- 工具版本:确保 Database Tools 与服务器版本兼容,必要时升级工具或服务器。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu下MongoDB的数据迁移步骤是什么
本文地址: https://pptw.com/jishu/757823.html
