Ubuntu MongoDB数据迁移方法有哪些
导读:Ubuntu 下 MongoDB 数据迁移方法概览 mongodump/mongorestore 逻辑备份恢复:导出为 BSON 二进制格式,保留数据类型与索引,适合跨版本、跨实例、跨云迁移。 文件系统拷贝(数据目录迁移):直接拷贝 db...
Ubuntu 下 MongoDB 数据迁移方法概览
- mongodump/mongorestore 逻辑备份恢复:导出为 BSON 二进制格式,保留数据类型与索引,适合跨版本、跨实例、跨云迁移。
- 文件系统拷贝(数据目录迁移):直接拷贝 dbPath 数据文件,要求版本兼容、停机窗口、同架构,适合同机/同环境快速迁移。
- 导入导出工具(mongoexport/mongoimport):导出为 JSON/CSV,人类可读、便于改造,但存在类型保真度损失,常用于小数据量或结构迁移。
- 云到本地/跨云迁移:在云库上 mongodump,传输备份后在本地 mongorestore,并做数据校验与应用切换。
- 容器化场景:对挂载卷做 tar 打包/解包迁移,或在新实例挂载同一卷实现“零拷贝”切换。
方法一 mongodump 与 mongorestore 逻辑迁移(推荐)
- 适用场景:跨版本/跨平台/跨云迁移、需要保留索引与数据类型、可容忍短暂停写。
- 基本步骤:
- 源端备份
- 基本:mongodump --host < 源地址> --out /path/backup/$(date +%F)
- 指定库/集合:mongodump --host < 源地址> --db --collection --out
- 需要鉴权:–username --password
--authenticationDatabase admin
- 传输备份:scp/rsync 将备份目录拷贝到目标机器。
- 目标端恢复
- 全库:mongorestore --host < 目标地址> < 备份目录>
- 指定库/集合:mongorestore --host < 目标地址> --db < 备份目录> /
- 覆盖写入:–drop(谨慎使用,会先删目标同名集合)
- 源端备份
- 示例(同机演示):
- 备份:mongodump --db newdb --out /var/backups/mongobackups/$(date +%F)
- 恢复:mongorestore --db newdb --drop /var/backups/mongobackups/2025-12-02/newdb/
- 说明:mongodump 生成 BSON 与元数据,mongorestore 会重建集合与索引,适合迁移场景。
方法二 文件系统拷贝迁移(物理迁移)
- 适用场景:同版本、同架构、可接受停机;追求快速“整库”搬迁。
- 基本步骤:
- 停止源端 mongod(确保一致性)。
- 拷贝数据目录(dbPath,常见如 /var/lib/mongodb)到目标机器相同路径或新路径。
- 目标端修改 /etc/mongod.conf 中的 dbPath(如变更),并确保目录权限正确。
- 启动目标端 mongod 并校验。
- 注意:版本差异、存储引擎差异(如 WiredTiger 与 MMAPv1)、压缩/加密配置不一致可能导致不兼容;不建议跨大版本直接拷贝。
方法三 mongoexport 与 mongoimport 导入导出(仅 JSON/CSV)
- 适用场景:小数据量、跨系统交换、需要对导出数据做处理或审查。
- 基本步骤:
- 导出:mongoexport --host < 地址> --db --collection --out .json(或 .csv)
- 传输文件到目标。
- 导入:mongoimport --host < 地址> --db --collection --file .json(或 .csv)
- 重要限制:JSON/CSV 不支持 BSON 全部数据类型(如 ObjectId、Date、BinData 等可能失真),不适合作为生产“保真”迁移手段;更适合作为辅助工具或子集迁移。
方法四 云数据库迁移到本地或跨云
- 基本步骤:
- 在云库侧执行 mongodump(可加 --uri 或 --host/–port 与鉴权参数)。
- 将备份目录安全传输到本地/目标环境。
- 在本地/目标端安装同版本或兼容版本的 MongoDB。
- 使用 mongorestore 恢复。
- 校验数据:对比集合 count()、抽样查询、校验索引与约束。
- 切换应用连接串并灰度/回滚预案。
- 示例命令:
- 备份:mongodump --host <
云地址>
--username --password
--authenticationDatabase admin --out /backup/cloud_$(date +%F)
- 恢复:mongorestore --host localhost /backup/cloud_2025-12-02/
- 备份:mongodump --host <
云地址>
--username --password
- 校验示例:
- 云库:mongo --host < 云地址> --eval “db.coll.count()”
- 本地:mongo --eval “db.coll.count()”
- 建议:选择低峰期操作,必要时短暂只读/维护窗口,确保网络带宽与磁盘空间充足。
方法五 容器化场景迁移(Docker)
- 适用场景:MongoDB 运行在 Docker/容器平台,数据在 Volume 或 bind mount。
- 基本步骤:
- 备份卷数据:
- 使用临时 Ubuntu 容器挂载目标卷与宿主机备份目录,打包:
docker run --rm --volumes-from < mongo容器名> -v /host/backup:/backup ubuntu tar cvf /backup/mongo_data.tar /data/db
- 使用临时 Ubuntu 容器挂载目标卷与宿主机备份目录,打包:
- 传输备份文件到新主机。
- 恢复卷数据:
- 在新主机启动含目标卷的 MongoDB 容器后,挂载备份并解包:
docker run --rm --volumes-from < mongo容器名> -v /host/backup:/backup ubuntu bash -c “cd /data/db & & tar xvf /backup/mongo_data.tar --strip 1”
- 在新主机启动含目标卷的 MongoDB 容器后,挂载备份并解包:
- 备份卷数据:
- 说明:若使用 bind mount,也可直接复制宿主机目录;使用 named volume 时推荐上述 tar 方式。
迁移注意事项与最佳实践
- 一致性:尽量在低峰期或维护窗口执行;对繁忙库,优先使用 mongodump/mongorestore 并在一致性要求高时考虑 oplog 回放(副本集/分片集群)。
- 版本与兼容性:逻辑迁移(BSON)通常对相邻大版本较友好;跨大版本或跨存储引擎不建议直接文件拷贝。
- 索引与元数据:mongorestore 会重建索引与约束,确保目标库资源与参数(如 wiredTigerCacheSizeGB)充足。
- 网络与带宽:大数据量迁移建议压缩后传输(如备份后 tar.gz),或使用专线/分片并行。
- 校验与回滚:迁移后对比 集合数、文档数、抽样数据、索引;保留旧库一段时间并准备回滚方案。
- 安全:备份文件含敏感数据,传输与落盘需加密与最小权限;云上操作遵循最小暴露面原则。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MongoDB数据迁移方法有哪些
本文地址: https://pptw.com/jishu/762473.html
