首批通过分布式安全可靠测评,为关键业务系统打造
GTS 和 STS 常见问题排查手册
更新时间:2024-07-04 07:41
OB_NOT_MASTER (-4038) 错误排查指南
检查是否存在 Leader
使用以下查询确认对应租户日志流是否有 Leader:
obclient> select * from __all_virtual_ha_diagnose where tenant_id = 1xxx and ls_id =1;如果无 Leader,请联系技术支持人员进行确认。
如果环境无法登录来执行 SQL 查询,可通过 election.log 查看是否存在无主问题。
确认 GTS 获取的 Leader 是否正确
若存在 Leader,确认 Location Service 的 Leader 是否需要更新。详细可参考OceanBase 数据库 V4.x 版本中 Location Service 问题排查
在 Leader 所在节点查找相关错误
ObTimestampAccess 状态检查
如果状态显示为 FOLLOWER,则 ObTimestampService 可能未被调用 switch to leader 接口。通过日志进行进一步确认:
ObTimestampService switch to leader successObTimestampService 检查 Leader 状态
如果在 check leader 时状态为 follower,ObTimestampService 的 Leader 应与 log_handler 状态同步。
对 clog 和 role change service 状态进行排查
无主问题通常是因为 role change service 卡住导致的,需检查 clog。
OB_EAGAIN (-4023) 错误排查指南
当 ID Service 没有可分配区间时,会返回 OB_EAGAIN。若出现长期无可分配区间,通常是因为预分配日志未回调。通过以下命令查看相关日志:
grep "handle submit callback" observer.log如果找到
submit log callback use too much time的相关日志,意味着存在日志回调延迟问题。如发现 log 长时间未回调,请联系技术支持人员进行处理。
STS 获取失败问题排查指南
检查 Leader 条件,类似于 GTS 排查流程。可使用的虚表包括:
obclient> SELECT gmt_create, svr_ip, svr_port, event, name3, value3 FROM __all_server_event_history WHERE module="ELECTION" AND value1=tenant_id AND value2=ls_id ORDER BY gmt_create; obclient> SELECT * FROM __all_virtual_log_stat WHERE tenant_id = xxxx AND ls_id = 1; obclient> SELECT * FROM __all_virtual_ha_diagnose WHERE tenant_id = 1xxx AND ls_id = 1;如果 Leader 正常,检查主备库状态信息,确定是否存在主备切换卡住问题。
obclient> SELECT * FROM __all_virtual_tenant_info WHERE tenant_id = xxxx; -- 检查切换状态 obclient> SELECT * FROM __all_virtual_log_restore_source WHERE tenant_id = xxxx; -- 检查备库源 obclient> SELECT * FROM DBA_OB_ROOTSERVICE_EVENT_HISTORY WHERE EVENT LIKE "%switchover to%" ORDER BY TIMESTAMP; -- 检查历史事件和对应的 trace_id如果主备库切换正常,检索备库时钟源日志,确定是否有错误信息:
grep "Txxxx_STSWorker" observer.log
适用版本
OceanBase 数据库 V4.x 版本。