Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

使用嵌入式配置服务器将副本集转换为分片集群

在此页面上

  • 关于此任务
  • 步骤
  • 了解详情

从MongoDB8.0 开始,您可以配置配置服务器来存储除通常的 分片集群元数据数据之外的应用程序数据。存储应用程序数据的配置服务器称为配置分片或嵌入式配置服务器。

将副本集转换为具有嵌入式配置服务器的分分片集群可以减少:

  • 部署中所需的节点数。

  • 维护单分片集群的复杂性。

您不能将副本集直接转换为配置分分片。要将副本集转换为嵌入式配置服务器,您必须:

如果启用了访问权限控制,则transitionFromDedicatedConfigServer transitionFromDedicatedConfigServer命令需要对集群执行 授权动作。

clusterManager角色具有transitionFromDedicatedConfigServer 授权动作,可以分配给用户。

以下示例将自管理副本集转换为配置分分片,其中包含副本集集中预先存在的用户数据。

1

本教程假定您知道如何将自管理副本集转换为分片分片集群。 有关完整说明,请参阅将自管理副本集转换为分片集群。

2

示例,要以名为 admin01 的管理员用户连接到托管mongodb6.example.net 上运行的 mongos实例:

mongosh "mongodb://admin01@mongodb6.example.net:27017"
3

要将专用配置服务器为作为配置分片运行,请从管理员数据库运行transitionFromDedicatedConfigServer 命令:

db.adminCommand( {
transitionFromDedicatedConfigServer: 1
} )
4

要确认分片集群使用了配置分分片,请在连接到listShards admin时对 数据库运行mongos 命令,并检查输出中是否存在将_id 设立为"config" 的文档。如果listShards 输出不包含将_id 设立为"config" 的文档,则集群不使用配置分分片。

以下示例运行 listShards 命令并尝试查找 _id设立为 "config" 的文档。

db.adminCommand({ listShards: 1 })["shards"].find(element => element._id === "config")

在此示例中,返回的文档已将 _id设立为 "config",这确认此集群使用配置分片。

{
_id: "config",
host: "configRepl/localhost:27018",
state: 1,
topologyTime: Timestamp({ t: 1732218671, i: 13 }),
replSetConfigVersion: Long('-1')
}

注意

如果负载均衡器正在运行,它会自动跨分片迁移数据。否则,请使用moveCollectionmoveChunk 命令手动分发数据。

5

要在添加配置分片分片集群分片为单个分片,请使用moveCollection 命令将所有未分片的集合移至配置分片片,并使用removeShard 命令删除分片集群的第一个分片。此步骤会将集群缩减为单个配置分分片。

有关删除集群中的分片的完整说明,请参阅从分片集群中删除分片。

后退

配置分片