MongoDB在Linux上的数据迁移步骤
1. 准备工作
- 备份源数据:迁移前务必对源MongoDB实例进行完整备份(如使用
mongodump
),防止数据丢失。 - 版本兼容性检查:确保源服务器与目标服务器的MongoDB版本兼容(建议使用相同版本或从低版本迁移到高版本)。
- 目标环境准备:目标服务器需安装MongoDB且版本符合要求,确保
mongod
服务正常运行。 - 权限配置:确保源数据库用户具备
read
权限(用于导出),目标数据库用户具备write
权限(用于导入);若开启认证,需准备好账号密码。
2. 停止源MongoDB服务(可选但推荐)
为确保数据一致性,建议停止源服务器上的MongoDB服务,避免迁移过程中数据修改:
# 使用systemctl(适用于大多数现代Linux发行版,如CentOS 7+、Ubuntu 16.04+)
sudo systemctl stop mongod
# 若使用旧版init系统(如CentOS 6)
sudo service mongod stop
停止服务后,可通过ps -ef | grep mongod
确认进程已终止。
3. 迁移数据(选择合适方法)
根据数据量、实时性要求选择以下方法之一:
方法一:使用mongodump/mongorestore(全量/增量迁移,推荐)
-
全量导出:在源服务器上执行
mongodump
,将数据导出为BSON格式(保留索引、数据类型等结构):mongodump --host < 源服务器IP> --port 27017 --out /path/to/source_dump
示例:导出
mydb
数据库到/tmp/mydb_dump
目录:mongodump --host 192.168.1.100 --port 27017 -d mydb -o /tmp/mydb_dump
-
传输备份文件:将导出的
dump
目录复制到目标服务器(使用scp
或rsync
):scp -r /path/to/source_dump user@target_server:/path/to/target_dump
示例:将
/tmp/mydb_dump
复制到目标服务器的/tmp
目录:scp -r /tmp/mydb_dump user@192.168.1.200:/tmp
-
全量恢复:在目标服务器上执行
mongorestore
,将数据导入到目标MongoDB实例:mongorestore --host < 目标服务器IP> --port 27017 /path/to/target_dump/< 数据库名>
示例:恢复
mydb
数据库到目标服务器的默认数据目录:mongorestore --host 192.168.1.200 --port 27017 /tmp/mydb_dump/mydb
-
增量迁移(可选):若需同步迁移后的增量数据,可使用
mongodump
的--query
参数导出自上次备份后修改的数据(需记录上次备份时间),再通过mongorestore
导入目标服务器。
方法二:使用mongoexport/mongoimport(跨系统/逻辑迁移)
-
导出数据:在源服务器上执行
mongoexport
,将指定集合导出为JSON或CSV格式(适合小数据量或跨系统迁移):mongoexport --host < 源服务器IP> --port 27017 -d < 数据库名> -c < 集合名> --out /path/to/export_file.json
示例:导出
mydb
数据库的users
集合到JSON文件:mongoexport --host 192.168.1.100 --port 27017 -d mydb -c users -o /tmp/users.json
-
传输导出文件:将导出的JSON/CSV文件复制到目标服务器(使用
scp
):scp /path/to/export_file.json user@target_server:/path/to/target_file.json
-
导入数据:在目标服务器上执行
mongoimport
,将数据导入到目标数据库:mongoimport --host < 目标服务器IP> --port 27017 -d < 数据库名> -c < 集合名> --file /path/to/target_file.json
示例:导入
users.json
到目标服务器的mydb
数据库:mongoimport --host 192.168.1.200 --port 27017 -d mydb -c users /tmp/users.json
注:
mongoexport/mongoimport
会丢失BSON格式中的部分特性(如索引、数据类型),仅适合简单数据迁移。
4. 验证数据一致性
-
连接目标数据库:使用
mongo
shell连接到目标MongoDB实例:mongo --host < 目标服务器IP> --port 27017 -u < 用户名> -p < 密码> --authenticationDatabase admin
-
检查数据量:查询目标数据库的集合数量、文档数量是否与源数据库一致:
use mydb; show collections; // 检查集合是否存在 db.users.countDocuments(); // 检查文档数量(替换为实际集合名)
-
抽样验证:随机抽取部分文档,对比源数据库与目标数据库的内容是否一致:
db.users.findOne({ _id: ObjectId("xxxxxx")} ); // 替换为实际文档ID
5. 更新客户端连接配置
-
修改连接字符串:将应用程序或客户端的连接字符串指向目标服务器的IP地址和端口(默认27017):
mongodb://< 目标服务器IP> :27017/< 数据库名>
示例:若目标服务器IP为
192.168.1.200
,数据库名为mydb
,则连接字符串为:mongodb://192.168.1.200:27017/mydb
-
测试连接:通过客户端(如MongoDB Compass、Robo 3T)或应用程序测试连接,确保能正常访问目标数据库。
6. 清理工作(可选)
- 删除临时文件:迁移完成后,可删除源服务器的
dump
目录和目标服务器的临时备份文件,释放存储空间。 - 重启源服务:若之前停止了源MongoDB服务,可重新启动:
sudo systemctl start mongod
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux上的数据迁移步骤
本文地址: https://pptw.com/jishu/728233.html