Mongodb数据分片的维护
Mongodb的Sharding维护也是就那几个命令,相对来说都很简单,结合实例做下演示。
1,列出所有的Shard Server
注意一点是:需要连接到路由的admin下。listshards的参数1是一个固定的默认值,没有特殊的意义。
2,查看Sharding的信息
切换到Friends数据库,使用printShardingStatus(),可以看到当前Sharding的信息。
3,对现有的表执行Sharding。
上面我们对FriendUserAttach表执行了分片,下面我们在对另外一个表FriendUser进行分片。
首先我们查看下FriendUser的状态
第一行 sharded=false,说明该表未被分片。然后我们连接到路由器的admin上执行分片命令
对数据库Friends的表FriendUser做了分片,片键是_id,我们运行命令查看下状态
看以看到已经成功分片。
4,新增Shard Server
新增Shard Server的用处就不在说了,这是大数据下肯定会用到的命令。下面说步骤
首先我们在启动一个新的Mongodb ,端口号定为2002。
把这个新的进程添加到咱们已经做好的“串”中,注意:这点是要连接到路由的admin中
然后我们看下当前的分片情况
可以看到多了一个shard0002的分片。
5,移除分片
移除分片不是立刻实现的,他需要一个把分片上的数据转移到其他分片的过程,当转移完成后该分片才会被正式踢下线。这时候也需要多次调用命令,查看移除操作执行到了那里。
移除命令是:db.runCommand({"removeshard":"ip+端口"}),注意是这里需要用admin数据库来执行操作
这里看以清晰的看到状态:
started:移除的动作刚刚开始
ongoing:移除正在进行
completed:完成
到最后一个提示"can't find shard" 说明已经是被踢下线了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通