`
LJ你是唯一LT
  • 浏览: 243425 次
社区版块
存档分类
最新评论

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
}
分享到:
评论

相关推荐

    MongoDB分片介绍

    MongoDB允许动态调整分片,如添加、移除分片,或者重新分片集合以优化数据分布。此外,根据业务需求,可以使用范围分片、哈希分片等不同策略。 总的来说,MongoDB的分片技术旨在提供可扩展性和高性能,通过合理配置...

    mongodb分片设计

    为了保证数据分布的均衡性(Maintaining a Balanced Data Distribution),MongoDB提供了分片数据块(Chunk)的自动分割(Splitting)、平衡(Balancing)机制,以及在集群中增加或移除分片(Adding and Removing ...

    第5章 MongoDB分片.zip

    - **添加和移除分片**:随着业务需求变化,可以动态添加或移除分片以调整集群规模。 - **平衡器(Balancer)**:MongoDB内置的平衡器负责在分片之间移动数据块,保持集群均衡。 - **监控与诊断**:使用`db....

    Mongodb 删除添加分片与非分片表维护

    在移除分片前,确保分片平衡器是开启的。通过`sh.getBalancerState()`命令检查状态,返回`true`表示开启。 2. **开始移除分片**: 使用`removeShard`命令来标记分片为待移除。在admin数据库下执行此命令,例如:`...

    详解MongoDB4.0构建分布式分片群集

    为了确保分片群集的健康运行,需要定期监控各个组件的状态,检查分片平衡,以及进行必要的维护操作,如添加或移除分片,调整分片策略等。 总的来说,MongoDB 4.0的分片群集是应对大数据量和高并发场景的重要工具。...

    30分钟学MongoDB系列——分布式架构分片(Sharding)

    添加分片服务器可以通过指定新的服务器地址来完成,而移除分片服务器则涉及到从集群中删除指定服务器的所有数据。 在对分片集群进行操作时,必须考虑数据的完整性和系统的稳定性。比如在移除分片服务器时,需要确保...

    基于MongoDB分布式集群架构的日志系统及分片方法.docx

    3. 动态扩展:MongoDB的分布式架构允许在不中断服务的情况下添加或移除分片服务器,以应对日志数据量的增长或减少。配置服务器会自动传播这些变化,使系统保持高效运行。 三、日志系统的优点 1. 高可用性:通过...

    MongoDB基础(自己总结不喜勿喷)

    4. **动态扩展**:随着数据的增长,可以动态添加或移除分片,以适应变化的数据量和工作负载。 总结来说,MongoDB的基础操作涵盖了数据库的基本管理、数据的增删改查,而副本集和分片则是其在高可用性和可扩展性方面...

    mongoDB安装包

    每个分片可以独立管理一部分数据,当数据量增加时,可以动态添加或移除分片。 4. **高性能**:MongoDB使用内存映射技术,将数据存储在内存中,读写速度非常快。同时,其索引机制也大大提高了查询效率。 5. **灵活...

    mongodb数据库分离和系统切换方案

    随着数据量的增长,可能需要动态添加或移除分片。MongoDB提供了灵活的扩展机制,可以在不影响服务的情况下进行扩容或缩容。 总结来说,“mongodb数据库分离和系统切换方案”涵盖了MongoDB集群的核心概念,包括数据...

    mongodb2.6版本软件包

    - **动态分片**:在2.6版本中,用户可以在不停止服务的情况下进行分片配置更改,如添加或移除分片,增强了系统的可扩展性。 - **复制集增强**:复制集的选举过程得到了优化,减少了在主节点故障时的恢复时间。同时...

    辛星笔记之MongoDB教程

    MongoDB性能优化和架构管理方面,开发者需要关注数据库的索引、复制、分片等技术。索引可以加速查询操作,而复制可以保证数据的高可用性。分片则是一种扩展数据库的方法,可以将数据分散存储在多个服务器上。 固定...

    mongodb例子

    在“mongodbtest”中,可能还包含了如何设置和管理复制集、分片的步骤,以及如何备份和恢复MongoDB数据的相关教程。这些操作对于理解MongoDB在生产环境中的应用至关重要。 总的来说,这个“mongodb例子”将帮助初学...

    深入云计算:MongoDB管理与开发实战详解 源代码

    3. 自动分片:MongoDB的分片功能允许数据自动分散到多个节点上,有助于处理海量数据并提高读写性能。 4. 弹性伸缩:在云计算环境中,MongoDB可以轻松地添加或移除硬件资源,适应业务量的变化。 5. 强大的查询语言...

    mongodb sharding(集群的配置步骤和真实生产环境的搭建过程).

    当需要添加或移除分片时,可以通过`sh.removeShard()`命令操作。 在真实生产环境中,除了以上步骤,还需要考虑安全性、网络配置、备份恢复策略以及性能优化等更多细节。例如,设置认证以保护数据,规划网络架构以...

    MongoDB 24 道面试题及答案.docx

    MongoDB的分片是基于区域的,所以一个集合的所有对象都放置在同一个块中,只有当存在多余一个块的时候,才会有多个分片。 获取数据的选项是什么? 可以通过db._adminCommand("connPoolStats");来查看Mongo正在使用...

    navicat121_mongodb_cs_x64+navicat121_mongodb_cs_x86.rar

    4. 自动分片:根据数据量自动分配到多个节点,提高处理能力。 5. 弹性伸缩:易于添加或移除节点,以应对业务量的变化。 6. 复制集:提供数据冗余,提高可用性和容错性。 标签“navicat_mongodb”和“mongodb”明确...

Global site tag (gtag.js) - Google Analytics