加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

mongwwwbb0005comoDBI990883666Ishard

发布时间:2020-12-14 04:34:33 所属栏目:大数据 来源:网络整理
导读:在使用mongoDB过程中,我们经常做的是向集群中添加shard,这个操作介绍的很多。但是有时候因为某些情况需要移除某个shard。下面介绍一下操作: 1,登录mongos 移除shard必须在mongos节点执行命令 我们先查一下当前的shard mongoDb集群移除shard的操作 2,开
在使用mongoDB过程中,我们经常做的是向集群中添加shard,这个操作介绍的很多。但是有时候因为某些情况需要移除某个shard。下面介绍一下操作:

1,登录mongos
移除shard必须在mongos节点执行命令

我们先查一下当前的shard

mongoDb集群移除shard的操作
2,开始移除: db.runCommand( {removeshard:"shard1"} )
mongoDb集群移除shard的操作
看到如图的报错。原因下面说

3,做主节点切换
一个库如果开启了分片,他是有一个primary shard的。不是所有分片都是平等的。

如果要移除的恰好是主分片,必须在迁移完数据后,手动执行 movePrimary命令

指定新的主分片

去config库下

mongos> use config
switched to db config
mongos> db.databases.find()
mongoDb集群移除shard的操作
可以看到,我现在有开启分片,primary是shard1的,也有没开启分片,primary是shard1的

然后去admin库下

mongos> use admin
switched to db admin
mongos> db.runCommand({"moveprimary":"app","to":"shard2"})
{ "primary" : "shard2:shard2/10.135.7.56:20000,10.135.7.58:20000","ok" : 1 }
注意,这里要注意,官方有警告:

Warning

Do not perform this procedure until you have finished draining the shard.

要等能迁移的shards数据都移干净了,即下图中的remaining chunks是0了,再操作这个。

这个过程根据数据量的大小不同,会非常慢。不要急

对所有报错的库都执行一下

然后再继续去removeshard

4,结束善后
迁移动作会进行的比较慢,以免给集群带来过大的压力。

mongoDb集群移除shard的操作
在进行中,返回的信息中remain显示还有多少数据需要移动

最后:

看shards的列表里也没有shard1了

现在可以关闭shard1的实例了

最后还有一步,官方建议要完成后要刷新一下mongs的路由数据,以防mongos路由到错误的地址

方法:重启所有的mongos节点,或者所有mongos节点执行下

mongos> db.adminCommand("flushRouterConfig")

{ "flushed" : true,"ok" : 1 }

这个命令会清空本地的路由表,然后从config节点重新拉取数据生成新的路由表。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读