首批通过分布式安全可靠测评,为关键业务系统打造
ob_cluster_sync_delay_time_too_long 主备集群同步延迟过大告警
更新时间:2026-04-14 11:55:54
告警描述
说明
此告警仅针对 OceanBase 数据库 4.0.0.0 以下版本的集群生效。
主备库之间会同步 redo-log 日志, 以保持主集群和备集群的数据一致。异步日志传输模式下,主备集群的日志传输不实时,备集群的日志同步可能存在一定延迟。正常情况下,该延迟不会超过 10 分钟,如果大于 10 分钟,则会触发该告警。
告警原理
说明
此告警仅针对 OceanBase 数据库 4.0.0.0 以下版本的集群生效。
下表列出了该告警监控逻辑中涉及的关键参数。
| 参数 | 值 |
|---|---|
| 监控指标 | sync_delay_time |
| 数据来源 | 由 OCP-Server 采集内部表 v$OB_CLUSTER 的 CURRENT_SCN 字段值。 OceanBase 集群创建 1 小时后,且主库存在普通租户,而非只有系统租户时,开始采集。 CURRENT_SCN 字段表示主备库一致的时间点,用当前时间减去该字段的值则表示同步延迟时间。 |
| 采集指标(单位:秒) | sync_delay_time |
| 监控表达式 | max(sync_delay_time{@LABELS}) by (@GBLABELS) |
| 采集周期 | 60 秒 |
监控指标 sync_delay_time 的值表示 OceanBase 主备集群延迟时间,当延迟时间大于阈值(默认为 600s)时触发告警。
规则信息
| 监控指标 | 默认阈值(单位:秒) | 持续时间 | 检测周期 | 消除周期 |
|---|---|---|---|---|
| sync_delay_time | 600 秒 | 0 秒 | 60 秒 | 5 分钟 |
告警信息
| 告警触发方式 | 告警等级 | 范围 |
|---|---|---|
| 基于监控指标的表达式 | 警告 | OB 集群 |
告警模板
告警概述模板:${alarm_target} ${alarm_name}
告警详情模板:集群:${ob_cluster_name},告警:${alarm_name} 日志传输延迟 ${value_shown}, 超过 ${alarm_threshold} 秒
告警概述样例:ob_cluster=obcluster-1 OB 集群同步延迟时间过长
告警详情样例:集群:obcluster-1,告警:OB 集群同步延迟时间过长,日志传输延迟 3994.293 秒, 超过 600.0 秒
其中,${alarm_target} 的格式为 ob_cluster=xxxxxxx,ob_cluster 为产生告警的集群的名称。
对系统的影响
备集群延迟过大,可能会导致数据不一致,进而导致主备切换无法正常进行。
可能原因
主备集群网络故障。
备集群负载过高或资源不足。
主备集群有不正常的服务器。
主集群不可用。
备集群存在异常挂起的同步租户任务。
处理方法
参照如下步骤确定触发告警的具体原因,并针对具体原因解决问题,消除告警。
执行如下命令查看主备集群同步延迟是否依然很大。
use oceanbase; select (time_to_usec(now(6)) - current_scn)/1000000 from v$ob_cluster;当查询结果小于 600 时,则延迟正常,可手动消除告警。
当查询结果大于 600 时,则延迟依然过大,请继续执行后续步骤。
确认触发告警的原因并清理故障。
通过
ping命令检查主备集群网络是否故障。检查备集群是否负载过高或资源不足。
如果负载过高或资源不足,除了该告警还会触发其他告警,可查看对应告警参考排除故障。
检查主备集群的服务器是否正常。
分别登录主集群和备集群,执行以下语句,检查是否存在未启动的服务器。
SELECT * FROM __all_server WHERE start_service_time <=0;如有服务器未启动,则重启这些服务器。
检查主集群是否可连接,能否正常执行 DDL 语句和 DML 语句。
如不正常,请联系技术支持人员定位主集群异常原因并恢复。
检查备集群是否有同步普通租户异常的。
登录备集群,执行以下语句,检查是否存在状态异常的租户。
SELECT TENANT_ID,USEC_TO_TIME(REFRESHED_SCHEMA_VERSION),DDL_LAG,USEC_TO_TIME(MIN_SYS_TABLE_SCN),USEC_TO_TIME(MIN_USER_TABLE_SCN) FROM V$OB_CLUSTER_STATS;如有状态异常的租户,需定位这些租户同步任务挂起的原因。
确定备集群是否有同步系统租户异常的。
分别登录主集群、备集群,执行以下 SQL,对比主集群和备集群租户差异并记录这些租户。
select * from __all_tenant;登录主集群,执行以下 SQL,查看该租户相关的 DDL 执行时间并记录该时间。
select * from __all_ddl_operation where ddl_stmt_str !='';执行如下命令查看该时间段内是否进行了 freeze 操作。freeze 操作会引发循环依赖问题。
select * from __all_core_table where table_name like "%freeze%"如果有 freeze 操作,需删除并重建备集群。