oceanbase 启动不能

【 使用环境 】Ubuntu 22.04.3 LTS
【 OB or 其他组件 】
【 使用版本 】oceanbase/oceanbase-ce 4.4.2.0-100000032026021017
【问题描述】先突然间连接不到,报内存不能分配,然后运维人员,重启电脑,然后启动报错
【复现路径】问题出现前后相关操作
【附件及日志】
[2026-09-04 06:52:57.896339] INFO [SERVER] inner_main (main.cpp:627) [140][observer][T0][Y0-0000000000000001-0-0] [lt=0] succ to init logger(default file=“log/observer.log”, rs file=“log/rootservice.log”, election file=“log/election.log”, trace file=“log/trace.log”, audit_file=“audit/observer_139_20260904065257-125819558.aud”, alert file=“log/alert/alert.log”, max_log_file_size=268435456, enable_async_log=true)
[2026-09-04 06:52:57.896465] INFO [SERVER] inner_main (main.cpp:631) [140][observer][T0][Y0-0000000000000001-0-0] [lt=123] Virtual memory : 946147328 byte
[2026-09-04 06:52:57.896474] INFO [SERVER] inner_main (main.cpp:634) [140][observer][T0][Y0-0000000000000001-0-0] [lt=9] Build basic information for each syslog file(info=“address: , observer version: OceanBase_CE 4.4.2.0, revision: 100000032026021017-e859d1b9c9a6d11d856f4fed5b6385f1a6795820, sysname: Linux, os release: 6.2.0-26-generic, machine: x86_64, tz GMT offset: 00:00”)
bin/observer
observer (OceanBase_CE 4.4.2.0)

REVISION: 100000032026021017-e859d1b9c9a6d11d856f4fed5b6385f1a6795820
BUILD_BRANCH: HEAD
BUILD_TIME: Feb 10 2026 17:54:03
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:

Copyright (c) 2011-present OceanBase Inc.

[2026-09-04 06:52:58.082652] INFO [CLOG] load_meta_ (ob_server_log_block_mgr.cpp:776) [140][observer][T0][Y0-0000000000000001-0-0] [lt=5] load_meta_ success(ret=0, this={dir::"/root/demo/store/clog/log_pool", dir_fd:19, meta_fd:20, log_pool_meta:{curr_total_size:0, next_total_size:0, status:0}, min_block_id:9, max_block_id:80, min_log_disk_size_for_all_tenants_:0, is_inited:true})
[2026-09-04 06:52:58.082662] INFO [CLOG] try_continous_to_resize_ (ob_server_log_block_mgr.cpp:750) [140][observer][T0][Y0-0000000000000001-0-0] [lt=5] current status is normal, no need continous do resize(ret=0, this={dir::"/root/demo/store/clog/log_pool", dir_fd:19, meta_fd:20, log_pool_meta:{curr_total_size:0, next_total_size:0, status:0}, min_block_id:9, max_block_id:80, min_log_disk_size_for_all_tenants_:0, is_inited:true})
[2026-09-04 06:52:58.082667] EDIAG [CLOG] do_load_ (ob_server_log_block_mgr.cpp:626) [140][observer][T0][Y0-0000000000000001-0-0] [lt=4][errcode=-4016] check_log_pool_whehter_is_integrity_ failed, unexpected error(ret=-4016, this={dir::"/root/demo/store/clog/log_pool", dir_fd:19, meta_fd:20, log_pool_meta:{curr_total_size:0, next_total_size:0, status:0}, min_block_id:9, max_block_id:80, min_log_disk_size_for_all_tenants_:0, is_inited:true}, log_disk_path="/root/demo/store/clog", has_allocated_block_cnt=65) BACKTRACE:0xa82d738 0xa6ccafd 0xa70b546 0xa70af77 0xa70aecd 0xa70acee 0x1038c85d 0x10380451 0x1037c483 0x14378ecb 0xff25202 0xff2b0d2 0x28814290 0xff27567 0x7ff56463acf3 0xabee4ae
[2026-09-04 06:52:58.082699] EDIAG [CLOG] init (ob_server_log_block_mgr.cpp:99) [140][observer][T0][Y0-0000000000000001-0-0] [lt=31][errcode=-4016] do_load_ failed(ret=-4016, this={dir::"/root/demo/store/clog/log_pool", dir_fd:19, meta_fd:20, log_pool_meta:{curr_total_size:0, next_total_size:0, status:0}, min_block_id:9, max_block_id:80, min_log_disk_size_for_all_tenants_:0, is_inited:true}, log_disk_base_path="/root/demo/store/clog") BACKTRACE:0xa82d738 0xa6ccafd 0xa6ad3e9 0xa6acfcd 0xa6ace0a 0xa6dd9f2 0x1038166f 0x1037c599 0x14378ecb 0xff25202 0xff2b0d2 0x28814290 0xff27567 0x7ff56463acf3 0xabee4ae

