-- 以下在目标租户下执行:
ALTER SYSTEM SET ha_high_thread_score = 4; -- 并发 8 → 4(租户级)
ALTER SYSTEM SET ha_mid_thread_score = 2; -- 并发 5 → 2(租户级)
ALTER SYSTEM SET partition_balance_schedule_interval = '6h'; -- 2h → 6h(租户级)
-- 以下在 sys 租户下执行(集群级参数):
ALTER SYSTEM SET sys_bkgd_net_percentage = 30; -- 带宽 60% → 30%(影响所有租户)
场景 C:资源饱和,必须保护业务
-- 目标租户下执行:
ALTER SYSTEM SET ha_high_thread_score = 1; -- 租户级,仅影响本租户
ALTER SYSTEM SET ha_mid_thread_score = 1;
ALTER SYSTEM SET replica_parallel_migration_mode = 'off';
ALTER SYSTEM SET partition_balance_schedule_interval = '24h';
-- sys 租户下执行(集群级):
ALTER SYSTEM SET sys_bkgd_net_percentage = 10; -- 影响所有租户的后台带宽
-- 直接暂停(目标租户下执行):
ALTER SYSTEM SET enable_rebalance = false;
-- 取消已在执行的任务:
ALTER SYSTEM REMOVE BALANCE TASK;
-- 高峰后恢复:
ALTER SYSTEM SET enable_rebalance = true;
场景 D:只控一个维度
关心什么
调哪个
作用域
网络(所有租户)
ALTER SYSTEM SET sys_bkgd_net_percentage = 20;
集群
网络(单租户无法单独限)
无独立参数。网络是集群统一管道
—
CPU(单租户)
ALTER SYSTEM SET ha_high_thread_score = 2;
租户
磁盘 IO(单租户)
ALTER SYSTEM SET ha_high_thread_score = 2;(降低并发 = 减少 IO 争抢)
租户
拉长周期(单租户)
ALTER SYSTEM SET partition_balance_schedule_interval = '12h';
租户
只关分区均衡(单租户)
ALTER SYSTEM SET __balance_controller = '{"ENABLE_PARTITION_BALANCE": false}';
租户
5. 参数速查
控制迁移速率
参数
默认
作用域
方向
效果
sys_bkgd_net_percentage
60
集群
↓
迁移网络带宽降低(所有租户共享)
ha_high_thread_score
0→8
租户
↓
迁移并发降低,CPU/IO 占用同步下降。0=使用内置默认 8
ha_mid_thread_score
0→5
租户
↓
中优先级迁移并发降低。0=使用内置默认 5
replica_parallel_migration_mode
auto
租户
off
LS 串行迁移,消除瞬时峰值
disk_io_thread_count
8
集群
↓
磁盘 IO 线程数减少( 影响所有 IO,非仅迁移)
控制触发频率
参数
默认
作用域
方向
效果
enable_rebalance
True
租户
关
停止生成新均衡任务(仅本租户)
partition_balance_schedule_interval
2h
租户
↑
均衡检查频率降低。0=禁用分区均衡
balancer_idle_time
10s
租户
↑
均衡调度最小空闲拉长
balancer_task_timeout
20m
集群
↓
均衡任务超时缩短
balancer_tolerance_percentage
10
集群
↑
Unit 均衡容忍度提高,迁移量减少
__balance_controller
“”
集群
JSON
按均衡类型精细开关
保护阈值
参数
默认
作用域
方向
效果
writing_throttling_trigger_percentage
60
租户
↑
推迟 MemStore 写入限流触发
data_disk_usage_limit_percentage
90
集群
—
数据盘安全使用上限
data_disk_write_limit_percentage
0
集群
设定
磁盘超此水位停止写入(0=禁用)
6. 组合开关:enable_rebalance + enable_transfer
enable_rebalance
enable_transfer
效果
false
任意
完全停止自动均衡(含 LS 均衡和分区均衡)
true
true
完整均衡:LS 分裂/合并 + Transfer 分区迁移(默认)
true
false
有限均衡:仅 LS 迁移,不做 Transfer。分区不会在 LS 间移动,均衡效果有限但资源消耗更低
enable_rebalance=false 时也可以手动执行 ALTER SYSTEM TRANSFER PARTITION 迁移单个分区。
7. 常用命令
操作
命令
暂停新均衡
ALTER SYSTEM SET enable_rebalance = false;
取消执行中的均衡
ALTER SYSTEM REMOVE BALANCE TASK;
手动触发均衡
CALL DBMS_BALANCE.TRIGGER_PARTITION_BALANCE(600);
手动迁移单个分区
ALTER SYSTEM TRANSFER PARTITION TABLE_ID=xxx, OBJECT_ID=xxx TO LS 1001;
恢复默认
ALTER SYSTEM SET enable_rebalance = true;
ALTER SYSTEM SET sys_bkgd_net_percentage = 60; ALTER SYSTEM SET ha_high_thread_score = 0; ALTER SYSTEM SET ha_mid_thread_score = 0;|
|查看配置|SHOW PARAMETERS LIKE '%balance%'; SHOW PARAMETERS LIKE '%ha_%thread%'; SHOW PARAMETERS LIKE 'sys_bkgd_net_percentage'; SHOW PARAMETERS LIKE '%disk_io%';|
8. 监控均衡状态
-- 当前正在执行的均衡 Job(每个租户同一时间只有一个)
SELECT * FROM CDB_OB_BALANCE_JOBS WHERE tenant_id = xxx;
-- 正在执行的 Transfer 任务
SELECT * FROM CDB_OB_TRANSFER_TASKS WHERE tenant_id = xxx;
-- LS 副本分布(看各节点 LS 数量是否均匀)
SELECT svr_ip, svr_port, COUNT(*) ls_cnt
FROM CDB_OB_LS_LOCATIONS WHERE tenant_id = xxx
GROUP BY svr_ip, svr_port;
-- 分区在各 LS 上的分布(看分区数量是否均匀)
SELECT ls_id, COUNT(*) tablet_cnt
FROM CDB_OB_TABLE_LOCATIONS WHERE tenant_id = xxx
AND role='LEADER' AND table_type='USER TABLE'
GROUP BY ls_id;
-- 各 LS 磁盘占用(看磁盘是否均衡,阈值 50G/LS)
SELECT a.svr_ip, b.ls_id, SUM(data_size)/1024/1024/1024 total_gb
FROM CDB_OB_TABLET_REPLICAS a, CDB_OB_TABLE_LOCATIONS b
WHERE a.tenant_id=b.tenant_id AND a.tablet_id=b.tablet_id
AND b.role='LEADER' AND b.table_type='USER TABLE'
AND a.tenant_id=xxx GROUP BY svr_ip, ls_id;