- Sharding >
- Sharded Cluster Administration >
- Clear
jumbo
Flag
Clear jumbo
Flag¶
On this page
If MongoDB cannot split a chunk that exceeds the specified chunk
size or contains a number of documents that
exceeds the max
, MongoDB labels the chunk as jumbo.
If the chunk size no longer hits the limits, MongoDB clears the
jumbo
flag for the chunk when the mongos
reloads or
rewrites the chunk metadata.
In cases where you need to clear the flag manually, the following
procedures outline the steps to manually clear the jumbo
flag.
Procedures¶
Divisible Chunks¶
The preferred way to clear the jumbo
flag from a chunk is to
attempt to split the chunk. If the chunk is divisible, MongoDB removes
the flag upon successful split of the chunk.
Find the jumbo
Chunk.¶
Run sh.status(true)
to find the chunk labeled
jumbo
.
sh.status(true)
For example, the following output from sh.status(true) shows that
chunk with shard key range { "x" : 2 } -->> { "x" : 4 }
is
jumbo
.
--- Sharding Status ---
sharding version: {
...
}
shards:
...
databases:
...
test.foo
shard key: { "x" : 1 }
chunks:
shard-b 2
shard-a 2
{ "x" : { "$minKey" : 1 } } -->> { "x" : 1 } on : shard-b Timestamp(2, 0)
{ "x" : 1 } -->> { "x" : 2 } on : shard-a Timestamp(3, 1)
{ "x" : 2 } -->> { "x" : 4 } on : shard-a Timestamp(2, 2) jumbo
{ "x" : 4 } -->> { "x" : { "$maxKey" : 1 } } on : shard-b Timestamp(3, 0)
Split the jumbo
Chunk.¶
Use either sh.splitAt()
or sh.splitFind()
to
split the jumbo
chunk.
sh.splitAt( "test.foo", { x: 3 })
MongoDB removes the jumbo
flag upon successful split of the
chunk.
Indivisible Chunks¶
In some instances, MongoDB cannot split the no-longer jumbo
chunk,
such as a chunk with a range of single shard key value, and the
preferred method to clear the flag is not applicable. In such cases,
you can clear the flag using the following steps.
Important
Only use this method if the preferred method is not applicable.
Before modifying the config database, always back up the config database.
If you clear the jumbo
flag for a chunk that still exceeds the
chunk size and/or the document number limit, MongoDB will re-label the
chunk as jumbo
when MongoDB tries to move the chunk.
Stop the balancer.¶
Disable the cluster balancer process temporarily, following the steps outlined in Disable the Balancer.
Find the jumbo
Chunk.¶
Run sh.status(true)
to find the chunk labeled
jumbo
.
sh.status(true)
For example, the following output from sh.status(true) shows that
chunk with shard key range { "x" : 2 } -->> { "x" : 3 }
is
jumbo
.
--- Sharding Status ---
sharding version: {
...
}
shards:
...
databases:
...
test.foo
shard key: { "x" : 1 }
chunks:
shard-b 2
shard-a 2
{ "x" : { "$minKey" : 1 } } -->> { "x" : 1 } on : shard-b Timestamp(2, 0)
{ "x" : 1 } -->> { "x" : 2 } on : shard-a Timestamp(3, 1)
{ "x" : 2 } -->> { "x" : 3 } on : shard-a Timestamp(2, 2) jumbo
{ "x" : 3 } -->> { "x" : { "$maxKey" : 1 } } on : shard-b Timestamp(3, 0)
Update chunks
collection.¶
In the chunks
collection of the config
database, unset the
jumbo
flag for the chunk. For example,
db.getSiblingDB("config").chunks.update(
{ ns: "test.foo", min: { x: 2 }, jumbo: true },
{ $unset: { jumbo: "" } }
)
Restart the balancer.¶
Restart the balancer, following the steps in Enable the Balancer.
Optional. Clear current cluster meta information.¶
To ensure that mongos
instances update their cluster
information cache, run flushRouterConfig
in the
admin
database.
db.adminCommand({ flushRouterConfig: 1 } )