我公司之前上线了一个新应用,底层数据库使用国内一家名叫SequoiaDB的NoSQL数据库作为存储。在原来的规划中,由6台PC服务器共同组成SequoiaDB集群,每台机器均部署了协调节点与CM集群管理节点。
sdb1、sdb2和sdb3三台机器共同组成了编目节点组SYSCatalogGroup与数据节点组datagroup1。
sdb4、sdb5和sdb6三台机器组成了另外一个数据节点组datagroup2。
具体部署如下图示:
但是最近由于公司内部一些原因,要对6台服务器其中两台进行回收,所以数据库需要实施规模缩减操作。由于之前的项目已经上线,没有办法停止业务,给集群执行数据库缩减操作,考虑了很久,终于找到一个在线缩减的方法。
思路是这样的:
由于SequoiaDB的逻辑数据组有一个特性,可以最大指定7个数据节点组成一个逻辑数据组,考虑我们现在线上的数据组只有3个数据节点,完全可以利用这个特性给要迁移的数据组先将数据同步到其他机器上,再将需要移除的数据节点从原数据组中删除,这样我们就能保证业务不中断的情况下,实现了集群缩减的目的。
大致的方法如下图:
规模缩减后,sdb1、sdb2和sdb3三台机器上已经部署的编目节点组和数据节点组datagroup1保持不变,同时将sdb4、db5和sdb6三台机器部署的数据节点组datagroup2迁移到sdb1、sdb2和sdb3机器上来,达到保持原数据库架构不变,缩减机器规模的目的。
由于目前应用程序选择连接的协调节点为sdb4,所以暂