“文档” 菜单
文档首页
/
MongoDB Manual
/ /

将分片集群转换为副本集

在此页面上

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

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

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

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

  2. mongod--shardsvr 中删除 选项。

    提示

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

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

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

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

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

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

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

    注意

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

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

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

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

后退

备份集群元数据

来年

将副本集转换为分片集群