- Frequently Asked Questions >
- FAQ: Sharding with MongoDB
FAQ: Sharding with MongoDB¶
On this page
- Is sharding appropriate for a new deployment?
- Can I change the shard key after sharding a collection?
- Why are my documents not distributed across the shards?
- How does mongos detect changes in the sharded cluster configuration?
- What does writebacklisten in the log mean?
- How does mongos use connections?
- Shard Keys and Considerations for Shard Key Selection
- Query Routing
- High Availability
- Data Partitioning with Chunks and Chunk Migration Process
- Troubleshoot Sharded Clusters
Is sharding appropriate for a new deployment?¶
Sometimes. However, if your data set fits on a single server, you should begin with an unsharded deployment as sharding while your data set is small provides little advantage .
Can I change the shard key after sharding a collection?¶
There is no automatic support in MongoDB for changing a shard key after sharding a collection. This reality underscores the importance of choosing a good shard key. If you must change a shard key after sharding a collection, the best option is to:
- dump all data from MongoDB into an external format.
- drop the original sharded collection.
- configure sharding using a more ideal shard key.
- pre-split the shard key range to ensure initial even distribution.
- restore the dumped data into MongoDB.
Why are my documents not distributed across the shards?¶
The balancer starts distributing data across the shards once the distribution of chunks has reached certain thresholds. See Migration Thresholds.
How does mongos detect changes in the sharded cluster configuration?¶
mongos updates its cache lazily by issuing a request to a shard and discovering that its metadata is out of date. To force the mongos to reload its cache, you can run the flushRouterConfig command against each mongos directly.
What does writebacklisten in the log mean?¶
The writeback listener is a process that opens a long poll to relay writes back from a mongod or mongos after migrations to make sure they have not gone to the wrong server. The writeback listener sends writes back to the correct server if necessary.
These messages are a key part of the sharding infrastructure and should not cause concern.
How does mongos use connections?¶
Each mongos instance maintains a pool of connections to the members of the sharded cluster. Client requests use these connections one at a time; i.e. requests are not multiplexed or pipelined.
When client requests complete, the mongos returns the connection to the pool. These pools do not shrink when the number of clients decreases. This can lead to an unused mongos with a large number of open connections. If the mongos is no longer in use, it is safe to restart the process to close existing connections.