首页主机资讯Linux环境下MongoDB的数据迁移方法是什么

Linux环境下MongoDB的数据迁移方法是什么

时间2025-11-17 16:31:03发布访客分类主机资讯浏览1020
导读:Linux环境下MongoDB数据迁移方法 一、常用迁移方式与适用场景 逻辑导出导入(mongoexport / mongoimport):导出为JSON/CSV,便于跨版本、跨平台、跨云迁移,也可做部分集合/条件迁移。适合大多数业务场景...

Linux环境下MongoDB数据迁移方法

一、常用迁移方式与适用场景

  • 逻辑导出导入(mongoexport / mongoimport):导出为JSON/CSV,便于跨版本、跨平台、跨云迁移,也可做部分集合/条件迁移。适合大多数业务场景与增量同步的前置步骤。
  • 二进制备份恢复(mongodump / mongorestore):导出为BSON(含索引/元信息),保真度最高,适合全量迁移同版本环境切换。
  • 文件系统拷贝(停库 rsync):直接拷贝dbPath数据目录,要求版本一致存储引擎一致停机窗口,适合物理迁移或同机房快速切换。

二、方法一 逻辑导出导入 mongoexport 与 mongoimport

  • 步骤
    1. 在源库导出集合(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(查询条件)
    2. 将导出文件传输到目标服务器(如 scp/rsync)
    3. 在目标库导入
      • 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(并发写入)
  • 示例
    • 导出: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

  • 步骤
    1. 在源库备份
      • 全库: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
    2. 将备份传输到目标服务器
    3. 在目标库恢复
      • 目录方式: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 方式(停库)

  • 步骤
    1. 停源库:sudo systemctl stop mongod
    2. 同步数据目录:sudo rsync -avz --progress /var/lib/mongodb/ 目标主机:/var/lib/mongodb/
    3. 如路径或日志配置不同,修改目标库配置文件**/etc/mongod.conf中的storage.dbPathsystemLog.path**
    4. 开放防火墙端口(默认27017):sudo ufw allow 27017/tcpsudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
    5. 启动目标库:sudo systemctl start mongod
    6. 验证: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
Linux系统下MongoDB性能调优技巧有哪些 如何优化Linux上MongoDB的网络连接

游客 回复需填写必要信息