什么是日志流降级

什么才是日志流降级,查了资料和文档,好像每个地方的说法都不一样。有说,有仲裁服务才会发生日志流降级,有说故障副本数超过了全功能型副本半数才会发生日志流降级,有说副本leader切换了就是日志流降级,也有说DBA_OB_SERVER_EVENT_HISTORY 中event有DEGRADE才是日志流降级。每个说法好像又互斥。所以日志流降级的具体表现是什么样子的,如果一个集群中有3个zone,每个zone一个节点,集群没有仲裁服务,那这个集群会发生日志流降级吗。

@论坛小助手

您好,您提的这个技术问题可能牵涉到 OceanBase 企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署 OceanBase 企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署 OceanBase 企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

日志流降级是指当 OceanBase 集群中的某个 Zone 或者某个 OBServer 发生故障,导致无法正常同步日志时,为了保证整个集群的高可用性和服务连续性,系统会自动降低受影响的日志流副本的状态,使其暂时失去参与选举和投票的资格,但仍然保留数据同步的能力。这样即使部分节点故障,整个集群依然能够继续提供服务。具体来说,日志流降级的表现形式如下:

  1. 当集群中某个 Zone 或者 OBServer 发生故障,导致日志无法同步时,日志流会自动降级。
  2. 降级后,被降级的副本会暂时失去参与选举和投票的资格,但仍然会继续同步数据。
  3. 日志流降级的具体原因包括但不限于:
    • CRASHED_OR_BROKEN_NETWORK:表示 OBServer 节点宕机或断网、observer 进程被 kill 或异常退出。
    • LOG_DISK_HANG_OR_FULL:表示日志盘写入卡住(物理故障)或租户日志盘空间满。
    • SERVER_STOPPED_OR_ZONE_STOPPED:执行了 STOP ZONESTOP SERVER 命令。
    • LOG_SYNC_DISABLED:副本日志同步落后。
    • LOG_VOTE_DISABLED:副本发生了 Rebuild。
  4. 日志流降级事件可以通过查询 DBA_OB_SERVER_EVENT_HISTORY 视图来获取,具体 SQL 如下:
    SELECT * FROM oceanbase.DBA_OB_SERVER_EVENT_HISTORY WHERE event LIKE "%DEGRADE%";
    
  5. 对于一个没有仲裁服务的集群,如果该集群有3个Zone,每个Zone一个节点,那么当某个Zone的节点发生故障时,日志流仍然会发生降级,因为系统会自动检测并处理故障节点,以保证集群的高可用性。

检索到的文档如下:

  1. 查看日志流升降级相关信息
  2. 仲裁服务概述
  3. 修改日志流降级控制时间