mongodb移除分片

MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了。 
但是缩减集群(删除分片)这种一般很少用到。由于曙光的某服务器又挂了,所以我们送修之前必须把它上面的数据自动迁移到其他Shard上。 

1、执行RemoveShard命令 
1 db.runCommand( { removeshard: "your_shard_name" } ) 
2
3 { msg : "draining started successfully" , state: "started" , shard :"mongodb0" , ok : 1 } 
上面这句会立即返回,实际在后台执行。 
2、查看迁移状态 
我们可以反复执行上面语句,查看执行结果。 
1 db.runCommand( { removeshard: "your_shard_name" } ) 
2
3 { msg: "draining ongoing" , state: "ongoing" , remaining: { chunks: 42, dbs : 1 }, ok: 1 } 
从上面可以看到,正在迁移,还剩下42块没迁移完。 
当remain为0之后,这一步就结束了。 
3、移出非Shard数据 

1 db.runCommand( { movePrimary: "myapp", to: "mongodb1" }) 
这次就不是立即返回了,需要很久,然后会返回如下: 
1 { "primary" : "mongodb1", "ok" : 1 } 
4、最后的清理 
上面步骤都完成后,还需要再执行一次RemoveShard,清理残余数据。 
1 db.runCommand( { removeshard: "mongodb0" } ) 
执行成功后,会如下结果: 
1 { msg: "remove shard completed succesfully" , stage: "completed", host: "mongodb0", ok : 1 } 
显示completed后,就可以安心的关闭mongod的进程了。 


--如果要移除的分片正好是某一个表的primary,就会报错无法移除,那么就先进行如下操作: 
mongos> use admin 
switched to db admin 
mongos> db.runCommand({moveprimary:"testdb",to:"shard0001"})  --将主移动到另一个分片上 
{ "primary " : "shard0001:192.168.12.104:27019", "ok" : 1 } 

mongos> db.runCommand({moveprimary:"test",to:"shard0001"}) 
{ "primary " : "shard0001:192.168.12.104:27019", "ok" : 1 } 


mongos> db.runCommand({removeshard:"192.168.12.104:27017"})   --这样就可以成功移除 

"msg" : "removeshard completed successfully", 
"state" : "completed", 
"shard" : "shard0000", 
"ok" : 1 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值