[errcode=-4103] observer异常宕机了,重启一直失败

【 使用环境 】 测试环境
【 OB or 其他组件 】observer
【 使用版本 】4.3.5.1
【问题描述】异常宕机后重启一直提示无法序列化,尝试了用observer.config.bin.history 覆盖 observer.config.bin还是异常
【复现路径】问题出现前后相关操作
【附件及日志】
[2025-06-19 11:14:29.517573] INFO [SHARE] load_config (ob_config_manager.cpp:129) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=20] Using config file(path=“etc/observer.config.bin”)
[2025-06-19 11:14:29.537636] WDIAG [COMMON] check_payload_checksum (ob_record_header.cpp:89) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=11][errcode=-4103] checksum error.(crc_check_sum=1050466320, data_checksum=1078149730, ret=-4103)
[2025-06-19 11:14:29.537669] EDIAG [SHARE.CONFIG] deserialize_ (ob_server_config.cpp:540) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=25][errcode=-4103] check data checksum failed(ret=-4103) BACKTRACE:0x95997d6 0x9097f06 0x91ea5c6 0x91e9ed6 0x91e9e0a 0x91e9c01 0x1b25fdd5 0x1b25f3d3 0x1b229c47 0x11890949 0x1188481d 0xdb6de55 0x248cd8d0 0xdb690bd 0x7f060d63acf3 0x98a5154
[2025-06-19 11:14:29.537744] WDIAG deserialize (ob_server_config.cpp:516) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=74][errcode=-4103] deserialize_ fail(slen=1280, pos=32, ret=-4103)
[2025-06-19 11:14:29.537752] EDIAG [SHARE] load_config (ob_config_manager.cpp:144) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=7][errcode=-4103] Deserialize server config failed(path=“etc/observer.config.bin”, ret=-4103) BACKTRACE:0x95997d6 0x9097f06 0x9097469 0x9096f36 0x9096bd4 0x90969cb 0x1b22a6fc 0x1b229db3 0x11890949 0x1188481d 0xdb6de55 0x248cd8d0 0xdb690bd 0x7f060d63acf3 0x98a5154
[2025-06-19 11:14:29.540926] EDIAG [SERVER] init_config (ob_server.cpp:2054) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=37][errcode=-4103] load config from file failed(ret=-4103, ret=“OB_CHECKSUM_ERROR”) BACKTRACE:0x95997d6 0x9097f06 0x9097469 0x9096f36 0x9096bd4 0x90969cb 0x118c2198 0x11892051 0x1188481d 0xdb6de55 0x248cd8d0 0xdb690bd 0x7f060d63acf3 0x98a5154
[2025-06-19 11:14:29.540965] EDIAG [SERVER] init (ob_server.cpp:244) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=35][errcode=-4103] init config failed(ret=-4103, ret=“OB_CHECKSUM_ERROR”) BACKTRACE:0x95997d6 0x9097f06 0x9097469 0x9096f36 0x9096bd4 0x90969cb 0x118939b2 0x11887182 0xdb6de55 0x248cd8d0 0xdb690bd 0x7f060d63acf3 0x98a5154
[2025-06-19 11:14:29.540990] WDIAG [STORAGE.TRANS] getClock (ob_clock_generator.h:70) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=17][errcode=-4006] clock generator not inited
[2025-06-19 11:14:29.541109] INFO [SERVER] init (ob_server.cpp:250) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=110] [server_start 1/18] observer init begin.
[2025-06-19 11:14:29.541116] INFO [LIB] set_param (achunk_mgr.cpp:31) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=5] set large page param(large_page_type_=0)
[2025-06-19 11:14:29.541123] EDIAG [SERVER] init (ob_server.cpp:554) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=5][errcode=-4103] [OBSERVER_NOTICE] fail to init observer(ret=-4103, ret=“OB_CHECKSUM_ERROR”) BACKTRACE:0x95997d6 0x9097f06 0x9097469 0x9096f36 0x9096bd4 0x90969cb 0x1189b532 0x1188a192 0xdb6de55 0x248cd8d0 0xdb690bd 0x7f060d63acf3 0x98a5154
[2025-06-19 11:14:29.541155] ERROR [SERVER] init (ob_server.cpp:558) [7381][observer][T0][Y0-0000000000000001-0-0] [lt=9][errcode=-4103] [server_start 2/18] observer init fail. you may find solutions in previous error logs or seek help from official technicians

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

日志采集场景: 集群无法连接
日志采集命令: obdiag gather scene run --scene=observer.cluster_down

