OceanBase 4.4.1 CE 单机启动失败 -4070,clog block checksum 损坏
环境
OceanBase 4.4.1.0 CE,OBD 单节点部署,express_oltp 场景
Kylin V10 SP1,x86_64,31GB 内存
数据目录:/root/oceanbase-ce/store/
现象
observer 启动后 10 秒自动退出,报错:
ERROR [SERVER] start (ob_server.cpp:1185) [server_start 9/18] observer instance start fail
EDIAG [STORAGE] handle_tenant_create_commit … errcode=-4070 fail to replay create tenant
EDIAG [CLOG] OB_LOG_CHECKSUM_MISMATCH … “invalid data or checksum mismatch”
根因定位
系统崩溃前内存不足(Free: 259M, Need: 6G),observer 写入 clog/log_pool/2981 时被中断,导致该文件 checksum 损坏
SSTable/slog 中的 super_block 硬编码指向 file_id=106, ls_meta_entry[2nd=2981],observer 启动时强制回放到此处
读取 block 2981 → checksum 校验失败 → -4070 → observer 退出
ob_admin log_tool dump_meta 确认:ERROR|CLOG|OB_LOG_CHECKSUM_MISMATCH|-4070|block 2981
尝试过的修复
–mode standalone / recovery / normal — 全部 -4070
–scn 0 闪回 — 无效
删除损坏 slog 文件(106, server/14-17)— 级联回退到更老的 checkpoint,对应的 clog 块已被回收
Python 文本替换 block_file 中 super_block(file_id=106→105, 2nd=2981→2980)— slog 中为二进制编码,文本替换无效
清空所有 slog + 删 clog/tenant_1 — log_pool integrity 失败(-4016)
填零 block 2981 — observer 仍从 slog 读取原始 super_block
ob_admin 工具 — 仅支持读取,不支持写入 super_block
obdiag — 集群未运行无法连接
重命名 observer.config.bin — 不相关
核心矛盾
SSTable block_file (8GB) 数据完好,但 super_block 以二进制格式多层存储(SSTable / slog/tenant_1/106 / slog/server/),CE 版没有工具可以修改。clog 归档未开启,无副本可恢复。
求助
CE 版是否有隐藏参数(如 _skip_replay、_bypass_checkpoint)可以跳过 super_block 的 replay 检查?或者是否有内部工具可以修改 SSTable 中的 super_block 元数据指针?
