MongoDB-CN-Manual
搜索文档…
MongoDB-CN-Manual
MongoDB中文手册|官方文档中文版
MongoDB用户手册说明
MongoDB简介
安装 MongoDB
The mongo Shell
MongoDB CRUD操作
MongoDB聚合
MongoDB数据模型
MongoDB事务
MongoDB事务
MongoDB索引
MongoDB安全
Change Streams变更流
MongoDB复制
MongoDB分片
MongoDB管理
MongoDB存储
MongoDB参考
MongoDB FAQ
FAQ: MongoDB基础知识
FAQ: MongoDB索引
FAQ: MongoDB并发
FAQ: MongoDB分片
FAQ: MongoDB复制和副本集
FAQ: MongoDB存储
FAQ: MongoDB诊断
MongoDB 版本管理
联系我们
由
GitBook
提供支持
FAQ: MongoDB分片
在本页面
新部署是否适合进行分片?
在对集合进行分片后是否可以更改片键?
为什么文档没有分布在各个分片上?
mongos
如何检测分片群集配置中的更改?
日志中出现的
writebacklisten
是什么意思?
mongos
是如何使用连接的?
本文档回答有关
分片
的常见问题。参见手册的
分片
章节,它提供了一个
分片的概述
,包括如下细节:
片键和选择片键的注意事项
查询路由
高可用性
数据分块
和
数据块迁移过程
数据分区
对分片群集进行故障排除
新部署是否适合进行分片?
¶
有时适合。但是,如果您的数据集适合放在一台服务器上,则应从非分片的部署开始,因为分片的数据集很小,
几乎没有优势
。
在对集合进行分片后是否可以更改片键?
不可以。
MongoDB中没有对集合进行分片后更改片键的自动支持。这一现实情况强调了选择好的
片键
的重要性。如果 _必须_在对集合进行分片之后更改片键,最佳选择是:
将MongoDB中的所有数据转储为外部格式。
删除原始分片集合。
使用更理想的片键配置分片。
预分割片键
范围,以确保初始均匀分配。
将转储的数据恢复到MongoDB中。
尽管您不能为分片集合选择其他片键,但是从MongoDB 4.2开始,您可以更新文档的片键值,除非分片键字段是不可变
_id
字段。有关更新片键值的详细信息,请参阅“
更改文档的片键值”
。
在MongoDB 4.2之前,文档的片键字段值是不可变的。
参见
片键
为什么文档没有分布在各个分片上?
一旦数据块的分布达到特定阈值,均衡器就开始在各个分片之间迁移均衡数据。请参阅
迁移阈值
。
此外,如果块中的文档数超过一定数量,MongoDB将无法移动块。请参阅
每个要迁移的块的最大文档数
和
不可分割的块
。
mongos
如何检测分片群集配置中的更改?
¶
mongos
实例维护
配置数据库
的缓存,该缓存包含分片
集群
的元数据。
mongos
通过向分片发出请求并发现其元数据已过期,从而延迟更新其缓存。要强制
mongos
重新加载其缓存,您可以针对每个
mongos`
直接运行
flushRouterConfig
命令。
日志中出现的
writebacklisten
是什么意思?
回写监听器是一个进程,它打开一个长轮询,在迁移
mongod
或
mongos
后回写,以确保他们没有将其发送到错误的服务器。如果需要,回写监听器会将写入发送到正确的服务器。
这些消息是分片基础结构的关键部分,不需要引起关注。
mongos
是如何使用连接的?
每个
mongos
实例都维护一个与分片集群成员的连接池。客户端请求一次使用一个连接;即,请求不是多路复用或流水线的。
客户端请求完成后,
mongos
将连接返回到池中。当客户端数量减少时,这些池不会缩小。这可能会导致未使用的
mongos
占用大量打开的连接。如果
mongos
不再使用,则可以安全地重新启动进程以关闭现有连接。
要返回与
mongos
所使用的所有对外连接池相关的聚合统计信息,请将
mongo
shell 连接 到
mongos
,然后运行以下
connPoolStats
命令:
复制
1
db.adminCommand("connPoolStats");
Copied!
请参阅“
UNIX ulimit设置”
文档的“
系统资源利用率”
部分。
原文链接:
https://docs.mongodb.com/manual/faq/sharding/
译者:钟秋
update:小芒果
以前
FAQ: MongoDB并发
下一个
FAQ: MongoDB复制和副本集
最近更新
7mo ago
复制链接
内容
新部署是否适合进行分片?¶
在对集合进行分片后是否可以更改片键?
为什么文档没有分布在各个分片上?
mongos如何检测分片群集配置中的更改?¶
日志中出现的writebacklisten是什么意思?
mongos是如何使用连接的?