首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.0 版本容灾问题排查(RS 相关)
更新时间:2025-06-23 06:06
容灾相关视图介绍
查看
DBA_OB_ROOTSERVICE_EVENT_HISTORY视图有关过往历史执行过的容灾任务结果。select * from DBA_OB_ROOTSERVICE_EVENT_HISTORY where module like "%disaster%" and value1 = $TENANT_ID and value2 = $LS_ID;查看
V$OB_LS_REPLICA_TASK_PLAN视图看当前需要生成哪些容灾任务。select * from oceanbase.V$OB_LS_REPLICA_TASK_PLAN where tenant_id = $TENANT_ID and ls_id = $LS_ID;查看
CDB/DBA_OB_LS_REPLICA_TASKS视图看当前正在执行的容灾任务。select * from oceanbase.CDB_OB_LS_REPLICA_TASKS where tenant_id = $TENANT_ID and ls_id = $LS_ID;或
select * from oceanbase.DBA_OB_LS_REPLICA_TASKS where ls_id = $LS_ID;
容灾相关问题排查
排查历史容灾任务报错原因
查看某个日志流的容灾任务执行历史执行如下 SQL。
select * from oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY where module like "%disaster%" and value1 = $TENANT_ID and value2 = $LS_ID;
其中 finish 的事件中的 name6 和 value6 记录了任务的执行结果,其中 0 说明该次任务执行成功,如果 非0 则反映了该次任务执行的报错结果。其中 elapsed 字段标明了该次任务的执行时长,ret_comment 描述了失败的原因,如果没有失败的报错信息,可以获取对应 task_id,去当时的 RS 上按以下的命令搜索相关的日志。
grep "DRTASK_NOTICE" rootservice.log* | grep "$TASK_ID"
搜索到 finish send disaster recovery task 可以看到任务的详细信息,找到这次任务的目的端,去目的端搜索以下的日志。
grep “DRTASK_NOTICE” observer.log* | grep "$TASK_ID"
这里应该可以看到对应的报错日志,获取到报错的 trace,可以联系 OceanBase 技术支持人员协助排查具体的原因。
排查当前容灾任务执行情况
如果当前有容灾任务卡住了,很长时间没有执行完,可以按照此文档继续排查:OceanBase 数据库 V4.0 版本迁移 & 复制 & Rebuild 排查指南。
排查容灾任务没有生成/调度的原因
搜索当前的 RS 日志,确定日志的 trace。
grep "start try tenant disaster recovery" rootservice.log | grep "tenant_id=$TENANT_ID"
获取找到的 trace 并搜索对应时间点的日志,可以找到对应的报错或者 info 日志,如果没法确认的话,可以联系 OceanBase 技术支持人员协助排查确认任务未生成原因。
grep "$TRACE_ID" rootservice.log
适用版本
OceanBase 数据库 V4.0 版本。