CentOS上MongoDB数据迁移的常用方法
/usr/local/mongodb/bin、/usr/local/mongodb/data)、配置文件(如/etc/mongod.conf)与源实例一致。mongodump工具备份源数据库,确保数据完整性和一致性。例如,备份mydb数据库到/backup目录:mongodump --host 源IP --port 27017 --db mydb --out /backup
sudo systemctl stop mongod
或直接调用mongod命令关闭:mongod --shutdown --dbpath /var/lib/mongo # 替换为源数据目录
mongodump将源数据库导出为BSON格式(MongoDB原生二进制格式),保留索引、数据类型等结构信息。例如,导出mydb数据库的users集合到/backup目录:mongodump --host 源IP --port 27017 --db mydb --collection users --out /backup
scp或rsync将备份目录从源服务器复制到目标服务器。例如:scp -r /backup user@目标IP:/tmp/backup
mongorestore将备份数据导入到目标数据库。例如,恢复mydb数据库到目标实例:mongorestore --host 目标IP --port 27017 --db mydb /tmp/backup/mydb
若需覆盖现有数据库,可添加--drop参数(谨慎使用):mongorestore --host 目标IP --port 27017 --db mydb --drop /tmp/backup/mydb
mongoexport将单个集合导出为JSON或CSV格式(适合需要人类可读或跨数据库迁移的场景)。例如,导出mydb数据库的products集合为JSON格式:mongoexport --host 源IP --port 27017 --db mydb --collection products --out /backup/products.json --type=json
若需导出指定字段(如name、price),可添加-f参数:mongoexport --host 源IP --port 27017 --db mydb --collection products --out /backup/products.json --type=json -f name,price
scp或rsync将导出文件复制到目标服务器:scp /backup/products.json user@目标IP:/tmp/
mongoimport将数据导入到目标集合。例如,导入products.json到mydb数据库的products_new集合:mongoimport --host 目标IP --port 27017 --db mydb --collection products_new --file /tmp/products.json --type=json
若目标集合已存在且需追加数据,可添加--mode=append参数;若需覆盖,可添加--drop参数。mongo 目标IP:27017/mydb
> db.users.find().count() # 对比源实例的users集合数量
> db.products.find().forEach(printjson) # 抽样检查数据内容
mongodb://目标IP:27017/mydb),重启应用并验证是否能正常读写数据。/var/log/mongodb/mongod.log),确认无错误或警告信息。admin数据库的readWrite或root角色),确保能访问和操作源/目标数据库。-j参数(mongodump/mongorestore)开启并行导出/导入,提高效率。例如:mongodump --host 源IP --port 27017 --db mydb --out /backup --j 4 # 并行4个集合
mongorestore --host 目标IP --port 27017 --db mydb /backup/mydb --j 4 # 并行恢复
mongodump的--query参数导出增量数据(如{"last_update": {"$gt": "2025-08-01T00:00:00Z"}}),再通过mongorestore导入目标实例。