Linux下MongoDB数据迁移的常见方法
适用场景:需要迁移整个数据库或大量集合,追求迁移效率的场景。
操作步骤:
mongodump工具导出数据为BSON格式(MongoDB原生二进制格式),命令示例:mongodump --host 源服务器IP --port 27017 --db 目标数据库名 --out /path/to/backup目录
说明:--host和--port指定源MongoDB地址;--db指定要备份的数据库;--out指定备份文件存储路径。scp(安全拷贝)工具将备份目录传输到目标服务器,命令示例:scp -r /path/to/backup 目标服务器用户名@目标服务器IP:/path/to/destination目录
mongorestore工具将备份数据导入目标MongoDB,命令示例:mongorestore --host 目标服务器IP --port 27017 --db 目标数据库名 /path/to/destination/备份目录/目标数据库名
说明:若目标数据库已存在,mongorestore会合并数据(可通过--drop参数先删除目标数据库,谨慎使用)。适用场景:仅需迁移单个集合,或需要将数据转换为JSON/CSV格式(便于跨系统处理)的场景。
操作步骤:
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参数。scp工具将导出文件传输到目标服务器,命令同步骤二中的传输命令。mongoimport工具将数据导入目标MongoDB,命令示例(导入JSON):mongoimport --host 目标服务器IP --port 27017 --db 目标数据库名 --collection 目标集合名 --file /path/to/exported_file.json
说明:若目标集合已存在,mongoimport会追加数据(可通过--drop参数先删除目标集合)。适用场景:需要实时同步数据,或迁移过程中仍有数据写入的场景(如生产环境热迁移)。
前提条件:源服务器和目标服务器的MongoDB均配置为复制集(Replica Set),确保数据一致性。
操作步骤:
mongod.conf文件,添加复制集配置(如replication: replSetName: "rs0"),然后重启MongoDB服务。rsync工具同步源服务器的MongoDB数据目录(默认/var/lib/mongodb或/data/db)到目标服务器,命令示例:rsync -avz --delete --progress 源服务器用户名@源服务器IP:/var/lib/mongodb/ 目标服务器用户名@目标服务器IP:/var/lib/mongodb/
说明:-avz表示归档模式、显示进度、压缩传输;--delete表示删除目标目录中源目录不存在的文件(保持完全同步);--progress显示传输进度。sudo systemctl restart mongod
验证:通过mongo shell连接目标服务器,检查数据是否同步。backup、restore角色,或root用户)。mongo shell连接目标服务器,执行查询语句(如db.collection.find().count())验证数据完整性和一致性。