MongoDB Sharding学习操作篇二
短信预约 -IT技能 免费直播动态提醒
接上一篇
14.配置集群中的balancer进程
balancer进程运行在集群中的某一个mongos实例上,确保chunks均匀分布在整个集群上。
更改指定shard的最大存储大小
15.移除已有分片集群中的一个分片
在移除一个分片之前需要先确保这个分片上的数据已经移动到其他分片上。
1)确保Blancer进程已经开启
sh.getBalancerState()
2)确定需要被移除的分片名称
db.adminCommand( { listShards: 1 } )
或者
db.printShardingStatus()
或者
sh.status()
3)移走分片上的数据块
mongos> use admin;
switched to db admin
mongos> db.runCommand({removeShard : "taiwan_shard1"})
{
"msg" : "draining started successfully",
"state" : "started",
"shard" : "taiwan_shard1",
"ok" : 1
}
根据网络状况和数据量大小,这个操作可能花费几分钟或者几天时间完成
4)检查迁移的状态
mongos> db.runCommand({removeShard : "taiwan_shard1"})
{
"msg" : "draining ongoing",
"state" : "ongoing",
"remaining" : {
"chunks" : NumberLong(0),
"dbs" : NumberLong(2)
},
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"taiwan_game4",
"taiwan_game5"
],
"ok" : 1
}
这里需要注意的是,如果一个分片是一个或者多个数据库的primary shard,那么这个分片上就存有未被分片的数据。
mongos> use admin;
switched to db admin
mongos> db.runCommand( { movePrimary: "taiwan_game4", to: "taiwan_shard2" })
{
"primary " : "taiwan_shard2:taiwan_shard2/gintama-taiwan-mongodb2:28018",
"ok" : 1
}
mongos> db.runCommand( { movePrimary: "taiwan_game5", to: "taiwan_shard2" })
{
"primary " : "taiwan_shard2:taiwan_shard2/gintama-taiwan-mongodb2:28018",
"ok" : 1
}
5)结束迁移过程
mongos> db.runCommand({removeShard : "taiwan_shard1"})
{
"msg" : "removeshard completed successfully",
"state" : "completed",
"shard" : "taiwan_shard1",
"ok" : 1
}
当state状态为completed时,迁移完成。
参考文档:
http://docs.mongodb.org/v2.4/tutorial/remove-shards-from-cluster/
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341