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