通过 MAJOR FREEZE 命令触发合并后,系统会自动调度合并任务。不同于 OceanBase 数据库 V2.X.X 和 V3.X.X 版本,在 OceanBase 数据库 V4.0.X 版本中,合并将采用统一合并策略来执行合并流程,即租户的所有 Zone 同时开始执行合并,且所有 Zone 均完成合并后,才表示该租户完成合并。
合并过程中,不再需要您手动控制各个 Zone 的合并顺序等事项,也不存在轮转合并。如果在合并过程中出现错误,可以参考本文手动控制合并。例如,Checksum 校验出错,会使得该租户当前轮次的合并无法结束,您可以暂停当前合并(suspend merge), 待 Checksum 恢复正确以后(例如,人工介入修复),再清理 Checksum 错误的标记(clear merge error), 然后继续执行当前轮次的合并 (resume merge)。
系统租户手动控制合并
合并开始后,系统租户可以控制所有租户或指定租户的合并操作。
具体操作如下:
使用
root用户登录到数据库的sys租户。根据业务实际情况,选择合适的命令控制合并。
暂停所有租户或指定租户的合并
开始合并后,如果需要暂停所有租户或指定租户的合并,可以执行以下语句。
语句如下:
obclient> ALTER SYSTEM SUSPEND MERGE TENANT [=] ALL; obclient> ALTER SYSTEM SUSPEND MERGE TENANT [=] tenant1,tenant2;其中,
[=]表示等号(=)为可选;tenant1、tenant2需要替换为实际的租户名。恢复合并
暂停合并后,也可以恢复合并。
语句如下:
obclient> ALTER SYSTEM RESUME MERGE TENANT [=] ALL; obclient> ALTER SYSTEM RESUME MERGE TENANT [=] tenant1,tenant2;其中,
[=]表示等号(=)为可选;tenant1、tenant2需要替换为实际的租户名。清理 Checksum 错误的标记
如果在合并过程中出现了 Checksum 校验错误,且人工介入修复后,可以清理掉该 Checksum 错误的标记,以恢复合并。
语句如下:
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT [=] ALL; obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT [=] tenant1,tenant2;其中,
[=]表示等号(=)为可选;tenant1、tenant2需要替换为实际的租户名。
普通租户手动控制合并
合并开始后,用户租户只能控制本租户的合并操作。
租户管理员登录数据库。
根据业务实际情况,选择合适的命令控制合并。
暂停本租户的合并
开始合并后,如果需要暂停本租户的合并,可以执行以下语句。
obclient> ALTER SYSTEM SUSPEND MERGE;恢复合并
暂停合并后,也可以恢复合并。
语句如下:
obclient> ALTER SYSTEM RESUME MERGE;清理 Checksum 错误的标记
如果在合并过程中出现了 Checksum 校验错误,且人工介入修复后,可以清理掉该 Checksum 错误的标记,以恢复合并。
语句如下:
obclient> ALTER SYSTEM CLEAR MERGE ERROR;




