首批通过分布式安全可靠测评,为关键业务系统打造
合并报错 errcode=-4016, file="ob_micro_block_cache.cpp" 的原因和解决方法
更新时间:2025-06-12 02:31
问题现象
OCP 告警 OBServer 合并失败,告警信息如下。
[2025-03-05 14:47:48.117625] WDIAG [STORAGE] process (ob_tablet_merge_task.cpp:1604) [176083][T1004_MINOR_EXE][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=3][errcode=-4034] failed to merge partition(ret=-4034)
observer.log 日志中有类似报错信息。
[2025-03-05 14:27:22.675723] ERROR issue_dba_error (ob_log.cpp:1875) [176014][T1004_DiskCB][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=40][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4016, file=“ob_micro_block_cache.cpp”, line_no=342, info=“Fail to deserialize record header”)
[2025-03-05 14:27:22.675737] EDIAG [STORAGE] process_block (ob_micro_block_cache.cpp:342) [176014][T1004_DiskCB][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=14][errcode=-4016] Fail to deserialize record header(ret=-4016, block_id=, offset=1889087) BACKTRACE:0x12435d5c 0x5069065 0x51af008 0x51aeb1b 0x51aea5e 0x51ae886 0xe92595f 0x5082f33 0x5081d05 0x127090f1 0x127054b0 0x7f0e69c081ca 0x7f0e698398d3
问题原因
服务器磁盘问题,如磁盘 hang 或者磁盘损坏。
操作系统的 BUG 导致磁盘出现坏块。
OceanBase 产品缺陷 BUG。
问题版本
OceanBase 数据库 V4.x 版本。
解决方法
如果长时间未恢复需进行如下处理:
检查磁盘是否异常
dmesg -T等查看操作系统日志,如果磁盘异常建议更换磁盘。检查 IO 负载是否长时间较高,如果 IO 负载一直较高,需要降低负载,可以暂停部分业务或者更换性能更好的磁盘。
检查 OS 日志,看下是否存在 OS 等 BUG 导致磁盘出现坏块。
可能是 OceanBase 产品缺陷 BUG,建议反馈至 OceanBase 数据库技术支持团队。