1 个赞

可以从这几方面考虑下:
|Demo/测试环境,数据不重要|直接 obd cluster destroy + 重新部署,最快最稳|
|生产环境,多节点集群|删除该节点 → 重新加入集群|
|单节点生产环境,数据重要|先执行上面的排查步骤收集信息,联系 OceanBase 官方技术支持,不要自行删文件|
|内存不足|增加物理内存或调整 memory_limit / system_memory 参数|

使用obd启动的么?如果是obd.log日志 启动时候的observer.log也提供一下

就是数据不大,但都是比较重要的测试数据,整个目录已经备份,就看看有无办法恢复。小型企业一般都是单个机部署,有些厂不定时断电的

抱歉,新用户上传不到文件observer.log,整个文件交给ai分析是,

现状分析

  1. 数据确实存在 :从截图中可以看到,您的 store 目录下有 sstable、clog、slog 以及租户目录(tenant_1, tenant_1001, tenant_1002),这说明里面有真实的业务数据和租户信息,绝对不能直接用 rm -rf 删掉

  2. 崩溃的直接原因(-4016 错误)

codeText

check_log_pool_whehter_is_integrity_ failed, unexpected error (ret=-4016, ... has_allocated_block_cnt=65)

这是 OceanBase 的日志块管理器(Log Block Manager)在启动时,对 /root/demo/store/clog/log_pool 下的物理块和各租户目录下的 clog 块数量(has_allocated_block_cnt=65)进行一致性校验时,发现实际物理文件数与元数据记录不匹配

  1. 为什么会不一致?
    在之前的报错中(如 dir_scan: failed to make directory… because File exists),系统可能经历过非正常的强行覆盖、部分目录被删、或者 OBD 重新部署时关联错了旧的 store 目录,导致元数据和底层的 clog 块产生了冲突。

使用dock启动的,命令如下:

docker run -p 2881:2881 -v $PWD/docker/ob4_4_2:/root/ob -v $PWD/docker/ob4_4_2_obd:/root/.obd/cluster --name obstandalone442 -e MODE=SLIM -e OB_SYS_PASSWORD=root -e OB_TENANT_PASSWORD=123456 -d oceanbase/oceanbase-ce:4.4.2.0-100000032026021017

从上面的日志来看 应该是clog损坏了 导致的启动有问题

那能不能恢复尼?或者有无工具可以提取里面的数据?

不行了 建议重新部署吧

嗯?一点办法都没有吗?

这些文件都在,就算不能完整恢复,某些也可以恢复?

而且重启前2小时都没有用户更新操作数据库,按道理应该不会写日志吧?

可以尝试使用ob_admin 看看是否可以恢复。

嗯嗯,我尝试一下,有无具体操作命令或者操作过程?

ob_admin 简介 - OceanBase 数据库 V5.0.1 | OceanBase 文档中心 看看文档 看看具体怎么操作

okok