根因分析场景: 事务其他错误
根因分析命令: obdiag rca run --scene=transaction_other_error --env “{error_code=’-4103’}”

推荐使用 obdiag 工具进行日志采集和根因分析,以便确认问题所在。通过上述命令可以收集到与 observer 异常宕机及重启失败相关的日志信息,并尝试分析错误代码 -4103 的具体原因。请您将采集到的日志压缩包提供给我们以进一步排查问题。

另外,为了确定具体的问题,在此需要您提供一些信息:

  1. observer.config.bin 文件的最后修改时间是什么时候?是否在异常发生前有对其进行过手动或程序修改?
  2. 是否有对 OceanBase 集群进行过升级、配置变更或其他操作?如果有,请详细描述操作步骤和时间点。
  3. 当前使用的 OceanBase 版本号是多少?
  4. 日志中是否有其他伴随错误信息(例如文件权限问题或磁盘空间不足)?
  5. observer.config.bin.history 文件的内容与 observer.config.bin 是否完全一致?是否尝试对比过这两个文件的内容差异?

附上敏捷诊断工具 obdiag 使用帮助链接

把上面的整个observer.log日志 都上传一下

  • 错误码 -4103 对应的是 OB_CHECKSUM_ERROR,这通常表示数据文件的校验和不匹配,可能是由于数据文件损坏或磁盘问题导致。

因为机房原因停电导致了一次宕机,这个数据文件能修复吗或者删除不必要的文件先启动

根据文档库中的信息,当节点因为硬件问题(如停电)导致提供数据库服务异常时,可以采取以下应急措施来尝试恢复节点:

  1. 确认集群冗余资源
    首先确保集群中有足够的冗余资源(OBServer 机器),可以代替故障节点进行工作。如果集群中其他节点正常运行且有足够的冗余副本,那么可以通过替换故障节点的方式解决问题。

  2. 检查 server_permanent_offline_time 参数设置
    在 OceanBase 数据库中,server_permanent_offline_time 参数控制“集群中某个节点不可用多长时间后,OceanBase 将其踢出成员列表”。例如,假设某个 OB 集群中 server_permanent_offline_time 的值为 2h,那么意味着当某台节点宕机后,在 2 小时内如果可以恢复,那么拉起后的 OB 节点数据依然有效,只需追平宕机期间落后的增量数据即可。如果宕机超过 2 小时,则需要重新从其他副本同步数据。

  3. 尝试拉起 observer 进程
    如果节点宕机是由于非硬件故障(如 core dump 场景),可以尝试直接拉起 observer 进程。具体操作步骤如下:

    • 检查日志文件,确认是否有其他伴随错误信息(如文件权限问题或磁盘空间不足)。
    • 如果 observer.config.bin 文件损坏,可以尝试使用 observer.config.bin.history 文件覆盖 observer.config.bin 文件后再次启动。如果仍然失败,可能需要进一步排查配置文件的完整性。
  4. 隔离或替换故障节点
    如果无法第一时间确认是否因硬件故障导致的节点宕机(例如网络抖动、掉电等其他原因),可以考虑以下两种方案:

    • 隔离节点:通过执行 ALTER SYSTEM ISOLATE SERVER 'xxx.xxx.xxx.xxx:2882'; 命令将节点隔离,待问题修复后再执行 ALTER SYSTEM START SERVER 'xxx.xxx.xxx.xxx:2882'; 启动节点。
    • 替换节点:如果明确是硬件异常导致的数据库问题,可以直接替换故障机器。
  5. 删除不必要的文件以启动
    如果确认 observer.config.bin 文件损坏且无法修复,可以尝试删除该文件并重新生成默认配置文件。但请注意,此操作可能会丢失部分自定义配置,需谨慎操作。具体步骤如下:

    • 删除 observer.config.bin 文件:rm etc/observer.config.bin
    • 启动 observer 进程,系统会自动生成新的默认配置文件。

注意:在执行上述操作前,请务必备份相关文件,并确认集群中有足够的冗余资源以保证数据安全。如果问题仍未解决,建议联系 OceanBase 的人工答疑以获取更多帮助。

检索到的文档如下:

  1. 节点宕机
  2. 其他硬件&网络相关问题
  3. RESTORE
  4. 网络抖动
  5. 执行指定路径的恢复
  6. 停止备份
  7. CANCEL RESTORE
  8. CANCEL BACKUP

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

如果是文件损坏 应该就是ob启动所必需的文件导致的问题 不是必须不会报错的

1 个赞