6.5rebalance 命令
集群增加了一组 SQL 命令(rebalance)把表从一个 distribution 转换到另
一个 distribution。rebalance 命令是异步执行命令。在 coordinator 上使用
gccli 执行 rebalance 命令后,rebalance 任务会被加入到
gclusterdb.rebalancing_status 集群表中。coordinator 集群会从
gclusterdb.rebalancing_status 中选取优先级最高的
gcluster_rebalancing_concurrent_count 个表进行 rebalance。coordinator
集群中只会有一个 coordinator 节点负责后台执行表 rebalance。
rebalance 任务执行状态需要从 gclusterdb.rebalancing_status 表中查
询。gclusterdb.rebalancing_status 的表结构如下图所示。不建议对
gclusterdb.rebalancing_status 表做 ddl/dml 操作。


一个表在 rebalance 时有 5 个状态,分别是:STARTING、RUNNING、
COMPLETED、PAUSED、CANCELED。这 5 种状态转换如下图所示:
表处于STARTING、RUNNING和PAUSED状态时,对表执行 cancel rebalance
操作,表状态转换成 CANCELED。
表处于 STARTING 和 RUNNING 状态时,对表执行 pause rebalance 操作,表
状态转换成 PAUSED。
表处于 STARTING 状态时,coordinator 后台线程开始执行表的 rebalance
操作,表状态转换成 RUNNING。
表处于 PAUSED 状态时,对表执行 continue rebalance 操作,表状态转换
成 RUNNING。
表处于 RUNNING 状态时,coordinator 后台线程执行表的 rebalance 操作
失败,表状态转换成 STARTING。
表处于 RUNNING 状态时,coordinator 后台线程完成了表的 rebalance 操
作,表状态转换成 COMPLETED。
注:当前版本只支持 express 引擎表的 rebalance,不支持 GsSYS 引擎表
rebalance。




