1、功能说明
rebalance 命令负责表数据在节点间的重新分布,支持包括实例级、库级和表级的数据重分布。
1) 在 coordinator 上使用 gccli 执行 rebalance 命令后,rebalance 任务会被加入到 gclusterdb.rebalancing_status 集群表中。coordinator 集群会从gclusterdb.rebalancing_status中选取优先级最高的gcluster_rebalancing_concurrent_count 个表进行 rebalance;
2) coordinator集群中只会有一个coordinator节点负责后台执行表rebalance,不支持多个 coordinator 并行执行 rebalance 命令;
3) rebalance任务执行状态需要从gclusterdb.rebalancing_status表中查询;
4) rebalance 默认往最新的 distribution 上分布,也可以通过 to distributionid 语法往指定拓扑上分布。在进行分布之前,需要确认 gclusterdb.rebalancing_status 中没有该表的分布记录,如果有可以使用 delete from 语句删除记录,否则会影响分布命令的执行;
5) 不建议对 gclusterdb.rebalancing_status 表做 ddl/dml 操作;
6) 只支持 express 引擎表的 rebalance。
2、语法格式
rebalance <rebalance_options> [to distribution_id]
rebalance_options: Table [[vc_name.]database_name.]table_name | Database [vc_name.]database_name | instance
3、示例
1) 表级
gbase> rebalance table testdis;
Query OK, 1 row affected
gbase> rebalance table testdis to 1;
Query OK, 1 row affected
2) 库级
gbase> rebalance database test;
Query OK, 3 rows affected
3) 实例级
gbase> rebalance instance;
Query OK, 6 rows affected




