温馨提示×

Ubuntu下MongoDB的数据迁移步骤是什么

小樊
38
2025-11-27 01:14:42
栏目: 云计算

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 整库迁移(推荐)
    1. 源库备份(示例:备份到时间戳目录)
      mongodump --host <源主机> --port 27017 --username <用户> --password <密码> \
        --authenticationDatabase admin --db <源库名> \
        --out /var/backups/mongobackups/$(date +'%F')
      
      如需压缩:--gzip;如需一致性(副本集):加 --oplog
    2. 传输备份到目标机(二选一)
      • 归档并管道直传(高效、少占磁盘):
        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/<源库名>
        
    3. 目标库恢复(示例)
      mongorestore --host <目标主机> --port 27017 -u <用户> -p <密码> \
        --authenticationDatabase admin --db <目标库名> /tmp/<源库名>
      
      如需先清空目标库再写入,可加 --drop(谨慎使用)。
  • 场景 B 单集合迁移(JSON,便于跨平台/审阅)
    1. 导出集合
      mongoexport --host <源主机> --port 27017 -u <用户> -p <密码> \
        --authenticationDatabase admin --db <库名> --collection <集合名> \
        --out /tmp/<集合名>.json
      
    2. 传输文件
      scp /tmp/<集合名>.json <目标用户>@<目标主机>:/tmp/
      
    3. 导入集合(可改名导入)
      mongoimport --host <目标主机> --port 27017 -u <用户> -p <密码> \
        --authenticationDatabase admin --db <目标库名> --collection <新集合名> \
        /tmp/<集合名>.json
      
    4. 如源库启用了认证机制(如 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 与服务器版本兼容,必要时升级工具或服务器。

0