MongoDB中的常见问题(三)——分片和复制

分片

本部分主要介绍关于分片的一些常见问题。

对于新应用而言,是否应该进行分片?

不一定,如果我们的数据集能够放在一个单一的服务器上,我们应该从不分片的应用开始,因为在数据集非常小的时候,分片只能提供有限的优点。

在对集合进行分片之后,我们是否可以修改片键?

不能。在对集合进行分片之后,MongoDB中没有修改片键的自动支持。该事实强调了选择一个合适片键的重要性。如果在对集合进行分片之后我们不得不修改片键,那么最好的选择是:

  • 从MongoDB中导出所有数据到一个外部的格式
  • 删除原始的分片集合
  • 使用一个更理想的片键配置分片
  • 对片键范围提前分割以保证原始数据的均匀分布
  • 将导出的数据恢复到MongoDB中

为什么我们的文档在片键间不是均匀分布?

一旦数据块的分布到达一定的阈值,均衡器会开始在分片间分发数据。
此外,如果数据块中的文档数超过一定阈值,那么MongoDB就不能移动该数据块。具体说来,当分片中的文档数据超过250000或者超过配置的数据块大小除以平均文档大小的1.3倍。

mongos如何检测分片集群配置中的变化?

mongos实例维护存储着分片集群元数据的配置数据库的缓存。
mongos通过向分片发送一个请求然后判断元数据是否过期来更新它的缓存。为了强制mongos重载缓存,我们可以直接在每个mongos上运行flushRouterConfig命令。

日志中的writebacklisten表示什么?

写回监听器是一个进程,用于打开一个长轮询来延迟从mongod或者mongos迁移之后的写回,以保证它们没有到达错误的服务器。如果有必要的话,写回监听器会发送一个写回到正确的服务器。

这些信息是分片架构非常关键的一个部分,应该要引起注意。

mongos如何使用连接?

每个mongos实例维护一个到分片集群成员的连接池。客户端请求每次使用这些连接中的一个,例如,请求不是多路复用和管道化的情况,

当客户端请求完成后,mongos将会将连接返回给连接池。这些连接池不会随着客户端数量的减少而缩减。这可能会导致大量开连接未使用的mongos。如果mongos不再使用,重启进程来关闭现有连接是一个安全的操作。

如果我们希望了解mongos使用的所有外接连接池相关的聚合统计,可以连接到mongos的mongo shell中,然后运行connPoolStats命令:

  1. db._adminCommand("connPoolStats");

复制和复制集

本部分主要介绍复制相关的常见问题。

MongoDB支持什么类型的复制?

MongoDB支持高达50个节点的复制集。

MongoDB也支持主从复制,但是复制集是推荐的复制拓扑。但是,如果我们的部署需要超过50个节点,那么我们必须使用主从复制。

复制集合能否通过互联网和WAN连接?

是的。
例如,一个部署可以在东海岸的数据中心维护一个主节点和从节点,而在西海岸的数据中心维护一个从节点成员用于灾难恢复。

MongoDB是否能够通过一个“有噪音的”连接进行复制?

可以,不过需要保证没有连接失败和明显的延迟。

在面临网络延迟时,集合成员将会尝试重连集合的其它成员。这并不会要求管理员干涉。然而,如果复制集中节点的网络连接非常缓慢,节点的成员有可能无法与复制集的其它节点成员保持联系。

即使复制集已经提供了数据冗余,为什么还需要使用日志?

日志适用于更快的崩溃恢复。在日志之前,崩溃经常需要数据库修复或者完全的数据重新同步。两种方式都非常慢,但是第一种是不可靠的。

日志在防止电源故障的保护时特别有用,特别是如果我们的腹直肌在一个单一的数据中心或者是电源线路上。

当腹直肌和日志一起运行时,我们可以不进行如何额外的干预安全重启mongod示例。

注意:日志在写操作时需要一些资源消耗。日志对读性能没有影响。在MongoDB 2.0及以后的版本中默认启动。

仲裁节点与复制集的其它节点交换什么信息?

仲裁节点不会接收集合的任何内容信息,但是会与复制集的其它节点交换下面的数据:
– 复制集对仲裁节点进行授权的认证信息。这些交换是加密的。
– 复制集配置数据和投票数据。这些信息不进行加密,只有认证信息进行加密。
如果我们的MongoDB不熟使用TLS/SSL,那么仲裁节点和复制集其它成员之间的所有通信都是安全的。

复制集成员使用不同数量的磁盘空间是否正常?

是的。
因素包括:不同的操作日志大小、不同的存储分割级别以及MongoDB的数据文件预分配都可能会导致不同节点之间存储利用的一些变化。当我们在不同的时间增加成员是。存储使用差异将会被最大化。

我们能否重命名一个复制集?

不行。
我们可以使用备份和恢复流程来创建一个新名称的腹直肌。为了保证原始复制集和新复制集之间的相同可能会需要一些宕机时间。

 2017-08-06 21:20 字数 2230 阅读 0
打赏

mickey

记录生活,写给几十年后的自己。