问题现象
OceanBase 机器的日志备份出现异常中断。

__all_rootservice_event_history 视图显示 OBSERVER CLOG RECYCLED BEFORE ARCHIVED。
| 2025-02-05 02:28:43.198178 | 10.17.xxx.xxx | 2882 | log_archive | mark_fatal_error | id | 1001 | reason | OBSERVER CLOG RECYCLED BEFORE ARCHIVED ret_code | -9087 | lbt | 0x13978855 0x58e9505 0x5a35668 0x5a3517b 0x5a350be 0x5a34ee6 0xa132605 0xa121428 0x5a5f067 0x13c3a8e1 0x13c36cbf 0x7f06aded8fed 0x7f06ade0c18f |
关键日志信息。
observer.log.20250205022941140:[2025-02-05 02:28:43.198138] ERROR generate_log_fetch_task_ (ob_archive_sequencer.cpp:318) [2579672][T1002_ArcSeq][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=10][errcode=-9087] observer clog is recycled before archive(msg="observer clog is recycled before archive, check if archive speed is less than clog writing speed or archive device is full or archive device is not healthy", ret=-9087)
observer.log.20250205022941140:[2025-02-05 02:28:43.198161] EDIAG [ARCHIVE] mark_fatal_error (ob_archive_round_mgr.cpp:235) [2579672][T1002_ArcSeq][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=0] archive mark_fatal_error(key={incarnation:1, dest_id:1001, round:2}, id={id:1001}, reason={reason:"OBSERVER CLOG RECYCLED BEFORE ARCHIVED", ret_code:-9087}) BACKTRACE:0x13978855 0x58e9505 0x5a35668 0x5a3517b 0x5a350be 0x5a34ee6 0xa132605 0xa121428 0x5a5f067 0x13c3a8e1 0x13c36cbf 0x7f06aded8fed 0x7f06ade0c18f
问题原因
日志备份通过获取日志目录下各个租户的 clog 文件进行备份,所以如果 clog 文件在日志备份未备份时就已经被 OceanBase 回收掉,就会触发日志备份断开。造成这种情况的原因有如下几种:
OceanBase 数据库集群的日志盘读取性能存在瓶颈,日志备份无法高效的对 clog 日志进行备份,从而触发该问题。
OceanBase 数据库集群日志备份的目的端介质或者网络存在瓶颈,日志备份无法高效的对 clog 日志进行备份,从而触发该问题。
基于当时 1 和 2 的性能,恰逢 OceanBase 数据库集群进行了大批量的数据写入,产生了比正常时段多更多的 clog,此时日志备份无法高效的对 clog 日志进行备份,从而触发该问题。
问题的风险及影响
日志备份中断。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。
解决方法
重新启动日志备份即可。
规避方式
监控日志盘、备份介质性能,确保性能正常,同时监控大事务的运行,尽量避免特大事务集中某个时段运行来缓解。