MongoDB数据迁移在Ubuntu上怎么弄
导读:在 Ubuntu 上做 MongoDB 数据迁移的实用步骤 一 方案选择 同版本或相近版本、需要保留索引与数据类型时,优先使用 mongodump/mongorestore(BSON 二进制,保真度高,适合迁移)。 跨大版本或跨产品迁移、...
在 Ubuntu 上做 MongoDB 数据迁移的实用步骤
一 方案选择
- 同版本或相近版本、需要保留索引与数据类型时,优先使用 mongodump/mongorestore(BSON 二进制,保真度高,适合迁移)。
- 跨大版本或跨产品迁移、只需迁移部分数据、强调可读性时,使用 mongoexport/mongoimport(JSON/CSV,不保留索引/账户等元数据)。
- 需要不停机近实时同步时,考虑 Change Streams 或第三方工具(如 Studio 3T、Robo 3T)。
- 迁移前务必评估数据量与资源占用,选择业务低峰时段执行。
二 准备与工具安装
- 安装命令行工具包(包含 mongodump/mongorestore/mongoexport/mongoimport):
- Ubuntu 20.04/22.04 常见做法:sudo apt update & & sudo apt install -y mongodb-org-tools。
- 若仓库无该包,可手动安装 MongoDB Database Tools(.tgz 或 .deb),或用官方源安装对应版本。
- 验证工具可用:mongodump --version。
- 迁移前确认网络、端口(默认 27017)、磁盘空间与权限。
三 同版本迁移步骤(推荐)
- 源库导出(示例为本地,远程请替换主机与端口):
- 全库:mongodump --uri=“mongodb://源主机:27017” --out=/data/backup/$(date +%F)
- 单库:mongodump --uri=“mongodb://源主机:27017” --db=mydb --out=/data/backup/mydb_$(date +%F)
- 传输备份到目标机器:
- scp -r /data/backup/mydb_2025-11-19 目标主机:/data/backup/
- 目标库恢复:
- 全库:mongorestore --uri=“mongodb://目标主机:27017” --drop /data/backup/mydb_2025-11-19
- 单库:mongorestore --uri=“mongodb://目标主机:27017” --db=mydb --drop /data/backup/mydb_2025-11-19/mydb
- 说明:–drop 会在恢复前删除同名库/集合,避免重复;如跨主机迁移,请在 URI 中带上认证参数(如 --username/–password 或 --uri 包含用户名密码)。
四 跨版本或跨产品迁移(JSON/CSV)
- 导出集合为 JSON(示例):
- mongoexport --uri=“mongodb://源主机:27017” --db=mydb --collection=mycoll --out=mycoll.json
- 可按条件导出:–query=‘{ “ts”:{ “$gt”:ISODate(“2025-01-01”)} } ’
- 可选:导出为 CSV(字段顺序需一致):
- mongoexport --uri=“mongodb://源主机:27017” --db=mydb --collection=mycoll --type=csv --fields=f1,f2,f3 --out=mycoll.csv
- 目标库导入:
- JSON:mongoimport --uri=“mongodb://目标主机:27017” --db=mydb --collection=mycoll --file=mycoll.json
- CSV:mongoimport --uri=“mongodb://目标主机:27017” --db=mydb --collection=mycoll --type=csv --headerline --file=mycoll.csv
- 注意:JSON/CSV 不保留索引、触发器、用户与角色等元数据,导入后需重建索引与权限。
五 常见问题与校验
- 认证失败:在命令中加入 --authenticationDatabase=admin(或对应库),或在 URI 中提供凭据。
- 重复键冲突:恢复时加 --drop;导入 JSON 时可用 --upsert/–upsertFields 控制。
- 版本兼容:BSON 跨版本并非总是兼容,跨大版本优先尝试 JSON 方案或先在测试环境验证。
- 一致性:导出期间写入会导致不一致,尽量在低峰期执行,或使用复制集/备份窗口策略。
- 校验:对比导出前后数据量(如 du -sh)、集合 count、抽样查询与索引是否齐全。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB数据迁移在Ubuntu上怎么弄
本文地址: https://pptw.com/jishu/751003.html
