温馨提示×

MongoDB数据迁移在Debian上的操作

小樊
41
2025-12-09 06:27:19
栏目: 云计算

在 Debian 上进行 MongoDB 数据迁移的实用步骤

一 场景与方法选择

  • 全量迁移:使用 mongodump/mongorestore 导出为 BSON 再导入,适合大多数同版本或跨小版本的迁移,操作简洁、可重复。
  • 结构化/跨系统迁移:使用 mongoexport/mongoimport 导出为 JSON/CSV,便于审阅与转换,但类型保真度低于 BSON。
  • 不停机或跨云迁移:采用 复制集/变更流 或官方/第三方工具的联机迁移方案,缩短停机窗口。
  • 迁移到云托管:如使用 MongoDB Atlas,可使用其 Live Migration 服务实现联机迁移。
    以上方法均为官方与业界常用路径,适用于在 Debian 上部署的源或目标实例。

二 准备与环境检查

  • 在 Debian 上安装工具:建议安装 mongodb-clients(包含 mongodump/mongorestore)。
    • 命令:sudo apt update && sudo apt install -y mongodb-clients
  • 若系统仓库版本较旧,可下载 MongoDB Database Tools(.deb 或 .tgz),解压后将二进制复制到 /usr/local/bin,并用 mongodump --version 验证。
  • 版本与兼容性:尽量保持源/目标 MongoDB 大版本一致;如跨版本,先评估兼容性并在测试环境验证。
  • 网络与认证:开放必要端口(默认 27017),准备具有相应权限的账户;如使用认证,明确 authenticationDatabase
  • 一致性策略:对关键业务,迁移前尽量 暂停写入 或使用复制集/变更流实现近零停机。
    以上准备可显著降低迁移风险并确保工具可用。

三 全量迁移步骤 BSON mongodump/mongorestore

  • 步骤概览:在源端导出 → 传输到 Debian → 在 Debian 端导入 → 校验数据。
  • 源端导出示例:
    • 全库:mongodump --host <src_host> --port <src_port> --username <user> --password <pass> --authenticationDatabase admin --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
    • 指定库:mongodump --host <src_host> --port <src_port> --username <user> --password <pass> --authenticationDatabase admin --db <db> --out /backup/mongodb/<ts>
  • 传输到 Debian:
    • scp -r /backup/mongodb/<ts> user@debian-host:/backup/mongodb/
  • Debian 端导入示例:
    • 全库:mongorestore --host <debian_host> --port <debian_port> --username <user> --password <pass> /backup/mongodb/<ts>
    • 指定库:mongorestore --host <debian_host> --port <debian_port> --username <user> --password <pass> --db <db> /backup/mongodb/<ts>/<db>
  • 校验:
    • 列表集合:mongo --db <db> --quiet --eval 'db.getCollectionNames()'
    • 抽样计数:mongo --db <db> --eval 'db.<coll>.countDocuments({})'
      以上命令覆盖常见认证、库级与全库迁移场景,适合在 Debian 上落地执行。

四 其他常见场景与命令

  • 仅迁移部分集合:
    • 导出:mongodump --host <src_host> --port <src_port> --db <db> --collection <coll> --out /backup/mongodb/<ts>
    • 导入到同名或改名集合:
      • 同名:mongorestore --host <debian_host> --port <debian_port> --db <db> /backup/mongodb/<ts>/<db>/<coll>.bson
      • 改名:mongorestore --host <debian_host> --port <debian_port> --db <target_db> --collection <target_coll> /backup/mongodb/<ts>/<db>/<coll>.bson
  • 使用 JSON/CSV(类型保真度低于 BSON,适合子集/跨系统):
    • 导出:mongoexport --uri="mongodb://<src_host>:<src_port>/<db>" --collection=<coll> --out=<coll>.json
    • 导入:mongoimport --uri="mongodb://<debian_host>:<debian_port>/<db>" --collection=<coll> --file=<coll>.json
  • 归档流式传输(适合网络带宽受限或管道化):
    • 导出:mongodump --uri="mongodb://<src_host>:<src_port>/<db>" --archive=<db>.archive
    • 导入:mongorestore --uri="mongodb://<debian_host>:<debian_port>/<db>" --archive=<db>.archive
      以上命令覆盖集合级迁移与 JSON/CSV 场景,并给出更高效的归档方式。

五 验证与注意事项

  • 数据校验:对比集合数量、文档计数、索引数量与名称;抽样查询关键业务数据,必要时校验 _id 与唯一索引约束。
  • 版本与特性:跨版本迁移前评估 存储引擎、索引选项、认证机制 等差异;必要时先在测试环境演练。
  • 一致性与停机:对强一致业务,迁移窗口内 暂停写入 或使用 复制集/变更流 实现联机迁移,降低停机时间。
  • 安全与网络:限制来源 IP、使用 TLS/SSL 与强口令;仅开放必要端口 27017,传输备份时加密。
  • 回滚预案:保留源端备份直至业务验证通过;导入异常时先清理目标库再重试。
    以上要点可提升迁移成功率与可回滚性,并减少生产风险。

0