温馨提示×

Linux下MongoDB的数据迁移方法

小樊
46
2025-10-03 23:08:32
栏目: 云计算

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

一、使用mongodump与mongorestore(整库/批量集合迁移推荐)

适用场景:需要迁移整个数据库或大量集合,追求迁移效率的场景。
操作步骤

  1. 源服务器备份数据:使用mongodump工具导出数据为BSON格式(MongoDB原生二进制格式),命令示例:
    mongodump --host 源服务器IP --port 27017 --db 目标数据库名 --out /path/to/backup目录
    
    说明:--host--port指定源MongoDB地址;--db指定要备份的数据库;--out指定备份文件存储路径。
  2. 传输备份文件到目标服务器:使用scp(安全拷贝)工具将备份目录传输到目标服务器,命令示例:
    scp -r /path/to/backup 目标服务器用户名@目标服务器IP:/path/to/destination目录
    
  3. 目标服务器恢复数据:使用mongorestore工具将备份数据导入目标MongoDB,命令示例:
    mongorestore --host 目标服务器IP --port 27017 --db 目标数据库名 /path/to/destination/备份目录/目标数据库名
    
    说明:若目标数据库已存在,mongorestore会合并数据(可通过--drop参数先删除目标数据库,谨慎使用)。

二、使用mongoexport与mongoimport(单集合/结构化数据迁移推荐)

适用场景:仅需迁移单个集合,或需要将数据转换为JSON/CSV格式(便于跨系统处理)的场景。
操作步骤

  1. 源服务器导出集合数据:使用mongoexport工具导出指定集合为JSON或CSV格式,命令示例(导出为JSON):
    mongoexport --host 源服务器IP --port 27017 --db 目标数据库名 --collection 目标集合名 --out /path/to/exported_file.json
    
    说明:--collection指定要导出的集合;--out指定导出文件路径。若需导出为CSV,需添加--type=csv--fields 字段1,字段2参数。
  2. 传输导出文件到目标服务器:使用scp工具将导出文件传输到目标服务器,命令同步骤二中的传输命令。
  3. 目标服务器导入集合数据:使用mongoimport工具将数据导入目标MongoDB,命令示例(导入JSON):
    mongoimport --host 目标服务器IP --port 27017 --db 目标数据库名 --collection 目标集合名 --file /path/to/exported_file.json
    
    说明:若目标集合已存在,mongoimport会追加数据(可通过--drop参数先删除目标集合)。

三、使用rsync同步数据目录(实时/增量迁移推荐)

适用场景:需要实时同步数据,或迁移过程中仍有数据写入的场景(如生产环境热迁移)。
前提条件:源服务器和目标服务器的MongoDB均配置为复制集(Replica Set),确保数据一致性。
操作步骤

  1. 配置复制集:若未配置,需修改源服务器和目标服务器的mongod.conf文件,添加复制集配置(如replication: replSetName: "rs0"),然后重启MongoDB服务。
  2. 同步数据目录:使用rsync工具同步源服务器的MongoDB数据目录(默认/var/lib/mongodb/data/db)到目标服务器,命令示例:
    rsync -avz --delete --progress 源服务器用户名@源服务器IP:/var/lib/mongodb/ 目标服务器用户名@目标服务器IP:/var/lib/mongodb/
    
    说明:-avz表示归档模式、显示进度、压缩传输;--delete表示删除目标目录中源目录不存在的文件(保持完全同步);--progress显示传输进度。
  3. 重启目标服务器MongoDB:同步完成后,重启目标服务器的MongoDB服务以加载同步的数据,命令示例:
    sudo systemctl restart mongod
    
    验证:通过mongo shell连接目标服务器,检查数据是否同步。

四、迁移注意事项

  1. 版本兼容性:确保源服务器与目标服务器的MongoDB版本兼容(如3.6→4.0→5.0,避免跨大版本直接迁移,建议逐步升级)。
  2. 权限准备:执行备份、恢复操作的用户需具备相应权限(如backuprestore角色,或root用户)。
  3. 数据一致性:迁移前停止源服务器的写入操作(或使用复制集保证数据同步),避免迁移过程中数据丢失。
  4. 网络带宽:大数据量迁移时,建议使用高速网络(如万兆以太网),或选择低峰期迁移以减少对业务影响。
  5. 迁移验证:迁移完成后,通过mongo shell连接目标服务器,执行查询语句(如db.collection.find().count())验证数据完整性和一致性。

0