在本页面
config数据库中的集合支持:
重要
config数据库的架构是
内部的,在MongoDB的发行版之间可能会更改。该
config数据库是不可靠的API,用户不应写入数据的config正常运行和维护的过程中数据库。
注意
您无法在多文档事务config内对数据库中的集合执行读/写操作
。
要访问config数据库并查看支持分片操作的集合列表,请将mongo外壳连接到分片mongos群集中的
实例,然后发出以下命令:
注意
如果使用访问控制运行,请确保您具有listCollections对数据库授予操作权限的特权。
config数据库主要供内部使用,在正常操作过程中,切勿手动在其中插入或存储数据。但是,如果需要验证分片群集的配置服务器的写可用性,则可以将文档插入测试集合(确保没有该名称的集合之后):
警告
config在正常运行的系统上对数据库进行修改可能会导致不稳定或数据集不一致。如果必须修改config数据库,请使用mongodump来创建数据库的完整备份config。
如果操作成功,则配置服务器可用于处理写入。
服务器的将来版本可能会在config数据库中包含不同的集合,因此在为测试集合选择名称时要小心。
MongoDB在config数据库中使用以下集合来支持分片:
config.changelog¶该changelog集合为分片集合的元数据的每次更改存储一个文档。
例
下面的示例显示从changelog集合中拆分的块的单个记录:
changelog集合中的每个文档都包含以下字段:
config.changelog._id¶的值为changelog._id:
<hostname>-<timestamp>-<increment>。
config.changelog.server¶存放此数据的服务器的主机名。
config.changelog.what¶反映记录的更改类型。可能的值包括:
dropCollectiondropCollection.startdropDatabasedropDatabase.startmoveChunk.startmoveChunk.commitsplitmulti-splitconfig.changelog.ns¶发生更改的名称空间。
config.chunks¶该chunks集合为集群中的每个块存储一个文档。考虑以下文档示例中名为的块mydb.foo-a_\"cat\":
这些文档存储了在min和max字段中描述分片的分片键的值范围。另外,该shard字段标识“拥有”块的集群中的分片。
config.collections¶该collections集合为集群中的每个分片集合存储一个文档。给定一个pets
在records数据库中命名的集合,该集合中的文档collections
将类似于以下内容:
config.databases¶该databases集合为集群中的每个数据库存储一个文档。
对于每个数据库,相应的文档显示名称,数据库的主分片,数据库的分片启用状态以及版本。
该方法sh.status()在“ 数据库”部分返回此信息
。
config.locks¶该locks集合存储分布式锁。配置服务器副本集的主副本通过将文档插入集合中来获取锁定locks
。
从3.4版本开始,该state字段将始终具有一个值,
2以防止任何旧mongos实例执行平衡操作。该when字段指定配置服务器成员成为主服务器的时间。
在版本3.4中,当平衡器处于活动状态时,平衡器将获得锁定,如以下3.4示例所示:
从3.6版开始,平衡器不再具有“锁定”功能。如果您已从3.4升级到3.6,则可以选择删除任何剩余文档。"_id" : "balancer"
config.mongos¶该mongos集合为mongos与集群关联的每个实例存储一个文档
。mongos实例每30秒将ping发送一次到集群的所有成员,以便集群可以验证
mongos处于活动状态。该ping字段显示上次ping的时间,而该up字段报告上次ping 的运行时间
mongos。集群维护此集合以用于报告目的。
以下文档显示了上的mongos
运行状态example.com:27017。
config.settings¶该settings集合包含以下分片配置设置:
块大小。要更改块大小,请参阅在分片群集中修改块大小。指定的chunksize值以兆字节为单位。
平衡器状态。要更改状态,请参阅禁用平衡器。
从MongoDB 4.2开始:
balancerStart 还可以为分片群集启用自动拆分。balancerStop 还禁用分片群集的自动拆分。自动拆分。启用或禁用自动分割标志,使用相应的sh.enableAutoSplit()方法或
sh.disableAutoSplit()方法。
从MongoDB 4.2开始:
balancerStart 还可以为分片群集启用自动拆分。balancerStop 还禁用分片群集的自动拆分。以下是settings
集合中的一些示例文档:
config.shards¶该shards集合在单独的文档中表示集群中的每个分片,如下所示:
如果该分片是副本集,则该host字段显示副本集
的名称,斜杠,副本集每个成员的主机名的逗号分隔列表,如以下示例所示:
如果分片已分配了区域,则此文档将具有一个tags字段,其中包含分配给它的区域的数组,如以下示例所示:
config.version¶该version集合保存当前的元数据版本号。该集合仅包含一个文档。例如:
要访问version集合,必须使用
db.getCollection()方法。例如,要检索集合的文档:
3.6版的新功能。
从MongoDB 3.6开始,config数据库包含
内部集合,以支持独立机,副本集和分片群集的因果一致会话,以及副本集和分片群集的可重试写入和事务。
警告
不要手动修改或删除这些集合。
要访问mongod或
mongos实例的这些集合,请将mongoShell 连接到该实例。
config.system.sessions¶该system.sessions集合存储可供部署的所有成员使用的会话记录。
当用户在mongod或
mongos实例上创建会话时,该会话的记录最初仅存在于该实例的内存中。实例将定期将其缓存的会话同步到system.sessions集合;那时,它们对部署的所有成员都是可见的。
要查看system.sessions集合中的记录,请使用
$listSessions。
警告
不要手动修改或删除system.sessions集合。
在分片集群中,system.sessions集合被分片。将分片添加到分片集群时,如果要添加的分片已经包含其自己的system.sessions集合,则MongoDB system.sessions在添加过程中会删除新的分片的集合。