定义
提交从嵌入式配置服务器到专用配置服务器的转换。
要运行此命令,您必须使用 startTransitionToDedicatedConfigServer 命令转换到专用配置服务器。此命令指示负载均衡器将数据块从该分片移动到集群中的其他分片。在运行commitTransitionToDedicatedConfigServer 命令之前,您还必须手动移动使用该分片作为主分片的数据库以及存储在该分片上的未分片集合。
如果到专用配置服务器的转换未完成或者包含数据库或未分片集合,该命令将返回 ok: 0 并显示错误。如果发生转换并且所有数据库和未分片集合都已迁移出分片,则该命令将返回 ok: 1。
要开始转换到专用配置服务器,请参阅 startTransitionToDedicatedConfigServer 命令。
要显示从嵌入式配置服务器到专用配置服务器的转换状态,请参阅 getTransitionToDedicatedConfigServerStatus 命令。
要停止正在进行的从嵌入式配置服务器到专用配置服务器的转换,请执行 stopTransitionToDedicatedConfigServer 命令。
8.3版本新增。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
注意
MongoDB Atlas不支持此命令。请参阅修改Atlas分片集群以排空嵌入式配置服务器。
语法
该命令具有以下语法:
db.adminCommand( { commitTransitionToDedicatedConfigServer: 1 } )
行为
访问要求
如果已启用authorization ,则必须具有clusterManager角色或任何包含removeShard操作的角色。
数据库迁移要求
分片集群中的每个数据库都有一个主分片。如果过渡分片也是集群数据库之一的主节点 (primary node in the replica set),则在迁移分片的所有数据后,您必须手动将数据库从其主分片移动到新分片。
如果存在一个数据库将您要用主节点 (primary node in the replica set)的分片,则 commitTransitionToDedicatedConfigServer 命令会返回错误。
有关详细信息,请参阅 movePrimary 命令和 从分片集群中删除分片 以了解更多信息。
集合迁移要求
未分片集合存储在单个分片上。如果这些集合之一位于您想要从嵌入式配置服务器过渡到专用配置服务器的分片上,则必须首先将该集合迁移到其他分片。
如果要从嵌入式配置配置服务器的分片上存储有未分片的集合,则 commitTransitionToDedicatedConfigServer 命令会返回错误。
要迁移未分片集合,请参阅 moveCollection 命令。
示例
要开始排干分片,请使用 db.adminCommand() 方法运行 startTransitionToDedicatedConfigServer 命令:
db.adminCommand( { startTransitionToDedicatedConfigServer: "1" } )
要检查排干操作的状态,请使用 getTransitionToDedicatedConfigServerStatus 命令:
db.adminCommand( { getTransitionToDedicatedConfigServerStatus: "1" } )
{ "state" : "drainingComplete", "msg" : "draining completed successfully", "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1772142838, 176), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1772142838, 174) }
如果输出在 dbsToMove字段中显示任何数据库,请使用 movePrimary 命令将它们移动到不同的分片上。
如果输出在 collectionsToMove字段中显示任何未分片的集合,请使用 moveCollection 命令将它们移动到其他分片上。
当 getTransitionToDedicatedConfigServerStatus 显示 { state:
"completed" } 时,则负载均衡器已完成将数据块移出分片的操作。您现在可以删除分片:
db.adminCommand( { commitTransitionToDedicatedConfigServer: "1" } )
{ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1772142839, 19), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1772142839, 19) }