Linux环境下MongoDB的数据迁移方法是什么
导读:Linux环境下MongoDB数据迁移方法 一、常用迁移方式与适用场景 逻辑导出导入(mongoexport / mongoimport):导出为JSON/CSV,便于跨版本、跨平台、跨云迁移,也可做部分集合/条件迁移。适合大多数业务场景...
Linux环境下MongoDB数据迁移方法
一、常用迁移方式与适用场景
- 逻辑导出导入(mongoexport / mongoimport):导出为JSON/CSV,便于跨版本、跨平台、跨云迁移,也可做部分集合/条件迁移。适合大多数业务场景与增量同步的前置步骤。
- 二进制备份恢复(mongodump / mongorestore):导出为BSON(含索引/元信息),保真度最高,适合全量迁移与同版本环境切换。
- 文件系统拷贝(停库 rsync):直接拷贝dbPath数据目录,要求版本一致、存储引擎一致、停机窗口,适合物理迁移或同机房快速切换。
二、方法一 逻辑导出导入 mongoexport 与 mongoimport
- 步骤
- 在源库导出集合(JSON/CSV)
- JSON:
mongoexport -h 源主机 -p 端口 -u 用户名 -p 密码 -d 库名 -c 集合名 -o 文件.json - CSV:
mongoexport -h 源主机 -p 端口 -u 用户名 -p 密码 -d 库名 -c 集合名 --type=csv -f 字段1,字段2 --headerline -o 文件.csv - 常用选项:
-h/-p/-u/-p/-d/-c/-o/--type/--headerline/-f/-q(查询条件)
- JSON:
- 将导出文件传输到目标服务器(如 scp/rsync)
- 在目标库导入
- JSON:
mongoimport -h 目标主机 -p 端口 -u 用户名 -p 密码 -d 库名 -c 集合名 --file 文件.json - CSV:
mongoimport -h 目标主机 -p 端口 -u 用户名 -p 密码 -d 库名 -c 集合名 --type=csv --headerline -f 字段1,字段2 --file 文件.csv - 常用选项:
--drop(导入前清空集合)、--ignoreBlanks(CSV忽略空值)、-j N(并发写入)
- JSON:
- 在源库导出集合(JSON/CSV)
- 示例
- 导出:
mongoexport -h 10.0.0.10:27017 -u admin -p *** -d sales -c orders -o /tmp/orders.json - 导入:
mongoimport -h 10.0.0.20:27017 -u admin -p *** -d sales -c orders --file /tmp/orders.json
- 导出:
- 适用:跨版本/跨平台迁移、只迁移部分集合或满足特定查询条件的数据、与业务系统对接(CSV)。
三、方法二 二进制备份恢复 mongodump 与 mongorestore
- 步骤
- 在源库备份
- 全库:
mongodump -h 源主机 -p 端口 -u 用户名 -p 密码 -o /backup/dump-20251116 - 指定库:
mongodump -h 源主机 -p 端口 -u 用户名 -p 密码 -d 库名 -o /backup/dump-库名 - 压缩归档:
mongodump -h 源主机 -p 端口 -u 用户名 -p 密码 --gzip --archive=/backup/dump-20251116.archive
- 全库:
- 将备份传输到目标服务器
- 在目标库恢复
- 目录方式:
mongorestore -h 目标主机 -p 端口 -u 用户名 -p 密码 -d 库名 --dir /backup/dump-库名/库名 - 归档方式:
mongorestore -h 目标主机 -p 端口 -u 用户名 -p 密码 --gzip --archive=/backup/dump-20251116.archive - 常用选项:
--drop(恢复前删除目标集合)、--gzip(压缩传输/恢复)
- 目录方式:
- 在源库备份
- 示例
- 备份:
mongodump -h 10.0.0.10:27017 -u admin -p *** --gzip --archive=/tmp/db.archive - 恢复:
mongorestore -h 10.0.0.20:27017 -u admin -p *** --gzip --archive=/tmp/db.archive
- 备份:
- 适用:需要高保真迁移(含索引/选项)、全量迁移、同版本或相近版本环境切换。
四、方法三 文件系统拷贝 rsync 方式(停库)
- 步骤
- 停源库:
sudo systemctl stop mongod - 同步数据目录:
sudo rsync -avz --progress /var/lib/mongodb/ 目标主机:/var/lib/mongodb/ - 如路径或日志配置不同,修改目标库配置文件**/etc/mongod.conf中的storage.dbPath与systemLog.path**
- 开放防火墙端口(默认27017):
sudo ufw allow 27017/tcp或sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT - 启动目标库:
sudo systemctl start mongod - 验证:
mongo --host 目标主机 --port 27017查询集合/数据量
- 停源库:
- 适用:同版本、同存储引擎、可接受停机窗口的迁移;同机房/同地域快速切换。
五、迁移注意事项与实用建议
- 版本与兼容性:逻辑导出导入(JSON/CSV)跨版本更灵活;二进制备份恢复(BSON)建议源/目标版本一致或按官方兼容矩阵执行。
- 认证与权限:使用**-u/-p并提供正确的–authenticationDatabase**(常见为admin)。
- 索引与约束:mongodump/restore会保留索引/选项;mongoimport不会自动创建与源库一致的索引,需在导入后按需创建。
- 网络与性能:大数据量建议压缩归档(–gzip)、并发导入(-j)、分片/批量迁移;跨公网传输优先内网或专线。
- 一致性:在线业务优先选择逻辑导出导入的**条件导出(-q)**做分批迁移,或在低峰期停库做全量迁移。
- 验证:迁移后核对集合数量、索引数量、数据量、抽样查询结果与校验和,确保业务可用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux环境下MongoDB的数据迁移方法是什么
本文地址: https://pptw.com/jishu/749063.html
