从mongodb移除分片

Mongodb 删除添加分片与非分片表维护 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。通过本文给大家介绍Mongodb 删除添加分片与非分片表维护的相关知识,对此文感兴趣的朋友一起学习吧 立即下载

转自:http://xupo.iteye.com/blog/1727123

MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了。

但是缩减集群(删除分片)这种一般很少用到。由于曙光的某服务器又挂了,所以我们送修之前必须把它上面的数据自动迁移到其他Shard上。

 

1、执行RemoveShard命令

1db.runCommand( { removeshard: "your_shard_name" } )
2 
3{ msg : "draining started successfully" , state: "started" , shard :"mongodb0", ok : 1 }

上面这句会立即返回,实际在后台执行。

2、查看迁移状态

我们可以反复执行上面语句,查看执行结果。

1db.runCommand( { removeshard: "your_shard_name" } )
2 
3{ msg: "draining ongoing" , state: "ongoing", remaining: { chunks: 42, dbs : 1 }, ok: 1 }

从上面可以看到,正在迁移,还剩下42块没迁移完。

当remain为0之后,这一步就结束了。

3、移出非Shard数据

 

1db.runCommand( { movePrimary: "myapp", to: "mongodb1" })

这次就不是立即返回了,需要很久,然后会返回如下:

1{ "primary" : "mongodb1", "ok" : 1 }

4、最后的清理

上面步骤都完成后,还需要再执行一次RemoveShard,清理残余数据。

1db.runCommand( { removeshard: "mongodb0" } )

执行成功后,会如下结果:

1{ msg: "remove shard completed succesfully", stage: "completed", host: "mongodb0", ok : 1 }

显示completed后,就可以安心的关闭mongod的进程了。

 

 

一些遇到的问题:

Popgo: In my MongoDB sharding cluster, i used db.runCommand( { removeshard: "shard3" } )command to remove a shard "shard3", but it just puts the shard in draining mode, which will never end and three days past. All chunks of the shard "shard3" are moved into "shard1" or "shard2", but the APP read request can use it to query data. So i want to know which process of the sharding now or how to diagnose this problem?

 

MrKurt:You probably have a database using shard3 as its primary shard, check the output ofdb.printShardingStatus() to see where each database resides.

Once you figure out which database it is, move it to a different shard with the movePrimary command. Then run removeShard again and you should be good to go.

 

Popgo:

It is confirmed that there is a unsharded database test on the shard "shard3" and "shard3" is not the primary shard, then i drop "test" database and re-run removeshard command. It is success to remove the "shard3". From document, "Do not run the movePrimary until you have finished draining the shard". But our program also use the "shard3" with 3 nodes replicaset to query data. Why not to router APP requests to other available shards by mongos server?

 

Andre: You do need to run movePrimary to complete draining in the case of a db being on the primary. If you look at the results of the removeshard and see "chunks" : NumberLong(0) but "dbs": NumberLong(some number other than 0 ) you probably have a DB whose primary is the shard you are removing and will probably have to run movePrimary even though removeshard hasn't said "draining is complete". Check out this discussion on mongodb-user for more information:

 

相关的官方文档:http://docs.mongodb.org/manual/tutorial/remove-shards-from-cluster/

 

注意官方关于是否需要运行movePrimary的说明:

 

Databases with non-sharded collections store those collections on a single shard known as the primary shardfor that database. The following step is necessary only when the shard to remove is also the primary shard for one or more databases.

 

也就是说,如果在这个片上有非分片的collection,这样的话,分片的数据合到其他片上了,那么剩下的非分片数据,没法通过合并分片的方式合到其他服务器上,所以这时要运行一个movePrimary命令将这些非分片的数据移到另一个服务器上。db.runCommand( { movePrimary: "myapp", to: "mongodb1" })

 

This command migrates all remaining non-sharded data in the database named myapp to the shard namedmongodb1

还有一个官方说明需要注意的是:

 

Warning

Do not run the movePrimary until you have finished draining the shard

也就是说,一定要等到分片数据迁移完了,再运行movePrimary命令!!!

而且这句命令不像removeshard是异步的,这个movePrimary命令会等到将所有非分片数据都移到其他服务器后,才响应,所以时间有可能会比较长,主要还是看这个服务器上,非分片数据有多少。

另外,movePrimary执行完后,还记得将db.runCommand({removeshard:"shardx"})再运行一遍,直到看到如下结果{ msg: "remove shard completed successfully" , stage: "completed", host: "mongodb0", ok : 1 }

到此为止,迁移才真正完成,可以放心地关闭mongod。

 

  about how to identify the non-sharding databases int server2, to run:db.printShardingStatus();

