observerj进程消失

【 使用环境 】生产环境 部署模式 6-6-6
【 使用版本 】4.3.1.0
【问题描述】ocp告警observer进程不存在,同时告警observer crash
【复现路径】问题出现前正常的使用应用系统,正常的跑ETL调度,批处理数据
【备注说明】一共3个节点进程消失掉线,znoe1域有2个节点,zone3域有1个节点,掉线后应用系统基本卡死状态,用户的查询等操作都出现阻塞卡慢问题。
【附件及日志】

1、observer crash的告警日志信息如下:
告警详情:[OBServer crash] 集群:wjw_hxk,主机:172.22.5.98,日志类型:observer,日志文件:/home/admin/wjw_hxk/oceanbase/log/observer.log,日志级别:INFO,关键字=CRASH ERROR!!!,错误码=-1,日志详情=[2024-08-28 16:43:10.192300] INFO pktc_resp_cb_on_sk_destroy (pktc_resp.h:41) [3257161][pnio1][T0][Y0-0000000000000000-0-0] [lt=5] PNIO resp_cb on sk_destroy: packet_id=1314615971 s=0xfffccc3fe9d8CRASH ERROR!!! IP=ffffffffffffffff, RBP=ffffffffffffffff, sig=11, sig_code=1, sig_addr=0x0, RLIMIT_CORE=unlimited, timestamp=1724834590193795, tid=2954538, tname=T1006_PX_G0, trace_id=YB42AC160575-00061F3DAE3E9B63-0-0, extra_info=(), lbt=, SQL_ID=11DAB0EEA42929F7CB34CF5BFFA3F823, SQL_STRING=INSERT /*+ monitor enable_parallel_dml parallel(1) opt_param(‘ddl_execution_id’, 0) opt_param(‘ddl_task_id’, 729357559) opt_para。

2、observer进程消失的告警分析数据(ocp告警事件下载的),故障节点ip为172.22.5.98/22/17
详情分析数据见附件压缩包:
告警分析数据_14000988.zip (710.1 KB)

查看中,生产环境比较紧急,建议提个官方悬赏贴,处理效率更高

1.可以参考 OceanBase应急三板斧 恢复业务

https://open.oceanbase.com/blog/13250502949

应急处理方式

场景一:当出现节点故障,业务停服或报错情况

**现象:**收到主机不可用或者observer不可用告警,业务反馈大量报错

**第一步:**首先快速检查主机可用性、网络连通行,排除因为网络抖动等导致的误报。

**第二步:**检查故障主机或连接不通的主机是否影响集群多数派。

  • 故障节点占多数派
    • 确认主机或者网络故障原因,评估是否能够快速恢复,如果可以,尽快恢复;
    • 如果不能快速恢复,则快速进行主备切换,将流量切换到备租户/备集群;
    • 主集群问题解决之后,等流量低峰期,再将业务切回到主库
  • 故障节点占少数派
    • 确认主机或者网络故障原因,评估是否能够快速恢复,如果可以,尽快恢复;
    • 如果不能快速恢复,则尝试登陆sys租户,如果可以登陆,进入第三步,如果不能登陆,跳到第四步;

**第三步:**如果可以登陆sys租户,检查各节点状态,以及各日志流状态

# 检查集群各节点状态
select * from OceanBase.DBA_OB_SERVERS;
# 检查集群各租户的日志流状态
select * from OceanBase.__all_ls_status;

正常情况下,可依赖OceanBase自身高可用机制,自动执行重新选举,选出新的leader,8秒内可快速恢复,如果未选出新的leader,几分钟内无法快速定位故障原因,业务着急恢复,则执行操作一

**操作一:**stop节点,将故障节点进行隔离,隔离之前,建议先检查下永久下线参数server_permanent_offline_time的值,默认为1小时,建议将其调大一点,防止节点故障超过一个小时未恢复而被提出集群:

# 检查永久下线参数值
show parameters like "%server_permanent_offline_time%";
# 停止节点,隔离故障节点
ALTER SYSTEM STOP SERVER 'svr_ip1:svr_port1';

在执行操作一之后2分钟还没有没恢复,执行操作二

**操作二:**对受到影响的租户进行切主操作,如果random配置,无脑选一个不包含问题observer的zone进行切主操作。

 ALTER TENANT tenant1 primary_zone='不包含问题observer的zone';

执行操作二之后,3分钟还没有缓解迹象,执行操作三

**操作三:**重启observer集群

如果集群是通过obd管理,则直接执行obd cluster restart 命令重启,具体如下:

obd cluster restart 集群名称 -c oceanbase-ce -- 重启整个ob集群

obd cluster restart 集群名称 -c oceanbase-ce -s xx.xx.xx.xx,xx.xx.xx.xx -- 只重启ob集群指定节点

如果集群是通过ocp管理,则在ocp管理页面上,执行集群重启

执行完操作三之后5分钟没有恢复迹象,则立刻执行主备集群切换,因为此时主租户已不可用,只能执行failover的切换,通过备集群的sys租户,执行切换命令

ALTER SYSTEM ACTIVATE STANDBY TENANT = tenant_name;

查询 DBA_OB_TENANTS 视图,确认备租户是否已切换为主租户

SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;

这里需要注意:Failover 操作通常是在主租户出现无法恢复的故障时所做的切换行为。执行 Failover 操作后,对应的备租户角色会变换成 PRIMARY。同时,如果对主租户故障前一直正常同步的备租户执行 Failover 操作,则执行 Failover 操作后,一般会产生百毫秒级别的数据损失,执行时间一般为秒级。

……

  1. 进行根因分析,麻烦发下observer.log,core文件 以及使用obdiag分析下报错前后10分钟到日志,参考命令及文档如下

obdiag analyze log --from “2023-10-08 10:25:00” --to “2023-10-08 11:30:00”

https://www.oceanbase.com/docs/common-obdiag-cn-1000000001214443

集群架构是什么样子的,麻烦去查看下宕机节点是否生成了core文件,参考上面介绍的生成个obdiag看一下具体报错

重新提了官方悬赏贴:observer进程消失

好的,你进入钉钉群

已确认为已知问题,可升级到432最新BP。