OPTIONS
翻译或纠错本页面

将一个集群转化为复制集

这篇教程描述了将 sharded cluster 转化为未分片的 replica set 的方法.将复制集转化为集群的方法,可以参见 将复制集变为使用了复制集的集群. 关于集群的更多信息,可以参见 分片.

将只有一个分片的集群转化为复制集

sharded cluster 只有一个分片的情况下,使用以下的过程将其转化为未分片的 replica set:

  1. 重新配置应用程序,将其直接连接到分片机器上.

  2. 如果分片启动时使用了 --shardsrv 选项,将其移除重启.

    注意事项

    Changing the --shardsrv option will change the port that mongod listens for incoming connections on.

现在单节点的集群已经可以作为复制集进行读写操作了.

你现在可以去掉集群中其他组件了.

将集群转化为复制集.

使用以下步骤,将拥有一个以上节点的集群转化为一个全新的复制集.

  1. 在集群运行时,参照 部署一个新复制集 部署一个新的复制集,新的复制集必须足够大以容纳集群中所有的数据,在数据转移完成之前,不要将应用连接到新的复制集上.

  2. 停止集群所有的写入,你可以重新配置应用不向集群写入数据,也可以停止所有的 mongos , 不过停止所有的mongos之后,应用也不能从集群读取数据.如果你停止了所有mongos,需要启动一个临时的mongos,这个mongos不能被应用访问到,是用来做数据迁移的.

  3. 使用 mongodump and mongorestore 将数据通过 mongos 从集群中迁移到新的复制集中.

    注解

    并不是所有的数据库都被分片,不要仅仅迁移分片的集合,要把所有的数据库和所有的集合都迁移完.

  4. 重新配置应用,使用未分片的复制集代替 mongos .

应用现在可以使用没有分片的复制集进行读写了,之前的集群可以退役.