本教程描述了将分片群集转换为非分片副本集的过程。要将副本集 转换为分片群集,请将副本集转换为分片群集。请参阅 分片对分片群集的详细信息的文档。
对于只有一个分片的分片集群,该分片包含完整的数据集。使用以下过程将该群集转换为非分片副本集:
重新配置应用程序以连接到副本集的主要成员,该副本集承载系统将成为新副本集的单个分片。
--shardsvr
从中删除该选项mongod
。
小费
更改--shardsvr
选项将更改mongod
侦听传入连接的端口。
现在,单碎片群集是一个非碎片副本集,它将接受对数据集的读取和写入操作。
现在,您可以停用其余的分片基础结构。
在分片群集运行的情况下,除了分片群集之外,还要部署新的副本集。副本集必须具有足够的容量,以容纳来自所有当前分片组合的所有数据文件。在数据传输完成之前,请勿将应用程序配置为连接到新副本集。
停止所有对分片群集的写入。您可以重新配置应用程序或停止所有mongos
实例。如果停止所有mongos
实例,则应用程序将无法从数据库读取。如果停止所有mongos
实例,则mongos
在该应用程序上启动一个临时实例将无法访问该数据迁移过程。
使用mongodump和mongorestore将数据从mongos
实例迁移到新
副本集。
注意
并非所有数据库上的所有集合都必须分片。不要只迁移分片集合。确保所有数据库和所有集合正确迁移。
现在,应用程序将使用未分片的副本集进行读写。现在,您可以停用剩余的未使用的分片群集基础结构。