在本页面
如果MongoDB无法拆分超过指定块大小的块,则MongoDB会将块标记为 巨型。
如果块大小不再超过指定的块大小,则MongoDB jumbo
在mongos
重写块元数据时清除该块的标志。
如果需要手动清除标志,则以下过程概述了手动清除jumbo
标志的步骤。
jumbo
从块中清除标志的首选方法是尝试拆分块。如果块是可分割的,则MongoDB在成功拆分块后会删除该标志。
jumbo
块。¶运行sh.status(true)
以查找标记为的块
jumbo
。
例如,sh.status(true)的以下输出显示,分片键范围为的块为
。{ "x" : 2 } -->> { "x" : 4 }
jumbo
在某些情况下,MongoDB无法拆分不再较长的jumbo
块,例如具有单个分片键值范围的块,并且清除标志的首选方法不适用。在这种情况下,可以使用以下步骤清除标志。
从4.2.3和4.0.15版本开始,MongoDB提供了clearJumboFlag
手动清除该jumbo
标志的
命令
。
重要
只有当使用此方法首选的方法是不适用的。
jumbo
块。¶运行sh.status(true)
以查找标记为的块
jumbo
。
例如,sh.status(true)的以下输出显示,分片键范围为的块为
。{ "x" : 2 } -->> { "x" : 3 }
jumbo
clearJumboFlag
命令。¶在admin
数据库中,运行clearJumboFlag
,传入分片集合的名称空间,并执行以下任一操作:
该范围的的jumbo
大块:
包含分片和值的查找文档,该文档包含在jumbo
块中:
注意
如果集合使用散列的分片键,请不要将该
find
字段与一起使用clearJumboFlag
。对于散列的分片键,请改用该bounds
字段。
jumbo
块。¶运行sh.status(true)
以查找标记为的块
jumbo
。
例如,sh.status(true)的以下输出显示,分片键范围为的块为
。{ "x" : 2 } -->> { "x" : 3 }
jumbo
chunks
集合。¶在数据库chunks
集合中config
,取消设置jumbo
块的
标志。例如,
从chunks
集合中清除掉巨型标志之后,更新集群路由元数据缓存。
您必须刷新名称空间在配置服务器主服务器上的缓存。这会通知平衡器巨型标志清除。
将mongo
外壳连接到主要的配置服务器并运行flushRouterConfig
该集合:
如果清除jumbo
仍超过块大小的块的标志,则MongoDB将jumbo
在MongoDB尝试移动块时重新标记该块。