温馨提示×

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

小樊
51
2025-10-24 22:59:22
栏目: 云计算

Linux环境下MongoDB数据迁移的常见方法

1. 使用mongodump与mongorestore工具(逻辑备份恢复)

适用场景:跨服务器、跨版本或需要逻辑备份的迁移(如版本升级、数据中心迁移)。
操作步骤

  • 导出数据:在源服务器上使用mongodump命令导出指定数据库或集合。例如,导出mydb数据库到/backup目录:
    mongodump --host <源服务器IP> --port 27017 --db mydb --out /backup
    
    若需导出特定集合(如users集合),可添加-c参数:
    mongodump --host <源服务器IP> --port 27017 --db mydb -c users --out /backup
    
  • 传输备份文件:将/backup目录复制到目标服务器(可使用scprsync):
    scp -r /backup user@目标服务器IP:/tmp
    
  • 恢复数据:在目标服务器上使用mongorestore命令恢复数据。例如,恢复mydb数据库到默认数据目录:
    mongorestore --host <目标服务器IP> --port 27017 /tmp/backup/mydb
    
    若需恢复到指定数据库(如newdb),可添加-d参数:
    mongorestore --host <目标服务器IP> --port 27017 -d newdb /tmp/backup/mydb
    

注意事项

  • 导出/恢复过程中需确保源数据库或目标数据库服务正常运行(mongodump/mongorestore会连接数据库);
  • 大数据量迁移时,建议添加--gzip参数压缩备份文件,减少传输时间。

2. 直接复制数据文件(物理迁移)

适用场景:同版本、停机时间允许的快速迁移(如测试环境迁移、本地服务器迁移)。
操作步骤

  • 停止源MongoDB服务:确保数据一致性,停止mongod服务:
    sudo systemctl stop mongod
    
  • 复制数据目录:MongoDB默认数据目录为/var/lib/mongodb(可通过/etc/mongod.conf中的storage.dbPath确认),使用rsync复制到目标服务器:
    rsync -avz --progress /var/lib/mongodb/ user@目标服务器IP:/var/lib/mongodb/
    
  • 启动目标MongoDB服务:在目标服务器上启动mongod服务:
    sudo systemctl start mongod
    

注意事项

  • 源服务器停止服务期间,业务将无法访问数据库,需提前规划停机时间;
  • 目标服务器需确保/etc/mongod.conf中的storage.dbPath指向正确的数据目录,且目录权限正确(mongod用户有读写权限)。

3. 使用mongoexport与mongoimport工具(JSON/CSV格式迁移)

适用场景:跨系统、需要人类可读格式或部分数据迁移(如Excel/CSV与其他系统对接)。
操作步骤

  • 导出数据:在源服务器上使用mongoexport命令导出指定集合为JSON或CSV格式。例如,导出test数据库的students集合为JSON:
    mongoexport --host <源服务器IP> --port 27017 --db test -c students --out students.json
    
    若需导出CSV格式(需指定字段),可添加--type=csv-f参数:
    mongoexport --host <源服务器IP> --port 27017 --db test -c students --type=csv -f name,age --out students.csv
    
  • 传输导出文件:将导出的文件复制到目标服务器(如scp students.json user@目标服务器IP:/tmp)。
  • 导入数据:在目标服务器上使用mongoimport命令导入数据。例如,导入JSON文件到newdb数据库的students集合:
    mongoimport --host <目标服务器IP> --port 27017 -d newdb -c students --file /tmp/students.json
    
    若导入CSV文件,需添加--headerline参数(若文件第一行为列名):
    mongoimport --host <目标服务器IP> --port 27017 -d newdb -c students --type=csv --headerline --file /tmp/students.csv
    

注意事项

  • 导出的JSON/CSV文件不包含索引信息,导入后需手动重建索引(如db.students.createIndex({name: 1}));
  • 适合小批量数据迁移,大数据量时效率较低。

4. 图形界面工具(如MongoDB Compass)

适用场景:无命令行经验、需要可视化操作的迁移(如开发人员、运维新手)。
操作步骤

  • 下载安装:在源服务器和目标服务器上安装MongoDB Compass(官网下载对应Linux版本,如.deb.rpm包)。
  • 连接数据库:打开Compass,输入源数据库连接信息(如mongodb://源服务器IP:27017),点击“Connect”;同理连接目标数据库。
  • 导出/导入数据
    • 导出:在Compass左侧选择源数据库和集合,点击顶部“Export”按钮,选择导出格式(JSON/CSV),保存文件;
    • 导入:在Compass左侧选择目标数据库和集合,点击顶部“Import”按钮,选择导出的文件,完成导入。
      注意事项
  • 需确保Compass版本与MongoDB版本兼容;
  • 大数据量导出/导入时,可能因内存不足导致失败,建议分批次操作。

0