问题现象
多副本 OceanBase 集群,一节点 OBServer 服务启动失败,报错 -4016 check_log_pool_whehter_is_integrity_ failed, unexpected error。
关键日志信息。
2024-11-22 14:20:38.507601] EDIAG [CLOG] do_load_ (ob_server_log_block_mgr.cpp:600) [751582][observer][T0][Y0-0000000000000000-0-0] [lt=16][errcode=-4016] check_log_pool_whehter_is_integrity_ failed, unexpected error(ret=-4016, this={dir::"/test/oceanbase/test_01/TEST/clog/log_pool", dir_fd:14, meta_fd:15, log_pool_meta:{curr_total_size:2680126701568, next_total_size:2680126701568, status:0}, min_block_id:0, max_block_id:19027, min_log_disk_size_for_all_tenants_:0, is_inited:true}, log_disk_path="/test/oceanbase/test_01/TEST/clog", has_allocated_block_cnt=20909) BACKTRACE:0x1276cc0d 0x74ec1cb 0x74ebc81 0x74eb8fc 0x74eb6f5 0x78e853a 0x78ddc72 0xa880542 0x74c2e14 0x7fb5a2c6e577 0x57224d0
问题原因
因机器系统环境问题,clog 文件丢失,无法初始化环境,导致 OBServer 启动失败。
问题的风险及影响
影响服务启动。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。
解决方法及规避方式
拷贝一份最大 block_id 的日志文件,文件名数字+1,然后再重启 OBServer 服务。
cp /home/admin/oceanbase/test_01/TEST/clog/log_pool/'max_block_id' /home/admin/oceanbase/test_01/TEST/clog/log_pool/'max_block_id+1'