适用版本
OceanBase 数据库 V3.x 版本。
问题描述
OceanBase 数据库的 clog 模块报错:read info block data failed(ret=-4070)。
WARN [CLOG] update_min_using_file_id (ob_log_engine.cpp:459) [20461][0][Y0-0000000000000000-0-0] [lt=13] [dc=0] read info block data failed(ret=-4070, param={file_id:15944, offset:-1, partition_key:{tid:18446744073709551615, partition_id:-1, part_idx:268435455, subpart_idx:268435455}, log_id:18446744073709551615, read_len:0, timeout:100000000, is_proxy_request:false, svr_addr_seq:{server_addr:"0.0.0.0", server_seq:-1}}, file_id=15944, max_file_id=16774)
[2022-10-22 17:00:47.127443] WARN [CLOG] update_min_using_file_id (ob_log_engine.cpp:459) [20461][0][Y0-0000000000000000-0-0] [lt=6] [dc=0] read info block data failed(ret=-4070, param={file_id:15944, offset:-1, partition_key:{tid:18446744073709551615, partition_id:-1, part_idx:268435455, subpart_idx:268435455}, log_id:18446744073709551615, read_len:0, timeout:100000000, is_proxy_request:false, svr_addr_seq:{server_addr:"0.0.0.0", server_seq:-1}}, file_id=15944, max_file_id=17276)
问题原因
clog 文件块写坏导致,与磁盘和写文件时的 IO 异常相关。
一个正常的 clog 文件头,是以 LB 开头的,如下所示。

异常 clog 文件日志头字符则不规律,如下所示。

解决方法
获取到日志里报 -4070 错误的 file_id。
ret=-4070, param={file_id:15944查看当前 Clog 目录下的文件 ID。
ll /data/log1/$app_name/clog/*删除报错的 file_id 以及小于当前报错 ID 的 clog 文件。
说明
此处建议用
mv命令 。mv /data/log1/$app_name/clog/15940 /tmp/ mv /data/log1/$app_name/clog/1594... /tmp/ mv /data/log1/$app_name/clog/15944 /tmp/继续最新查询
observer.log日志,如果发现有新的 file_id,继续 1-3 步骤操作。ret=-4070, param={file_id:xxxx