MongoDB数据迁移至CentOS操作指南
目标服务器安装MongoDB
确保目标CentOS服务器已安装与源服务器版本兼容的MongoDB(建议使用相同主版本,如源为5.0则目标选5.x)。可通过以下命令安装(以CentOS 7为例):
# 添加MongoDB官方YUM仓库
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-org-5.0.5-1.el7.x86_64.rpm
# 安装MongoDB核心组件
rpm -ivh mongodb-org-*.rpm
# 启动服务并设置开机自启
systemctl start mongod && systemctl enable mongod
注:若源服务器为Windows或其他Linux发行版,需下载对应平台的MongoDB工具(如
mongodb-database-tools)用于数据导出。
配置权限与网络
dbOwner角色)。firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
使用mongodump工具导出源数据库数据到本地目录(需替换<source_host>、<source_port>、<source_db>和<backup_dir>):
mongodump --host <source_host> --port <source_port> -u <username> -p <password> --authenticationDatabase admin -d <source_db> -o <backup_dir>
testDB数据库到/home/user/mongodb_backup:mongodump --host 192.168.1.100 --port 27017 -u admin -p 123456 --authenticationDatabase admin -d testDB -o /home/user/mongodb_backup
使用scp工具将备份目录复制到目标CentOS服务器(替换<user>、<target_server_ip>和<backup_dir>):
scp -r <backup_dir> <user>@<target_server_ip>:/home/<user>/
/home/user/mongodb_backup复制到目标服务器的/home/user/:scp -r /home/user/mongodb_backup user@192.168.1.200:/home/user/
使用mongorestore工具将备份数据导入目标数据库(替换<target_host>、<target_port>、<target_db>和<backup_path>):
mongorestore --host <target_host> --port <target_port> -u <username> -p <password> --authenticationDatabase admin <backup_path>/<source_db>
/home/user/mongodb_backup/testDB恢复到目标服务器的testDB数据库:mongorestore --host 192.168.1.200 --port 27017 -u admin -p 123456 --authenticationDatabase admin /home/user/mongodb_backup/testDB
--drop参数先删除旧数据。若源服务器允许停机,可直接同步数据目录(适用于相同MongoDB版本):
停止源服务器MongoDB服务
mongo --eval "db.getSiblingDB('admin').shutdownServer()"
压缩并传输数据目录
假设源数据目录为/var/lib/mongo,使用tar压缩后传输:
tar -czvf mongodb_data.tar.gz /var/lib/mongo
scp mongodb_data.tar.gz user@192.168.1.200:/home/user/
解压并配置目标服务器
dbPath一致,如/var/lib/mongo):tar -xzvf mongodb_data.tar.gz -C /var/lib/mongo --strip-components=1
chown -R mongod:mongod /var/lib/mongo
systemctl start mongod
检查数据库列表
登录目标MongoDB,确认目标数据库存在:
mongo -u <username> -p <password> --authenticationDatabase admin
show dbs;
验证数据完整性
查询目标数据库中的集合和文档数量(替换<target_db>和<collection>):
use <target_db>
show collections;
db.<collection>.countDocuments();
readWrite、dbOwner)。/var/log/mongodb/mongod.log)定位问题。