首批通过分布式安全可靠测评,为关键业务系统打造
MAJOR 和 MINOR
更新时间:2026-04-16 00:11:36
描述
该语句用于系统租户发起存储层合并或转储(冻结)。手动合并仅支持租户级别;手动转储支持租户级别、Zone 级别、Server 级别、日志流级别和分区级别。
语法
ALTER SYSTEM merge_action;
merge_action:
MAJOR FREEZE [tenant_list]
| MAJOR FREEZE [tenant_list]
| MINOR FREEZE [tenant_list | server_list | zone_list | {TENANT [=] tenant_name LS [=] ls_id} | {TENANT [=] tenant_name TABLET_ID = tablet_id}]
| {SUSPEND | RESUME} MERGE [tenant_list]
| CLEAR MERGE ERROR [tenant_list]
tenant_list:
TENANT [=] { all | all_user | all_meta } | tenant_name [, tenant_name ...]
server_list:
SERVER [=] ('ip:port' [, 'ip:port'...])
zone_list:
ZONE [=] ('zone_name' [, 'zone_name' ...]);
参数解释
| 参数 | 描述 |
|---|---|
| MAJOR FREEZE | 发起每日合并。 使用 TENANT=all 或者 TENANT=all_user 可以合并所有用户租户(不包括系统租户和 Meta 租户),建议用户使用 all_user,all 会在未来废除;使用 TENANT=all_meta 可以合并所有 Meta 租户;也可以使用 TENANT=tenant_name [, tenant_name ...] 仅合并指定租户。 |
| MINOR FREEZE | 发起转储。 |
| {SUSPEND | RESUME} MERGE | 暂停或恢复每日合并。 使用 TENANT=all 或者 TENANT=all_user 可以暂停或恢复所有租户(不包括系统租户和 Meta 租户)的每日合并,建议用户使用 all_user,all 会在未来废除;使用 TENANT=all_meta 可以暂停或恢复所有 Meta 租户;也可以使用 TENANT=tenant_name [, tenant_name ...] 仅暂停或恢复指定租户的每日合并。 |
| CLEAR MERGE ERROR | 清理合并出错的标记。 使用 TENANT=all 或者 TENANT=all_user 可以清理合并所有租户(不包括系统租户和 Meta 租户)的出错标记,建议用户使用 all_user,all 会在未来废除;使用 TENANT=all_meta 可以清理合并所有 Meta 租户;也可以使用 TENANT=tenant_name [, tenant_name ...] 仅清理合并指定租户的出错标记。 |
| MAJOR FREEZE TENANT [=] tenant_name | 指定租户的合并。
说明该语句仅支持在系统(sys)租户下运行。 |
| tenant_name | 指定租户合并或转储。 |
| TABLET_ID | 指定分区转储。 |
| SERVER | 指定服务器转储。 |
| ZONE | 指定 ZONE 转储。 |
| LS | 指定日志流转储。 |
示例
存储层合并的示例
系统租户发起系统租户的每日合并。
obclient> ALTER SYSTEM MAJOR FREEZE; Query OK, 0 rows affected系统租户发起所有用户租户(不包括系统租户和 Meta 租户)的合并。
obclient> ALTER SYSTEM MAJOR FREEZE TENANT = all_user; Query OK, 0 rows affected系统租户发起所有 Meta 租户的合并。
obclient> ALTER SYSTEM MAJOR FREEZE TENANT = all_meta; Query OK, 0 rows affected系统租户发起指定租户
tenant1和tenant2的合并。obclient> ALTER SYSTEM MAJOR FREEZE TENANT = tenant1,tenant2; Query OK, 0 rows affected
存储层转储的示例
系统租户发起系统租户的转储。
obclient> ALTER SYSTEM MINOR FREEZE; Query OK, 0 rows affected系统租户发起所有用户租户(不包括系统租户和 Meta 租户)的转储。
obclient> ALTER SYSTEM MINOR FREEZE TENANT = all_user; Query OK, 0 rows affected系统租户发起所有 Meta 租户的转储。
obclient> ALTER SYSTEM MINOR FREEZE TENANT = all_meta; Query OK, 0 rows affected系统租户发起指定租户
tenant1和tenant2的转储。obclient> ALTER SYSTEM MINOR FREEZE TENANT = tenant1,tenant2; Query OK, 0 rows affected系统租户对指定租户
tenant1下的指定分区进行转储。obclient> ALTER SYSTEM MINOR FREEZE tenant = tenant1 tablet_id = 1100611139453887; Query OK, 0 rows affected系统租户对指定的 OBServer 进行转储。
obclient> ALTER SYSTEM MINOR FREEZE SERVER = ('10.XXX.XXX.XXX:2882'); Query OK, 0 rows affected系统租户对指定的租户下的指定日志流转储。
obclient> ALTER SYSTEM MINOR FREEZE tenant = t1 LS 1; Query OK, 0 rows affected系统租户对指定租户下指定日志流中的指定分区转储。
obclient> ALTER SYSTEM MINOR FREEZE tenant = t1 ls 1 tablet_id = 60000; Query OK, 0 rows affected
暂停或恢复每日合并的示例
系统租户暂停所有用户租户(不包括系统租户和 Meta 租户)的每日合并。
obclient> ALTER SYSTEM SUSPEND MERGE TENANT = all_user; Query OK, 0 rows affected系统租户暂停指定租户
tenant1和tenant2的每日合并。obclient> ALTER SYSTEM SUSPEND MERGE TENANT = tenant1,tenant2; Query OK, 0 rows affected系统租户暂停所有 Meta 租户的每日合并。
obclient> ALTER SYSTEM SUSPEND MERGE TENANT = all_meta; Query OK, 0 rows affected系统租户恢复所有用户租户(不包括系统租户和 Meta 租户)的每日合并。
obclient> ALTER SYSTEM RESUME MERGE TENANT = all_user; Query OK, 0 rows affected系统租户恢复指定租户
tenant1和tenant2的每日合并。obclient> ALTER SYSTEM RESUME MERGE TENANT = tenant1,tenant2; Query OK, 0 rows affected系统租户恢复所有 Meta 租户的每日合并。
obclient> ALTER SYSTEM RESUME MERGE TENANT = all_meta; Query OK, 0 rows affected
清理合并出错标记的示例
系统租户清理合并所有用户租户(不包括系统租户和 Meta 租户)的出错标记。
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_user; Query OK, 0 rows affected系统租户清理合并指定租户
tenant1和tenant2的出错标记。obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT = tenant1,tenant2; Query OK, 0 rows affected系统租户清理合并所有 Meta 租户的出错标记。
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_meta; Query OK, 0 rows affected
发起分区级的转储
查询表的 TABLET ID。
示例如下:
SELECT t1.tenant_id, t2.tenant_name, t1.database_name, t1.table_id, t1.table_name, t1.tablet_id, t1.PARTITION_NAME, t1.SUBPARTITION_NAME FROM oceanbase.CDB_OB_TABLE_LOCATIONS t1, oceanbase.DBA_OB_TENANTS t2 WHERE t1.tenant_id=t2.tenant_id AND t1.table_name = 'test_tbl1' AND t2.tenant_name = 'oracle001';返回结果如下:
+-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ | tenant_id | tenant_name | database_name | table_id | table_name | tablet_id | PARTITION_NAME | SUBPARTITION_NAME | +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200008 | P1 | SP0 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200009 | P1 | SP1 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200010 | P1 | SP2 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200011 | P1 | SP3 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200012 | P2 | SP4 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200013 | P2 | SP5 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200014 | P2 | SP6 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200015 | P2 | SP7 | +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ 8 rows in set更多视图字段信息,请参见 oceanbase.CDB_OB_TABLE_LOCATIONS。
发起转储。
示例如下:
ALTER SYSTEM MINOR FREEZE TENANT = oracle001 TABLET_ID = 200008;