Ubuntu 下 MongoDB 数据迁移步骤解析
一 迁移方式选型
- mongodump/mongorestore(推荐):导出为 BSON 的二进制备份,保留数据类型与索引,适合大多数同版本或兼容版本的迁移场景,操作简洁、可靠性高。
- mongoexport/mongoimport:导出为 JSON/CSV,便于与其他系统交互或做部分数据抽取,但因 JSON 无法表达全部 BSON 类型,存在“保真度丢失”,不建议作为主方案。
- 复制集迁移:通过把目标实例加入源 Replica Set 进行数据同步,适合需要接近零停机或跨机房迁移的场景。
- MongoDB Atlas Live Migration:将自建或他云集群迁移至 Atlas,官方提供的在线迁移服务,适合上云迁移。
- 第三方工具:如 Studio 3T 等 GUI 工具,适合可视化迁移与小规模数据搬运。
二 标准流程 mongodump 到 mongorestore
- 步骤1 准备与版本检查
- 在两端安装匹配的 MongoDB Database Tools(含 mongodump/mongorestore)。
- 核对工具版本与服务器版本兼容:mongodump --version。
- 步骤2 源库备份
- 基本命令:mongodump --host <源主机> --port <端口> --username <用户> --password <密码> --out <备份目录>。
- 示例:mongodump --host 192.168.1.10 --port 27017 --out /data/backup/20260103。
- 步骤3 传输备份到目标机器
- 使用 scp:scp -r /data/backup/20260103 user@target:/data/backup/。
- 步骤4 目标库恢复
- 全量恢复:mongorestore --host <目标主机> --port <端口> --username <用户> --password <密码> /data/backup/20260103。
- 指定库恢复:mongorestore --host <目标主机> --db <目标库名> /data/backup/20260103/<源库名>。
- 步骤5 校验
- 建议
- 迁移在业务低峰期进行;备份目录按日期组织便于回滚;大库可分库/分集合并行恢复。
三 其它常见场景
- 场景A 云数据库迁移到本地
- 在云端执行 mongodump(含鉴权参数),将备份拉回本地后 mongorestore 恢复;完成后更新应用连接串并回归验证。
- 场景B 容器化数据迁移(Docker)
- 若数据使用 bind mount,直接复制宿主机挂载目录;若使用 volume,可通过临时容器打包/解包数据卷完成迁移。
- 场景C 不停机或跨版本/跨云迁移
- 采用 Replica Set 添加目标节点做数据同步,追平后切换主从并摘除旧节点;或选用 Atlas Live Migration 完成在线迁移。
四 校验与回滚要点
- 数据一致性
- 按库/集合对比文档数:mongo --eval “db.<集合名>.count()”;抽样校验关键记录与聚合结果。
- 索引与约束
- 确认索引、唯一性等约束已恢复;必要时在恢复后重建部分复合索引以匹配业务查询。
- 应用回归
- 先在测试环境验证连接串、读写路径与性能;灰度切换,观察错误日志与延迟。
- 回滚预案
- 保留最近一次可用备份;切换前记录 oplog 位置(如为副本集),必要时基于时间点恢复。
五 常见问题与优化
- 版本与工具不匹配
- 使用与服务器版本匹配的 Database Tools;必要时升级工具或选择兼容的备份/恢复方式。
- 停机与一致性
- mongodump 会对实例产生一定负载,业务高峰应避免;对一致性要求高的场景优先 Replica Set 或 Atlas Live Migration。
- 大对象与性能
- 大库建议分库/分集合并行;网络传输使用压缩与限速;恢复时合理设置批量与并发参数以减少回放时间。
- 安全与合规
- 迁移链路使用 TLS/SSL 与强认证;备份文件妥善加密与权限控制;遵守数据合规要求。