CentOS 上 MongoDB 数据迁移步骤
一 方案速览与选择
- 逻辑迁移:使用 mongodump/mongorestore 或 mongoexport/mongoimport,适合跨版本、跨平台、只迁移部分库/集合,操作灵活。
- 物理迁移:直接拷贝 dbPath 数据文件(停机一致性拷贝),适合同版本、大容量、追求快速恢复的场景。
- 在线迁移:搭建 复制集 将新节点加入源集群同步,追平后切换;或使用 MongoDB Atlas Live Migration 做云上迁移。
- 第三方/自动化:如 Studio 3T、Robo 3T、NineData 等,支持全量+增量、一致性校验与可视化操作。
以上方法覆盖从小型到大型、从离线到在线的主流迁移路径,可按数据量、停机窗口与版本差异选择其一或组合使用。
二 方案一 逻辑迁移 mongodump 与 mongorestore(通用首选)
- 步骤
- 在源端安装 MongoDB Database Tools(含 mongodump/mongorestore)。例如在 CentOS 7/8 可下载 RHEL7 x86_64 工具包并解压到 /usr/local/mongodb-tools,加入 PATH。
- 源端执行备份(示例为单库):
mongodump --host 127.0.0.1 --port 27017 -u admin -p password --db mydb --out /root/backup/2025-12-13
如需压缩归档:
mongodump --host 127.0.0.1 --port 27017 --archive=/root/backup/mydb.archive --gzip
- 将备份传输到目标服务器:
scp -r /root/backup/2025-12-13 user@target:/data/backup/
- 目标端启动 MongoDB(先确保服务可用),执行恢复:
mongorestore --host 127.0.0.1 --port 27017 -u admin -p password --db mydb /data/backup/2025-12-13/mydb
或使用归档:
mongorestore --host 127.0.0.1 --port 27017 --archive=/data/backup/mydb.archive --gzip
- 校验:在 mongosh 中执行 show dbs、db.stats()、检查集合与索引数量。
- 常用参数
- –uri 统一连接串;–authenticationDatabase 指定鉴权库;–gzip 压缩;–archive 归档到单文件;–drop 恢复前清空集合(谨慎)。
- 适用场景
- 跨版本/跨平台迁移、只迁移部分库或集合、对停机敏感但可接受一次性导出窗口。
以上命令与参数示例可直接在 CentOS 上执行,工具获取与路径配置可参考 Database Tools 官方下载与安装实践。
三 方案二 物理迁移 拷贝数据文件(同版本、大容量、快速)
- 步骤
- 在源端干净停机:
mongosh --eval “use admin; db.shutdownServer()”
或使用系统服务:systemctl stop mongod。
- 同步数据目录(保持权限一致):
rsync -avz /var/lib/mongo/ user@target:/var/lib/mongo/
如使用自定义 dbPath,请替换为实际路径。
- 目标端确保 MongoDB 配置 storage.dbPath 指向该目录,权限与属主一致(如 mongod:mongod)。
- 启动目标端:systemctl start mongod;登录 mongosh 校验集合与索引。
- 适用场景
- 同版本迁移、TB 级数据、追求最短停机时间;不建议跨版本直接复用数据文件。
该方法通过文件系统拷贝实现一致性迁移,适合大库快速恢复,但要求版本与配置尽量一致。
四 方案三 在线迁移 复制集添加新节点或 Atlas Live Migration(不停机)
- 复制集方式
- 源端将实例配置为复制集(如 rs0),启动后在 mongosh 执行 rs.initiate()。
- 目标端以同版本启动 MongoDB,加入同一复制集:rs.add(“target_host:27017”)。
- 等待数据追平(rs.status() 查看 replication lag)。
- 切换应用连接到目标节点,验证后将旧节点下线:rs.remove(“old_host:27017”)。
- Atlas Live Migration
- 在 MongoDB Atlas 控制台创建集群与迁移任务,按向导配置源连接与安全组/IP 白名单,执行全量+增量迁移,校验后切换。
- 适用场景
- 要求业务不停机、跨机房/云迁移、需要最小化人工介入与一致性保障。
复制集与 Atlas 在线迁移适合对业务连续性要求高的场景,前者自建可控,后者云上体验更佳。
五 迁移前后关键检查与常见问题
- 版本与特性:尽量保持源/目标 MongoDB 大版本一致;如跨大版本,优先用逻辑迁移并充分回归测试。
- 鉴权与网络:准备具备备份/恢复权限的账号;开放 27017 端口(firewall-cmd --add-port=27017/tcp),或使用 SSH 隧道。
- 索引与约束:mongorestore 会重建索引,首次导入可能较慢;必要时在导入后单独重建大索引。
- 压缩与归档:大数据量建议用 –gzip/–archive 减少传输时间与磁盘占用。
- 一致性校验:导入后用 db.stats()、集合 count()、抽样查询与关键业务校验数据一致性与性能。
- 常见问题
- 认证失败:确认 --authenticationDatabase 与账号所属库一致。
- 权限不足:使用具备相应角色(如 backup/restore)的用户。
- 路径与权限:物理迁移务必保持 dbPath 权限/属主一致,避免启动失败。
- 版本不兼容:跨大版本物理拷贝易出问题,优先逻辑迁移或在线迁移。
这些要点可显著降低迁移风险并提升成功率与效率。