MongoDB 在 Debian 上的数据迁移实操指南
一、常用迁移方式与适用场景
- mongodump/mongorestore 全量迁移:最通用、操作简单,适合一次性迁移或跨版本迁移;停机时间取决于数据量与导入速度。
- 仅导出/导入集合为 JSON/CSV:适合跨版本或跨生态数据交换,但索引/类型元数据不如 BSON 完整。
- 复制集添加新节点滚动升级/迁移:不停服或短暂停机,适合生产环境平滑切换。
- 第三方工具(如 MongoShake):支持持续同步/迁移,适合数据中心迁移、升级或上云。
以上方法在 Debian 上均可实施,选择取决于是否允许停机、数据规模与版本差异。
二、标准流程 mongodump 到 mongorestore(全量)
- 准备与版本
- 在源与目标Debian 上安装 MongoDB(建议同主版本,跨小版本通常可用但需充分验证)。
- 目标端仅导入时可仅安装客户端工具:sudo apt install -y mongodb-clients。
- 源端导出
- 无鉴权:
- mongodump --host source_host --port 27017 --db mydb --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
- 有鉴权:
- mongodump --host source_host --port 27017 --username myUser --password myPass --authenticationDatabase admin --db mydb --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
- 传输到目标
- scp -r /backup/mongodb/2025… user@target:/backup/mongodb/
- 目标端导入
- 无鉴权:
- mongorestore --host target_host --port 27017 /backup/mongodb/2025…/mydb
- 有鉴权:
- mongorestore --host target_host --port 27017 --username myUser --password myPass --authenticationDatabase admin /backup/mongodb/2025…/mydb
- 校验
- mongo --host target_host --eval ‘use mydb; db.getCollectionNames(); db.mycoll.countDocuments({})’
以上命令覆盖常见参数与校验方式,适合大多数全量迁移场景。
三、仅迁移部分数据或跨版本交换
- 迁移指定集合
- 导出:mongodump -h host:port -d mydb -c mycoll -o /backup/mydb
- 导入:mongorestore -h host:port -d mydb -c mycoll /backup/mydb/mydb/mycoll.bson
- 导出为 JSON/CSV 再导入(适合跨版本或异构系统)
- 导出:mongoexport -h host:port -d mydb -c mycoll -o mycoll.json --type json
- 导入:mongoimport -h host:port -d mydb -c mycoll mycoll.json --type json
- 注意
- JSON/CSV 方式更灵活,但索引需单独处理,且类型精度可能变化;BSON 方式更保真。
以上做法便于按需迁移与跨版本/跨平台数据交换。
四、不停服或大规模迁移方案
- 复制集滚动迁移(平滑切换)
- 将源与目标纳入同一复制集,待数据追平后将目标提升为主,再摘除源;适合生产环境、停机时间极短。
- 使用 MongoShake 实时同步
- 在源端部署 MongoShake,指向目标端实现持续同步/迁移,适合数据中心迁移、升级或上云。
- 官方云迁移
- 迁移至 MongoDB Atlas 可使用其 Live Migration 服务,降低切换风险。
以上方案适合对可用性要求高或数据规模大的场景。
五、网络与安全配置要点
- 开放访问与防火墙
- 如需远程导出/导入,编辑 /etc/mongod.conf:
- net: { port: 27017, bindIp: 0.0.0.0 }(生产环境建议改为白名单网段)
- 放行防火墙:sudo ufw allow 27017/tcp 或相应 firewalld 规则。
- 鉴权与最小权限
- 使用具备备份/恢复权限的账号,并指定 –authenticationDatabase(常见为 admin)。
- 版本与兼容性
- 尽量保持源/目标主版本一致;跨版本迁移务必先测试关键集合与索引。
- 性能与资源
- 大库建议在业务低峰执行,必要时限速或分批导入;导入后使用集合统计与抽样校验数据一致性。
以上要点可显著降低迁移风险并提升成功率。