references:
If you need to figure out which database the removeshard output refers 
to, you can use the printShardingStatus command. It will tell you what 
is the "primary" shard for each non-partitioned database. 

If any of the DBs have the drained shard listed as the primary, you 
will need to issue a move primary command (again listed on the page 
linked).
 

 

最后一个疑问是:在迁移的过程中,mongos是打到哪个分片上?迁移的具体执行是copy还是move?比如从服务器B合到A,在这个过程中,流量是打到B,还是全打到A?已合到A的分块去A中取,还是从B中取?

还有一个问题:如果总共就两个分片,将一个分片合回到新分片后,相关collections的分片策略可以更改了吗?因为分片的策略一旦确定后是无法修改的,但对于这种情况又是如何的呢?

 

有了解的朋友麻烦介绍一下呗!!!

MLC-LLM框架在安卓设备上的模型编译与部署全流程解析 本文详细解析了如何利用MLC-LLM框架在安卓设备上编译与部署大语言模型。从环境搭建、模型获取与量化编译,到最终的安卓应用打包与调试,提供了完整的实战流程。重点介绍了如何通过MLC-LLM将大型模型优化为适合移动端运行的格式,实现本地、低延迟、隐私安全的AI应用部署。 阅读详情

相关推荐

Labelme安装教程(附Anaconda安装教程)

本文详细介绍了如何安装Anaconda和Labelme,还提供了常见问题的解决建议。

HanYan_ing的博客 1万+

【MongoDB】查看集合是否分片 及片健创建、删除

