ERROR 4038 (HY000): The observer or zone is not the master

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】 OceanBase_CE 4.2.1.3
【问题描述】清晰明确描述问题
obclient [test]> INSERT /*+ append enable_parallel_dml parallel(3) */ INTO t_p_hash select * from t_p_hash;
ERROR 4038 (HY000): The observer or zone is not the master

t_p_hash有8亿行记录,执行30分钟后报错,这个问题怎么处理? 谢谢

先收集下相关的日志,怀疑是一个已知问题,先在日志文件夹内执行grep “The observer or zone is not the master” 日志上会有Y开头的trace_id,再执行grep “${trace_id}”,即可获取完整日志

@渠磊 老师这个问题和规避方法能发下吗。遇到类似问题了,我暂时用旁路导入规避的

单从报错来说是一个无主报错,由此延伸的底层问题比较复杂,目前还没有更多的信息,可以使用obdiag的rca来看下。

obdiag rca run --scene=log_error 

4.2.1.3有一个已知的无主问题,升级版本后可规避

那不一样,我这边报错是bp10

这个报错一般是 OB_NOT_MASTER (-4038),表示当前请求打到了非 Leader 节点(日志流 Leader 已切换,或 Direct Load 协调节点上下文不在本机),大概率 Direct Load + 并行 DML 在长任务提交/协调阶段对 Leader 稳定性敏感造成的。

规避方案:

  1. 去掉 append 只使用并行
    /*+ enable_parallel_dml parallel(3) */
    2)LOAD DATA 旁路方式。

报错的就是 /*+ enable_parallel_dml parallel(4) */的方式,检查了下,先把enable_transfer和balance关了