Linux环境下MongoDB数据迁移的常见方法
适用场景:跨服务器、跨版本或需要逻辑备份的迁移(如版本升级、数据中心迁移)。
操作步骤:
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目录复制到目标服务器(可使用scp或rsync):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参数压缩备份文件,减少传输时间。适用场景:同版本、停机时间允许的快速迁移(如测试环境迁移、本地服务器迁移)。
操作步骤:
mongod服务:sudo systemctl stop mongod
/var/lib/mongodb(可通过/etc/mongod.conf中的storage.dbPath确认),使用rsync复制到目标服务器:rsync -avz --progress /var/lib/mongodb/ user@目标服务器IP:/var/lib/mongodb/
mongod服务:sudo systemctl start mongod
注意事项:
/etc/mongod.conf中的storage.dbPath指向正确的数据目录,且目录权限正确(mongod用户有读写权限)。适用场景:跨系统、需要人类可读格式或部分数据迁移(如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
注意事项:
db.students.createIndex({name: 1}));适用场景:无命令行经验、需要可视化操作的迁移(如开发人员、运维新手)。
操作步骤:
.deb或.rpm包)。mongodb://源服务器IP:27017),点击“Connect”;同理连接目标数据库。