用增加复制集节点再删除节点方式迁移mongodb
增加再删除节点方式迁移mongodb到另外三台服务器(细节略):
1. 增加三个节点,功能和原有三节点一一对应,启动好;
2. 把新的三个节点加入复制集,完成后相当于三个shard和一个config复制集有4个副本和2个arbitrary(增加新节点前shard和config server都只有2个副本和1个arbitrary);
shard_1:PRIMARY> rs.add(‘10.10.10.4:27018’)
shard_1:PRIMARY> rs.add(‘10.10.10.5:27020’)
shard_1:PRIMARY> rs.add(‘10.10.10.6:27021’, true)
shard_1:PRIMARY> rs.status()
shard_2:PRIMARY> rs.add(‘10.10.10.4:27021’, true)
shard_2:PRIMARY> rs.add(‘10.10.10.5:27018’)
shard_2:PRIMARY> rs.add(‘10.10.10.6:27020’)
shard_2:PRIMARY> rs.status()
shard_3:PRIMARY> rs.add(‘10.10.10.4:27020’)
shard_3:PRIMARY> rs.add(‘10.10.10.5:27021’, true)
shard_3:PRIMARY> rs.add(‘10.10.10.6:27018’)
shard_3:PRIMARY> rs.status()
csReplSet:PRIMARY> rs.add(‘10.10.10.4:27019’)
csReplSet:PRIMARY> rs.add(‘10.10.10.5:27019’)
csReplSet:PRIMARY> rs.add(‘10.10.10.6:27019’)
csReplSet:PRIMARY> rs.status()
mongos> sh.status()
3. mongos增加新的3个节点;
$ vi /data/mongodb/conf/mongos_27017.conf
configDB: csReplSet/10.10.10.7:27019,10.10.10.8:27019,10.10.10.9:27019,10.10.10.4:27019,10.10.10.5:27019,10.10.10.6:27019
重启mongos。
4. 把三个shard和一个config的primary强制都切换到新的三个节点;
rs.freeze(120) 针对某个shard或config在老的secondary节点执行。
rs.stepDown(120) 针对某个shard或config在老的主节点执行。
5. mongos去掉老的3个节点;
vi /data/mongodb/conf/mongos_27017.conf
configDB: csReplSet/10.10.10.4:27019,10.10.10.5:27019,10.10.10.6:27019
重启mongos。
6. 删除老的三个节点,完成后三个shard和一个config复制集恢复成原有的2副本和1arbitrary;
shard_1:PRIMARY> rs.remove(‘10.10.10.7:27018’)
…
7. 观察一段时间,关闭三台老节点,完成。