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 
}
相关文章
|
运维 NoSQL 安全
【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署
结合我们的生产需求,本次详细整理了最新版本 MonogoDB 7.0 集群的规划及部署过程,具有较大的参考价值,基本可照搬使用。 适应数据规模为T级的场景,由于设计了分片支撑,后续如有大数据量需求,可分片横向扩展。
2108 1
|
存储 负载均衡 NoSQL
MongoDB分片技术:实现水平扩展的利器
【4月更文挑战第30天】MongoDB的分片技术是应对数据增长和复杂业务需求的解决方案,它将数据水平拆分存储在多个实例上,实现数据库的水平扩展。分片带来水平扩展性、负载均衡、高可用性和灵活的数据管理。分片工作涉及mongos路由进程、config server和shard实例。设置分片包括部署配置服务器、添加分片、启动mongos、配置分片键和开始分片。选择合适的分片键和有效管理能确保系统性能和稳定性。
|
NoSQL MongoDB
MongoDB分片+副本集高可用集群的启停步骤
MongoDB分片+副本集高可用集群的启停步骤
759 0
|
存储 NoSQL MongoDB
MongoDB-分片片键
?> 那么紧接着上一篇的文章内容,如何将数据存储到不同的分片服务器上的? 答:通过分片片键
325 0
|
存储 NoSQL 前端开发
MongoDB 分片
10月更文挑战第17天
287 2
|
存储 监控 NoSQL
*MongoDB的水平扩展主要通过分片技术实
*MongoDB的水平扩展主要通过分片技术实
323 5
|
存储 NoSQL 前端开发
MongoDB 分片总结
这篇文章总结了MongoDB分片的概念、集群结构、分片实例、配置和测试过程。
1184 6
|
NoSQL 算法 测试技术
【MongoDB 专栏】MongoDB 的自动分片与手动分片
【5月更文挑战第11天】MongoDB的分片技术在处理大规模数据和高并发场景中至关重要,提供自动和手动两种方式。自动分片基于预定义规则,简化管理,适合大部分场景,但灵活性有限。手动分片则允许用户自定义策略,实现高效布局,适用于有特殊需求的应用,但配置复杂。选择分片方式需考虑业务需求、数据特点和技术能力。正确实施分片策略能构建高性能、可扩展的系统,支持企业业务发展。随着技术进步,未来的分片技术将更加智能和易用。
676 3
【MongoDB 专栏】MongoDB 的自动分片与手动分片
|
存储 监控 NoSQL
【MongoDB 专栏】MongoDB 分片策略与最佳实践
【5月更文挑战第10天】MongoDB 分片是应对大数据量的扩展策略,涉及哈希和范围分片两种策略。分片架构包含分片服务器、配置服务器和路由服务器。最佳实践包括选择合适分片键、监控调整、避免热点数据等。注意数据分布不均和跨分片查询的挑战。通过实例展示了如何在电商场景中应用分片。文章旨在帮助理解并优化 MongoDB 分片使用。
829 3
【MongoDB 专栏】MongoDB 分片策略与最佳实践
|
存储 负载均衡 NoSQL
MongoDB的分片功能
【6月更文挑战第6天】MongoDB的分片功能
436 1

推荐镜像

更多