温馨提示×

Ubuntu MongoDB数据迁移指南

小樊
38
2025-12-20 16:48:32
栏目: 云计算

Ubuntu 上 MongoDB 数据迁移实操指南

一 迁移方式与选择

  • 工具迁移(mongodump/mongorestore):导出为 MongoDB 原生的 BSON 二进制格式,保留数据类型与索引元信息,适合大多数同版本或跨版本迁移、上云与跨机房迁移。建议在源库低峰期执行,必要时先停写以保证一致性。对于不停机需求,优先考虑数据库原生复制或云厂商的迁移服务。
  • 逻辑导出/导入(mongoexport/mongoimport):导出为 JSON/CSV,人类可读、便于编辑与跨系统交换,但存在数据类型保真度损失,且重建索引与约束成本较高,通常不作为生产迁移首选。
  • 云上或大规模迁移:优先使用云厂商的 DTS/数据传输服务 实现全量+增量迁移,降低停机窗口与运维复杂度。

二 标准步骤 mongodump 与 mongorestore

  • 版本与工具准备
    • 建议 mongodump/mongorestore 版本与源库 MongoDB 版本一致或兼容;工具可在源库服务器本地执行,无需额外安装到目标库。
    • 在 Ubuntu 上可通过包管理器或安装 MongoDB Database Tools(包含 mongodump/mongorestore)来更新工具版本。
  • 源库备份
    • 无鉴权示例:mongodump --host 127.0.0.1 --port 27017 --out /var/backups/mongobackups/$(date +‘%m-%d-%y’)
    • 有鉴权示例:mongodump --host <mongodb_host> --port -u --authenticationDatabase (执行后输入密码)
    • 备份默认生成 dump/ 目录(或按日期目录),内含各库/集合的 .bson.metadata.json
  • 传输备份
    • 使用 scp/rsync 将备份目录复制到目标服务器,例如:rsync -avz /var/backups/mongobackups/ user@target:/data/backup/
  • 目标库恢复
    • 全量恢复:mongorestore --host <target_host> --port -u --authenticationDatabase /data/backup/dump/
    • 指定库/集合:mongorestore --nsInclude newdb.restaurants --drop /data/backup/dump/newdb/
    • 如需先清空目标再写入,使用 –drop;恢复时请使用 –nsInclude 指定命名空间(旧参数如 --db/–collection 已不推荐)。
  • 常见要点
    • 建议在源库业务低峰或短暂停写后执行全量迁移;迁移完成后用抽样校验与集合统计进行验证。

三 不停机迁移与云上方案

  • 自建至云数据库 MongoDB(单节点)全量迁移
    • 在源库服务器执行 mongodump 生成 dump/;将源库服务器 IP 加入目标实例白名单;在源库服务器执行 mongorestore 将数据写入目标实例(云实例 Primary 地址)。该方式简单可靠,但为全量迁移,需业务停写或接受短暂不一致窗口。
  • 自建副本集至云数据库 MongoDB(副本集/分片集群)迁移
    • 使用 DTS 配置结构迁移 + 全量迁移 + 增量迁移,实现近 零停机。关键要求:
      • 源库开启 Oplog 且至少保留 7 天,或开启 Change Streams(MongoDB 4.0+);否则无法获取增量变更。
      • 目标端存储空间建议比源端多 10%;分片集群需提前规划 分片键、开启 Balancer 并做预分片,避免数据倾斜。
      • 迁移期间避免结构变更与大规模写入;DTS接入不支持 SRV 地址,建议使用主节点地址或高可用连接地址。

四 常见问题与排错要点

  • 版本与兼容性
    • 工具版本与源库尽量一致;跨版本迁移前评估兼容性(如存储引擎、索引/特性差异)。
  • 鉴权与网络
    • 正确设置 –authenticationDatabase;云实例需配置 白名单;避免使用 SRV 地址接入 DTS;公网/专有网络连接需保证网络与带宽。
  • 一致性
    • 全量迁移前尽量 停写;副本集/云迁移建议启用 增量 阶段以追平变更。
  • 目标库已有数据
    • mongorestore 默认会写入备份中的集合与索引,可能导致 覆盖/重复;如需保留目标库数据,先做好备份,或使用按库/按集合分批恢复并校验。
  • 大对象限制
    • 单条文档不得超过 16 MB,否则迁移任务会失败。
  • 工具可用性
    • 若系统缺失 mongodump/mongorestore,安装或升级 MongoDB Database Tools 后再执行迁移。

0