专栏首页MongoDB中文社区使用MongoDB进行分片

使用MongoDB进行分片

• 新部署是否适合进行分片?

• 在对集合进行分片后是否可以更改片键?

• 为什么文档没有分布到各个分片?

• mongos是如何检测到分片集群配置更改的?

• 日志中出现的writebacklisten是什么意思?

• mongos是如何使用连接的?

本文档回答了有关分片的常见问题。或者可以参考手册的分片章节,其提供了 分片的概述,包括如下细节:

• 片键和选择片键的注意事项

• 查询路由

• 高可用性

• 数据分块(Chunk)和数据块(Chunk)迁移过程

对分片集群进行故障排除

新部署是否适合进行分片?

有时是适合的。但是,如果您的数据集适合放在单个服务器,则应该以非分片部署作为分开始,因为数据集很小,分片几乎没有优势。

在对集合进行分片后是否可以更改片键?

不可以。

MongoDB中没有对集合分片后更改片键的自动支持。这一现实情况强调了选择好的片键的重要性。如果在集合分片后必须更改片键,最佳选择是:

• 将MongoDB中的所有数据转储为外部格式。

• 删除原始分片集合。

• 使用更理想的片键配置分片。

• 预分割(pre-split)片键范围以确保初始均匀分布。

• 将转储的数据恢复到MongoDB中。

也可以参考: 片键

为什么文档没有分布到各个分片?

一旦数据块(chunk)的分布达到某个阈值,均衡器就开始在分片上迁移均衡数据。请参阅 迁移阈值

此外,如果块中的文档数超过一定数量,MongoDB将无法移动块。请参阅 每个要迁移的块的最大文档数不可分割的块

mongos是如何检测到分片集群配置更改的?

mongos实例维护配置数据库(config)的缓存,该缓存包含分片集群的元数据。

mongos通过向分片发出请求并发现其元数据已过期来懒更新其缓存。要强制 mongos重新加载其缓存,可以对每个mongos 直接执行flushRouterConfig命令。

日志中出现的writebacklisten是什么意思?

回写监听器(writeback listener)是一个进程,它打开一个长轮询,在迁移之后从mongod或mongos将写入取回,以确保它们没有进入错误的服务器。如有必要,回写监听器会将写入发送回正确的服务器。

这些消息是分片的基础关键部分,不需要引起关注。

(译者理解:写入数据根据片键发送到对应分片mongod,但到达时发现对应chunk已经迁移到其他分片mongod了,回写监听器监听到这种情况,就会把数据取回到mongos,然后再发往正确的mongod。这一些列动作,对用户来说都是透明的,所以不用关注)

mongos是如何使用连接的?

每个mongos实例都维护一个与分片集群成员的连接池。客户端请求一次使用一个连接; 即请求不是多路复用或流水线化的。

客户端请求完成后,mongos将连接归回到连接池。当客户端数量减少时,这些池不会收缩。这可能导致未使用的mongos占用大量打开的连接。如果mongos不再使用,则可以安全地重新启动进程以关闭现有连接。

要返回mongos所使用的所有对外连接池相关的聚合统计信息,请将mongo shell 连接 到mongos,然后运行 connPoolStats命令:

db.adminCommand (“connPoolStats” ); 请参阅UNIX ulimit设置 文档的“ 系统资源利用率”部分。

译者

钟秋

BBD技术经理,资深架构师,MongoDB中文社区联席主席

本文分享自微信公众号 - Mongoing中文社区(mongoing-mongoing)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rainbond最佳实践】Spring Boot框架配置MySQL

    Spring Boot框架简化了新Spring应用的初始搭建以及开发过程,云帮支持平台部署Spring Boot类应用。

    Rainbond开源
  • Confluence 6 在升级之前

    在这个指南中,我们将会与你一同对最新的 Confluence 站点在 Windows 或者 Linux 平台进行安装和更新。

    HoneyMoose
  • Rainbond 5.1.3发布,快速部署和运维spring cloud集群

    今天为大家带来Rainbond 5.1系列第三个更新版本,本次版本更新的关键是降低Rainbond学习门槛,我们不仅增加了新用户指导任务来指引用户学习Rainb...

    Rainbond开源
  • 好雨云帮每周更新日志(2017.02.27-2017.03.12)

    Rainbond开源
  • Reviewboard时区问题 原

    在创建ReviewBoard站点后发现,Reviewboard时区默认为UTC(服务器时区为+8区,即东八区)

    donghui
  • Confluence 6 升级以后

    如果你现在使用的是 Oracle 或者 MySQL 数据库的话,你讲要重新拷贝 jdbc 驱动的 jar 文件到你已经存在的 Confluence 安装目录中 ...

    HoneyMoose
  • 简析 Jenkins 专有用户数据库加密算法

    其中,安全域可以采用三种形式,分别为:Jenkins 专有用户数据库、LDAP、Servlet 容器代理。

    LinuxSuRen
  • 开源Rainbond发布v3.4.2更新:应用插件体系进入beta版本

    3、 页面刷新后会在当前租户当前数据中心自动安装上两个Rainbond提供的插件

    Rainbond开源
  • 大数据 | SparkSQL连接查询中的谓词下推处理(二)

    在《SparkSql连接查询中的谓词下推处理(一)》中,我们介绍了一些基本的概念,并对内连接查询时的一些基本下推规则进行了分析。

    杨振涛
  • Confluence 6 计划你的升级

    使用下面的表格来确定最佳的升级路径来让你的Confluence 从当前版本升级到最新的 Confluence 版本。

    HoneyMoose

扫码关注云+社区

领取腾讯云代金券