服务器内节点缩容
将上图中 sdbserver1、sdbserver2 和 sdbserver3 三台机器中的复制组 group2 删除,集群中只保留复制组 group1,且需要保留复制组 group2 中的数据。方案有两种:
- 使用 sdbexprt 命令将包含 group2 的所有集合导出,然后删除 group2 及 group2 上的所有集合,重新创建只属于 group1 的同名集合,并将导出的集合使用 命令导入
- 使用数据切割 split 工具将 group2 的数据切割到 group1 中,无需手工删除集合
以下示例为使用 工具将集合中的数据从 group2 切割到 group1,当确保 group2 没有数据时就能够把此数据组从集群中剔除。
连接协调节点
获取集群中的所有域
-
> var domain = db.getDomain("domainName")
查看指定域下的集合
查看集合 sample.employee 的编目信息快照信息,获取集合 sample.employee 中 group2 的 Partition 范围
使用 split 工具将集合 sample.employee 中 group2 的数据切割至 group1
-
Note:
如果用户需要保存节点的数据,在执行 removeNode 删除节点前,应先使用 sdbexprt 工具对集合数据进行导出。
如需要强制删除 group2 中的节点,在参数配置中添加 enforced 值为 true
删除 group2
> db.removeRG("group2")
缩容后检查
节点缩容后使用 sdblist 命令检查复制组是否已删除
-