温馨提示×

MongoDB数据迁移在CentOS上如何进行

小樊
37
2025-11-01 13:17:30
栏目: 云计算

一、准备工作

  1. 目标服务器安装MongoDB:确保目标CentOS服务器已安装与源服务器版本兼容的MongoDB(建议版本差异不超过2个小版本),安装目录结构(如/usr/local/mongodb/bin/usr/local/mongodb/data/usr/local/mongodb/etc)与源服务器一致。
  2. 权限与工具准备:确认当前用户对源/目标服务器的MongoDB数据目录(如/var/lib/mongo)、配置文件(如/etc/mongodb.conf)有读写权限;安装scp(默认集成)或rsyncyum install -y rsync)工具用于文件传输。

二、常用方法:mongodump/mongorestore(逻辑备份恢复)

  1. 源服务器备份数据:使用mongodump命令导出指定数据库(如mydb)的数据到本地目录(如/tmp/mongodb_backup)。若需认证,添加--username--password--authenticationDatabase参数;若备份所有数据库,省略--db参数。
    示例命令:
    mongodump --host 127.0.0.1 --port 27017 --username admin --password 123456 --authenticationDatabase admin --db mydb --out /tmp/mongodb_backup
    
  2. 传输备份文件到目标服务器:使用scp将备份目录递归复制到目标服务器的目标路径(如/tmp/mongodb_restore)。
    示例命令:
    scp -r /tmp/mongodb_backup root@目标服务器IP:/tmp/mongodb_restore
    
  3. 目标服务器恢复数据:使用mongorestore命令将备份数据导入目标MongoDB实例。若目标数据库已存在,添加--drop参数先删除旧数据(谨慎使用);若恢复所有数据库,直接指定备份目录。
    示例命令:
    mongorestore --host 127.0.0.1 --port 27017 --username admin --password 123456 --authenticationDatabase admin /tmp/mongodb_restore/mydb
    

三、物理文件迁移法(适合大规模数据或实时同步)

  1. 源服务器停止MongoDB服务:通过mongo shell进入admin数据库,执行db.shutdownServer();或使用mongod --shutdown --dbpath /var/lib/mongo命令(需替换为实际数据目录)。
  2. 压缩并传输数据目录:使用tar命令压缩数据目录(如/var/lib/mongo),生成data.tar.bz2文件;通过scp传输到目标服务器。
    示例命令:
    tar jcvf /tmp/data.tar.bz2 /var/lib/mongo
    scp /tmp/data.tar.bz2 root@目标服务器IP:/tmp
    
  3. 目标服务器解压并配置:解压传输的压缩文件到MongoDB数据目录(如/usr/local/mongodb/data);修改数据目录权限为mongod用户(如chown -R mongod:mongod /usr/local/mongodb/data)。
    示例命令:
    tar -xvjf /tmp/data.tar.bz2 -C /usr/local/mongodb/
    chown -R mongod:mongod /usr/local/mongodb/data
    
  4. 启动目标服务器MongoDB:使用配置文件启动服务(如mongod --config /usr/local/mongodb/etc/mongodb.conf),检查服务状态是否正常。

四、实时同步方法(适合不停机迁移)

  1. 源服务器配置复制集:若源服务器未启用复制集,需修改配置文件(/etc/mongodb.conf)添加replication: replSetName: "rs0",重启服务;通过mongo shell初始化复制集(rs.initiate())。
  2. 目标服务器添加为Secondary节点:在目标服务器上安装MongoDB并配置复制集(replSetName: "rs0"),启动服务;使用rs.add("目标服务器IP:27017")将目标节点添加到复制集,等待数据同步完成。
  3. 切换应用连接:同步完成后,将应用连接字符串指向目标服务器(如mongodb://目标服务器IP:27017),移除源服务器节点。

五、注意事项

  1. 版本兼容性:源与目标MongoDB版本差异过大(如4.x→6.x)可能导致数据格式不兼容,建议升级目标服务器至与源服务器相同或更高版本。
  2. 权限检查:确保备份/恢复用户有足够权限(如backup角色或dbAdmin角色),避免因权限不足导致操作失败。
  3. 网络与存储:大数据量迁移时,选择低峰时段操作;确保目标服务器有足够存储空间(建议预留1.5倍源数据大小);可通过rsync增量同步减少传输时间。
  4. 数据验证:恢复后,使用mongo shell连接目标数据库,执行show dbsuse mydb; db.collection.find().count()等命令,验证数据完整性与一致性。

0