查看分片键 MongoDB会把分片过的集合保存在config.collection集合中,若需要查看分片键,则需要根据该集合进行查找。官方的其他很多分片快捷命令也都处于config库 三种方式 去config库中查询 这种办法可以查看分片键信息 db.collections.find({$and: [ ...

zhuchunyan_aijia的博客 1万+

相控阵雷达仿真入门:TWS与TAS模式实战解析(附代码示例)

本文深入解析相控阵雷达仿真中的TWS(边搜索边跟踪)与TAS(搜索加跟踪)模式,提供实战代码示例和优化策略。通过简化模型设计和对象化建模,帮助开发者快速构建高效仿真系统,适用于军事推演和装备评估。文章涵盖核心逻辑、数据结构设计及性能优化技巧,提升仿真效率与准确性。

weixin_30687051的博客 453

mongodb删除片键

mongodb删除片键 1、查询库上所有的片键 mongos> use config switched to db config mongos> show collections actionlog changelog chunks collections databases lockpings locks mongos settings shards system.indexes t...

进阶的蜗牛 2230

NoUnityCN:绕过地域限制,从Unity官方CDN直链下载全版本编辑器

在软件开发和游戏制作领域,内容分发网络(CDN)是保障全球用户高速、稳定获取大型文件的核心基础设施。其原理是通过将资源缓存至遍布各地的边缘节点,使用户能从地理距离最近的服务器获取数据,从而显著提升下载速度并降低源站压力。这一技术对于需要频繁下载大型开发工具(如游戏引擎)的团队而言,价值在于能确保开发环境部署的一致性与效率,是构建自动化CI/CD流水线和团队协作的基础。然而,当开发者因网络策略或地域限制无法直接访问官方CDN时,获取安装文件便成为阻碍工作流的痛点。NoUnityCN项目正是针对此场景的工程实践

weixin_33473110的博客 315

【异常】OpenClaw网关仪表盘 pairing required 报错排查与解决方案

在OpenClaw网关仪表盘页面,完成WebSocket URL、网关令牌等必填项配置后,点击「连接」按钮尝试建立网关连接时,页面下方出现红色报错提示框,核心报错内容为,无法完成网关连接建立,且该报错在令牌配置正确、网络链路通畅的场景下仍会触发。该报错常见于非本地回环地址的访问场景,包括局域网远程访问、公网域名/IP访问、云服务器部署的网关远程管理等场景,本地127.0.0.1回环地址访问通常可正常连接。

奶爸的编程之路,也就一周冷个三天 1080

mongodb移除分片

MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了。 但是缩减集群(删除分片)这种一般很少用到。由于曙光的某服务器又挂了,所以我们送修之前必须把它上面的数据自动迁移到其他Shard上。 1、执行RemoveShard命令 1 db.runCommand( { removeshard: "your_shard_name"} ) ...

weixin_30316097的博客 250

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1915

【MongoDB】删除一个节点 /增加一个节点

移除后,集群变成了两个节点,一主一从。3.新增节点:新增的节点为原来的节点。4.我们增加一个以前没有的节点。2.在主节点上移除节点。6.添加新节点到集群中。

weixin_43346403的博客 986

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

文章摘要:零件平均测试(PAT)是半导体制造中基于统计学的质量控制方法,分为静态和动态两种类型。静态PAT通过预先设定的固定限值(每6-8批次更新)筛选异常芯片,计算采用稳健平均值和四分位间距。动态PAT则根据实时数据调整限值,能更精确识别异常而不误判合格芯片。两种方法均采用"均值±6倍标准差"的计算公式,但动态PAT具有更好的适应性和准确性。该方法通过统计分析提高了芯片产品的质量和可靠性。

歌颂苦难的行为是无耻的; 1191

MIKE21 教程 3.2 随空间变化的网格文件制作(.dfsu文件制作) 曼宁值网格文件制作

上一节讲解了如何制作时间序列文件。本节讲解如何制作仅随空间变化的文件。 目录 1 数据准备 1.1 基于地形设置 1.2 基于地形水深设置: 2 数据导入 3 数据导出

Hello Word 3941

mongodb分片集群之移除分片

参考官方文档: 这里写链接内容 1、查看balancer是否开启 mongos> sh.getBalancerState() true 2、查找要删除的分片id mongos> sh.status() --- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion...

q936889811的博客 5188

DeepSeek Harness 工程实践与高级特性:从测试到安全的完整指南

AI Agent 能执行命令、读写文件、自主决策,能力越强风险越大——删文件、泄密钥、死循环、竞态条件随时可能发生。本文是 DeepSeek Harness 系列第三篇,深入剖析其工程实践与高级特性:从单元测试到真实 API 冒烟测试的分层策略,拒绝 Mock 依赖、坚持"验证世界而非自我报告";从正交结果、规范化契约到 Dispose 静止的防御式编程铁律;以及跨平台多层进程沙箱、文件系统版本守卫、fail-closed 审批机制、模型编写的工作流引擎与上下文压缩等高级能力。

program哲学 207

win7环境下mongodb分片和移除

本文主要介绍在一台win7电脑上模拟mongo分片。如果有多台服务器,可以将每个mongo部署在单台电脑上。我们将配置3个mongo分片,3个配置服务器,1个路由服务器。如下图所示进行配置,介绍如何增加分片、移除分片。 一.下载windows zip版本,解压到一个目录中,并且复制7份,命名如下图: 二.分别在bin目录下建立 config.bat文件 ...

150

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mongodb移除分片删除分片上数据库和添加分片

首先我们要移除的分片之后再次添加此分片时会出现添加失败的情况,需要在添加的分片上登录进行删除此分片之前数据库的历史数据比如testdb,删除分片上的数据库之后就可重新添加此分片到mongos中 1、执行RemoveShard命令  db.runCommand( { removeshard: "your_shard_name" } )  { msg : "drainin

liqi_q的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

mongodb移除分片和添加分片(转)

首先我们要移除的分片之后再次添加此分片时会出现添加失败的情况,需要在添加的分片上登录进行删除此分片之前数据库的历史数据比如testdb,删除分片上的数据库之后就可重新添加此分片到mongos中1、执行RemoveShard命令 db.runCommand( { removeshard: "your_shard_name" } ) { msg : "draining started success...

zping的博客 69

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Mongodb 使用 removeShard移除分片后 一直出现 draining状态

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34327761的博客 1691

Mongodb迁移分片、关闭或者移除表的分片

Mongodb集合分片撤销

抽象的螺旋 1438

一.mongodb分片之win7环境下模拟多节点添加与移除分片

本文主要介绍在一台win7电脑上模拟mongo分片。如果有多台服务器,可以将每个mongo部署在单台电脑上。我们将配置3个mongo分片,3个配置服务器,1个路由服务器。如下图所示进行配置,介绍如何增加分片、移除分片。

天义的专栏 2313

docker删除mongo数据库库_mongodb移除分片删除分片上数据库和添加分片

mongodb移除分片删除分片上数据库和添加分片2018年01月12日 19:09:23冰雪Love齐迹阅读数 5369更多版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。首先我们要移除的分片之后再次添加此分片时会出现添加失败的情况,需要在添加的分片上登录进行删除此分片之前数据库的历史数据比如testdb,删除分片上的数据库之后就可重新添加此...

weixin_35599418的博客 332

mongodb 在线添加新的分片复制集 后续

前面添加新的分片复制集因为版本不一致无法兼容,见:http://blog.youkuaiyun.com/mchdba/article/details/51867303,现在统一版本,继续在线上添加新的分片复制集。 1、在master2上建立3个mongodb 准备3个mongodb进程数,先准备数据目录和日志目录: ...

csdn's blog 1万+
上一篇: MongoDB实战_PS : 操作性很强的入门手记
下一篇: serialVersionUID的作用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值