文档菜单
文档首页
/
MongoDB 手册
/ / /

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

本页内容

  • 关于此任务
  • 步骤
  • 了解更多信息

从 MongoDB 8.0 开始,您可以将配置服务器配置为存储您的应用程序数据,除了常规的分片集群元数据。一个存储应用程序数据的配置服务器被称为配置分片或内嵌配置服务器。

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

  • 部署中所需的节点数量。

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

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

如果启用了访问控制,则transitionFromDedicatedConfigServer命令需要集群transitionFromDedicatedConfigServer授权操作。

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

以下示例将自管理的副本集转换为包含来自副本集的现有用户数据的配置分片。

1

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

2

例如,要连接到运行在主机 mongodb6.example.net 上的 mongos 实例,并以名为 admin01 的管理员用户身份连接

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

要将您的专用配置服务器配置为运行为配置分片,请在管理员数据库中运行 transitionFromDedicatedConfigServer 命令

db.adminCommand( {
transitionFromDedicatedConfigServer: 1
} )
4

要确认分片集群使用配置分片,请在连接到 mongos 并连接到 admin 数据库时运行 listShards 命令,并检查输出中是否有 _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 命令删除集群中的第一个分片。此步骤将您的集群减少到单个配置分片。

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

返回

配置分片