mongodb复制集群迁移
1. 准备新机器
安装 MongoDB:
在新机器上安装与现有集群相同版本的 MongoDB。1
sudo apt-get install -y mongodb-org
配置网络:
确保新机器能够与现有 MongoDB 集群中的节点互相通信。
2. 加入新节点到复制集
连接到主节点:
在现有复制集群的主节点上连接 MongoDB shell。1
mongo --host <PRIMARY_HOST>:<PRIMARY_PORT>
查看现有复制集状态:
1
rs.status()
确保当前复制集运行正常,并记录下复制集的名称。
在新机器上启动 MongoDB:
使用与现有集群一致的配置启动 MongoDB。
1
mongod --replSet <replica_set_name> --bind_ip 0.0.0.0 --port 27017 --dbpath /var/lib/mongodb --logpath /var/log/mongodb/mongod.log --fork
将新节点加入到复制集:
回到主节点的 MongoDB shell 中,使用以下命令将新机器加入到复制集。
1
rs.add("<NEW_HOST>:<NEW_PORT>")
验证同步状态:
可以使用以下命令查看新节点的同步进度。
1
2rs.status()
rs.printReplicationInfo()当新节点的
STATE
为SECONDARY
并且lag
值接近 0 时,表示同步已完成。
3. 迁移数据并切换角色
将新节点提升为主节点(可选):
如果你打算将新机器设置为主节点,可以通过调整优先级实现。
1
2
3cfg = rs.conf()
cfg.members[<NEW_NODE_INDEX>].priority = 2
rs.reconfig(cfg)使用以下命令强制选举新节点为主节点:
1
rs.stepDown()
在主节点切换后,你可以再次检查状态:
1
rs.status()
移除旧节点(可选):
如果迁移成功并希望移除旧机器,可以执行以下命令:
1
rs.remove("<OLD_HOST>:<OLD_PORT>")
4. 更新应用配置
更新连接字符串:
修改应用程序的 MongoDB 连接字符串,使其指向新的集群配置。
1
mongodb://<NEW_HOST>:<NEW_PORT>,<SECONDARY_HOST>:<SECONDARY_PORT>/?replicaSet=<replica_set_name>
5. 测试
读写测试:
使用 MongoDB shell 或应用程序进行一些基本的读写操作,确保迁移后的集群正常工作。
6. 清理旧节点
关闭旧节点:
在确认新集群稳定后,可以停止并移除旧节点的 MongoDB 实例。
1
2sudo service mongod stop
sudo rm -rf /var/lib/mongodb/*