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

将自管理分片集群转换为副本集

在此页面上

  • 开始之前
  • 将具有单个分片的集群转换为副本集
  • 将分片集群转换为副本集

本教程介绍进程分片集群转换为非分片副本集的过程。 将副本集转换为分片分片集群将自管理副本集转换为分片集群。 有关分分片的集群的更多信息,请参阅分文档。

从 MongoDB 8.0 开始,您可以使用 directShardOperations 角色来执行需要您直接对分片执行命令的维护操作。

警告

使用directShardOperations角色运行命令可能会导致集群停止正常工作,并可能导致数据损坏。 仅将directShardOperations角色用于维护目的或在MongoDB支持的指导下使用。 执行完维护操作后,请停止使用directShardOperations角色。

对于只有一个分片的分片集群,该分片包含完整数据集。使用以下步骤将该集群转换为非分片副本集:

  1. 重新配置应用程序以连接到托管单个分片的副本集的主节点,该系统将成为新的副本集。

  2. mongod 中删除--shardsvr选项

    提示

    更改 --shardsvr 选项将会更改 mongod 侦听传入连接的端口。

单分片集群现在是一个非分片副本集,将接受针对数据集的读写操作。

您现在可以停用剩余的分片基础设施。

使用以下过程从具有多个分片的分片集群过渡到全新的副本集

  1. 分片集群运行时,除了分片集群之外,还部署一个新的副本集。副本集的容量必须足以容纳当前所有分片的所有数据文件。在数据传输完成之前,不要将应用程序配置为连接到新的副本集。

  2. 停止对分片集群的所有写入。您可以重新配置应用程序或停止所有 mongos 实例。如停止所有 mongos 实例,应用程序将无法读取数据库。如果停止所有mongos实例,则在一个应用程序无法访问的临时 mongos 实例上启动,以执行数据迁移步骤。

  3. 使用 mongodump 和 mongorestore 将数据从 mongos 实例迁移到新副本集。

    注意

    并非所有数据库上的所有集合都必须进行分片。不要仅迁移分片集合。确保所有数据库和所有集合均正确迁移。

  4. 将应用程序重新配置为使用非分片副本集,而不是 mongos 实例。

    将分片集群转换为副本集后,将应用程序使用的连接字符串更新为副本集的连接字符串。然后,重新启动您的应用程序。

应用程序现在将使用未分片的副本集进行读取和写入。您现在可以停用其余未使用的分片集群基础架构。

后退

备份集群元数据