首批通过分布式安全可靠测评,为关键业务系统打造
定时触发每日租户合并
更新时间:2026-06-02 12:36:43
用户也可以通过指定每日合并触发时间来定时触发租户合并。
前提条件
触发合并前,需要确保全局合并开关已开启,全局合并开关由集群级配置项 enable_major_freeze 控制,默认值为
True,表示开启合并开关。如果当前集群未开启全局合并开关,请参考以下操作开启全局合并开关。
使用
root用户登录集群的sys租户。确认全局合并开关是否已开启。
obclient(root@sys)[(none)]> SHOW PARAMETERS LIKE 'enable_major_freeze';如果显示未开启,执行以下语句,开启合并开关。
obclient(root@sys)[(none)]> ALTER SYSTEM SET enable_major_freeze='True';
如果需要触发每日租户合并,需要确保租户级配置项 enable_window_compaction 为
False,即关闭窗口合并。具体操作如下:
租户管理员登录集群的 MySQL 租户或 Oracle 租户。
确认租户级配置项
enable_window_compaction的值。obclient> SHOW PARAMETERS LIKE 'enable_window_compaction';如果值为
True,执行以下语句,关闭窗口合并。obclient> ALTER SYSTEM SET enable_window_compaction = False;系统租户下,可以通过指定租户名的方式进行设置,例如:
ALTER SYSTEM SET enable_window_compaction = False TENANT = tenant_name;。
每日租户合并的触发条件
开启全局合并开关并且关闭窗口合并后,每日租户合并的定时触发条件是,当系统时间达到了每日租户合并的时间点时,就会自动触发合并。每日租户合并的时间点通过配置项 major_freeze_duty_time 来控制,您也可以在 OCP 上修改,默认是每天 02:00 进行合并。
major_freeze_duty_time 及其他合并相关参数的说明及设置请参见 修改合并配置。
指定每日租户合并的触发时间
使用
root用户登录集群的sys租户。执行以下语句,修改每日合并的触发时间。
修改本租户每日合并的触发时间
obclient> ALTER SYSTEM SET major_freeze_duty_time='01:00';修改所有用户租户每日合并的触发时间
对于租户较多的场景,当所有用户租户每次合并的触发时间时,可能会出现 CPU 利用率突然升高的问题。如果出现了 CPU 利用率突然升高的情况,建议您将各用户租户的每日合并时间设置为不同的时间。
obclient> ALTER SYSTEM SET major_freeze_duty_time='01:00' TENANT = all_user;或者
obclient> ALTER SYSTEM SET major_freeze_duty_time='01:00' TENANT = all;说明
OceanBase 数据库从 V4.2.1 版本开始,
TENANT = all_user与TENANT = all语义相同,在需要生效范围为所有用户租户时,推荐使用TENANT = all_user,后续TENANT = all将废弃不再使用。修改所有 Meta 租户每日合并的触发时间
对于租户较多的场景,当所有 Meta 租户每次合并的触发时间相同时,可能会出现 CPU 利用率突然升高的问题。如果出现了 CPU 利用率突然升高的情况时,建议您将各 Meta 租户的每日合并时间设置为不同的时间。
obclient> ALTER SYSTEM SET major_freeze_duty_time='01:00' TENANT = all_meta;修改指定租户每日合并的触发时间
以下语句每次仅支持指定一个租户,如果要修改多个租户,需要重复执行该语句。
obclient> ALTER SYSTEM SET major_freeze_duty_time='01:00' TENANT = tenant1;