暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

OceanBase手动控制合并

2023-03-05
834

通过 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)。

系统租户手动控制合并

合并开始后,系统租户可以控制所有租户或指定租户的合并操作。

具体操作如下:

  1. 使用 root 用户登录到数据库的 sys 租户。

  2. 根据业务实际情况,选择合适的命令控制合并。

    • 暂停所有租户或指定租户的合并

      开始合并后,如果需要暂停所有租户或指定租户的合并,可以执行以下语句。

      语句如下:

      obclient> ALTER SYSTEM SUSPEND MERGE TENANT [=] ALL;
      
      obclient> ALTER SYSTEM SUSPEND MERGE TENANT [=] tenant1,tenant2;
      

      其中,[=] 表示等号(=)为可选; tenant1tenant2 需要替换为实际的租户名。

    • 恢复合并

      暂停合并后,也可以恢复合并。

      语句如下:

      obclient> ALTER SYSTEM RESUME MERGE TENANT [=] ALL;
      
      obclient> ALTER SYSTEM RESUME MERGE TENANT [=] tenant1,tenant2;
      

      其中,[=] 表示等号(=)为可选;tenant1tenant2 需要替换为实际的租户名。

    • 清理 Checksum 错误的标记

      如果在合并过程中出现了 Checksum 校验错误,且人工介入修复后,可以清理掉该 Checksum 错误的标记,以恢复合并。

      语句如下:

      obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT [=] ALL;
      
      obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT [=] tenant1,tenant2;
      

      其中,[=] 表示等号(=)为可选;tenant1tenant2 需要替换为实际的租户名。

普通租户手动控制合并

合并开始后,用户租户只能控制本租户的合并操作。

  1. 租户管理员登录数据库。

  2. 根据业务实际情况,选择合适的命令控制合并。

    • 暂停本租户的合并

      开始合并后,如果需要暂停本租户的合并,可以执行以下语句。

      obclient> ALTER SYSTEM SUSPEND MERGE;
      
    • 恢复合并

      暂停合并后,也可以恢复合并。

      语句如下:

      obclient> ALTER SYSTEM RESUME MERGE;
      
    • 清理 Checksum 错误的标记

      如果在合并过程中出现了 Checksum 校验错误,且人工介入修复后,可以清理掉该 Checksum 错误的标记,以恢复合并。

      语句如下:

      obclient> ALTER SYSTEM CLEAR MERGE ERROR;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论