关键字:MongoDB中缩减Shard集群(删除一个Shard)--删除一个分片
对MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了。
但是缩减集群(删除分片)这种一般很少用到。由于某服务器挂了,所以想送修之前必须把它上面的数据自动迁移到其他Shard上。
以下内容翻译自:http://docs.mongodb.org/manual/tutorial/remove-shards-from-cluster/
1、执行RemoveShard命令
db.runCommand( { removeshard: "your_shard_name" } )
{ msg : "draining started successfully" , state: "started" , shard :"mongodb0" , ok : 1 }
“
注意:该命令至少执行两次才能成功删除,执行到state为completed才真正删除,否则就是没用删除成功,该分片处于"draining" : true状态,该状态下不但该分片没用删除成功,而且还影响接下来删除其他分片操作,遇到该状态再执行一次removeshard即可,最好就是删除分片时一直重复执行删除命令,直到state为completed;
还有一个需要注意的地方就是:被成功删除的分片如果想要再加入集群时,必须将data数据目录清理干净才可以再加入集群,否则即使能加入成功也不会存储数据,集合都不会被创建
另外:在删除分片的时有可能整个过程出现无限"draining" : true状态,等多久还是这样,而且分片上面的块一个都没有移动到别的分片,解决办法是:在config的config数据库的shard集合中找到该分片的信息,并将draining字段由True改为False,再继续试着删除操作”
上面这句会立即返回,实际在后台执行。
2、查看迁移状态
我们可以反复执行上面语句,查看执行结果。
db.runCommand( { removeshard: "your_shard_name" } ) { msg: "draining ongoing" , state: "ongoing" , remaining: { chunks:
42, dbs :
1 }, ok:
1 }
从上面可以看到,正在迁移,还剩下42块没迁移完。
当remain为0之后,这一步就结束了。
3、移出非Shard数据(如果开始就知道是primary可以直接执行 步骤3和4即可,1和2不需要执行)
如果你要
删除的Shard分片恰好是primary,那么执行这一步,
否则请跳过!
db.runCommand( { movePrimary: "数据库名称", to: "分片名称" })
这次就不是立即返回了,需要很久,然后会返回如下:
{ "primary" : "mongodb1", "ok" : 1 }
4、最后的清理
上面步骤都完成后,还需要再执行一次RemoveShard,清理残余数据。
db.runCommand( { removeshard: "mongodb0" } )
执行成功后,会如下结果:
{ msg: "remove shard completed succesfully" , stage: "completed", host: "mongodb0", ok : 1 }
显示completed后,就可以安心的关闭mongod的进程了。
分享到:
相关推荐
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
mongodb副本集加分片集群安全认证使用账号密码登录
13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群...
mongodb集群分片操作以及增加acl,有什么问题联系我!
公司单节点升级到分片下,搜索了一圈大多数MongoDB集群的部署方案都是分片+副本集,没有讲述如何从单节点升级到分片+复制集的方法,亲自试验后记录整个过程以及中间的参考内容和疑难解决,以备后查。内容包含复制集+...
公司单节点升级到分片下,搜索了一圈大多数 MongoDB 集群的部署方案都是分片+副本集,没有讲述如何从单节点升级到分片+复制集的方法,亲自试验后记录整个过程以及中间的参考内容和疑难解 决,以备后查。内容包含复制...
mongodb 分片集群搭建过程(无副本),详细操作步骤,linux命令
mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有...
Mongodb_集群分片部署 Mongodb_集群分片部署 Mongodb_集群分片部署
MongoDB分片副本级 详细的讲述了MongoDB分片副本级配置
MongoDB搭建分片集群windows端
目录 1 MongoDB的简介和安装启动.mp4 2 MongoDB服务器的启动优化.mp4 3 MongoDB客户端基础使用.mp4 4 MongoDB集合的多种查询条件.mp4 5 MongoDB索引查询与建立.mp4 ...17 MongoDB分片集群的使用介绍.mp4
mongodb中文API及分布式分片实例详解。
(3) 请在报告中使用文字和截图详细描述MongoDB分片集群搭建及配置的主要步骤: - 搭建配置集服务器(Mongod) - 搭建分片集服务器(Mongod) - 搭建路由节点服务器(Mongos) - 添加分片集到集群 - 创建数据库...
mongodb shard一些特性简介,以及部署架构
MongoDB4.2分片及副本集群搭建详细指导手册,详细描述了MongoDB4.2数据库服务器集群的搭建以及副本和分片服务的配置过程及具体操作指令。
在kubernetes上部署mongodb分片集群。 这适用于最少具有3个节点的小型集群和具有100多个节点的大型集群。 先决条件 具有至少3个可调度节点的Kubernetes集群。 Kubernetes v1.2.3或更高版本 特征 分片,副本,配置...
mongodb集群 shard replset 分片 包括windows 和 linux两个版本
mongoDB分片、2个mongos实现高可用 操作系统:CentOS Linux release 7.6.1810 (Core) Mongodb版本:mongodb-linux-x86_64-rhel62-4.0.19.tar 3台虚拟机 192.168.213.17、192.168.213.18、192.168.213.19 192.168....