服务器内节点缩容

    将上图中 sdbserver1、sdbserver2 和 sdbserver3 三台机器中的复制组 group2 删除,集群中只保留复制组 group1,且需要保留复制组 group2 中的数据。方案有两种:

    • 使用 sdbexprt 命令将包含 group2 的所有集合导出,然后删除 group2 及 group2 上的所有集合,重新创建只属于 group1 的同名集合,并将导出的集合使用 命令导入
    • 使用数据切割 split 工具将 group2 的数据切割到 group1 中,无需手工删除集合

    以下示例为使用 工具将集合中的数据从 group2 切割到 group1,当确保 group2 没有数据时就能够把此数据组从集群中剔除。

    1. 连接协调节点

    2. 获取集群中的所有域

        1. > var domain = db.getDomain("domainName")
      1. 查看指定域下的集合

      2. 查看集合 sample.employee 的编目信息快照信息,获取集合 sample.employee 中 group2 的 Partition 范围

      3. 使用 split 工具将集合 sample.employee 中 group2 的数据切割至 group1

        1. Note:

          如果用户需要保存节点的数据,在执行 removeNode 删除节点前,应先使用 sdbexprt 工具对集合数据进行导出。

          如需要强制删除 group2 中的节点,在参数配置中添加 enforced 值为 true

        2. 删除 group2

          1. > db.removeRG("group2")

        缩容后检查

        • 节点缩容后使用 sdblist 命令检查复制组是否已删除