observer启动失败 [CLOG] do_load_ (ob_server_log_block_mgr.cpp:403)

【 使用环境 】测试环境
【 OB 】
【 使用版本 】Oceanbase 5.7.25-Oceanbase_CE-v4.0.0
【问题描述】
执行obd cluster stop obtest 后重新启动obd cluster start obtest 报clog磁盘空间不足启动失败,执行将clog一部分日志mv到其他磁盘
重启后出现ERROR [CLOG] do_load_ (ob_server_log_block_mgr.cpp:403) [17879][][T0][Y0-0000000000000000-0-0] [lt=8] check_log_pool_whehter_is_integrity_ failed, unexpected error(ret=-4016, this={dir::"/app/bcp/oceanbase4/data/clog/log_pool", dir_fd:14, meta_fd:15, log_pool_meta:{curr_total_size:25769803776
后将日志重新拷贝过来重启后还是一样的报错
【复现路径】问题出现前后相关操作
@论坛小助手

根据文档库中的信息,您遇到的问题可能与 Clog 日志磁盘的状态有关。以下是一些可能的解决方案:

  1. 检查磁盘状态和数据库负载情况
    根据文档片段 3,错误码 6325 表示 Clog 日志磁盘被 Hang 住。您可以先检查磁盘状态和数据库负载情况,确保磁盘没有被其他进程占用或挂起。

  2. 确保 Clog 日志的完整性和一致性
    您提到将 Clog 日志移动到其他磁盘后再拷贝回来,这可能导致日志文件的完整性受损。根据文档片段 7,如果转储不成功或宕机重启 clog 起始回放位点不推进,clog 文件就无法回收。建议您检查 Clog 日志的完整性和一致性,确保所有日志文件没有损坏。

  3. 清理不必要的 Clog 日志
    如果磁盘空间确实不足,您可以尝试清理一些不必要的 Clog 日志。根据文档片段 8,错误码 4184 表示磁盘空间满。您可以增加服务器以扩容,或者联系技术支持人员协助排查。

  4. 检查日志目录的权限
    根据文档片段 4,错误码 -4290 表示磁盘空间不足,但同时也提到了日志目录的权限问题。请确保日志目录的权限正确,可以执行如下命令:

    chown root /app/bcp/oceanbase4/data/clog/log_pool
    
  5. 联系技术支持人员
    如果以上步骤都无法解决问题,建议您联系 OceanBase 技术支持人员进行进一步的诊断和协助。

希望这些信息能帮助您解决问题。如果还有其他疑问,请随时联系 OceanBase 的技术支持团队。

检索到的文档如下:

  1. 4000 ~ 4499
  2. 6000 ~ 6999
  3. 使用 systemd 部署 OceanBase 数据库
  4. 9000 ~ 9499
  5. 日志同步问题
  6. 7000 ~ 7999

1.clog日志不能删除或者移动部分出来

2.这个问题解决需要看下具体的observer.log

3.不建议使用v4.0.0版本了,TP业务建议使用4.2.5,AP业务建议使用4.3.x最新版本

这是observer.log日志
[2024-11-25 16:45:56.096424] ERROR [CLOG] do_load_ (ob_server_log_block_mgr.cpp:403) [17879][][T0][Y0-0000000000000000-0-0] [lt=8] check_log_pool_whehter_is_integrity_ failed, unexpected error(ret=-4016, this={dir::"/app/bcp/oceanbase4/data/clog/log_pool", dir_fd:14, meta_fd:15, log_pool_meta:{curr_total_size:25769803776, next_total_size:25769803776, status:0}, min_block_id:963, max_block_id:1216, is_inited:true}, log_disk_path="/app/bcp/oceanbase4/data/clog", has_allocated_block_cnt=31) BACKTRACE:0xb553efb 0xb5459d6 0x3c43c13 0x3c43922 0x3c4371f 0x3c3a0d1 0x4415443 0x440ef59 0x440e2c3 0x5bd6276 0x5bd1545 0x3c173fc 0x2b1f21ee8555 0x3c16184
[2024-11-25 16:45:56.096538] ERROR [CLOG] init (ob_server_log_block_mgr.cpp:104) [17879][][T0][Y0-0000000000000000-0-0] [lt=111] do_load_ failed(ret=-4016, this={dir::"/app/bcp/oceanbase4/data/clog/log_pool", dir_fd:14, meta_fd:15, log_pool_meta:{curr_total_size:25769803776, next_total_size:25769803776, status:0}, min_block_id:963, max_block_id:1216, is_inited:true}, log_disk_base_path="/app/bcp/oceanbase4/data/clog") BACKTRACE:0xb553efb 0xb5459d6 0x3c3bfda 0x3c3bcf9 0x3c3bb00 0x3c3b952 0x440f1c4 0x440e407 0x5bd6276 0x5bd1545 0x3c173fc 0x2b1f21ee8555 0x3c16184
[2024-11-25 16:45:56.096588] WARN [CLOG] destroy (ob_server_log_block_mgr.cpp:116) [17879][][T0][Y0-0000000000000000-0-0] [lt=51] ObServerLogBlockMgr destroy(this={dir::"/app/bcp/oceanbase4/data/clog/log_pool", dir_fd:14, meta_fd:15, log_pool_meta:{curr_total_size:25769803776, next_total_size:25769803776, status:0}, min_block_id:963, max_block_id:1216, is_inited:true})
[2024-11-25 16:45:56.096669] ERROR [SERVER] init_io (ob_server.cpp:1546) [17879][][T0][Y0-0000000000000000-0-0] [lt=7] log block mgr init failed(ret=-4016, ret=“OB_ERR_UNEXPECTED”) BACKTRACE:0xb553efb 0xb5459d6 0x3c42f9b 0x3c42cb4 0x3c42ac9 0x3c2137b 0x5bf4857 0x5bd6490 0x5bd1545 0x3c173fc 0x2b1f21ee8555 0x3c16184
[2024-11-25 16:45:56.096736] ERROR [SERVER] init (ob_server.cpp:220) [17879][][T0][Y0-0000000000000000-0-0] [lt=67] init io failed(ret=-4016, ret=“OB_ERR_UNEXPECTED”) BACKTRACE:0xb553efb 0xb5459d6 0x3c42f9b 0x3c42cb4 0x3c42ac9 0x3c2137b 0x5bd665b 0x5bd20e6 0x3c173fc 0x2b1f21ee8555 0x3c16184
[

重新部署数据库,可以把磁盘数据也导进去吗?

这个是mv之后的日志吧,如果手动删除了部分clog,OB是启动不了的

对,是将文件mv 到另外一个路径,然后重新拷贝回来,看文件的创建时间变化了

根据您提供的 observer.log 日志信息,错误码 -4016 表示 Clog 日志池的完整性检查失败。这通常意味着 Clog 日志文件可能已经损坏或不完整。在这种情况下,重新部署数据库并保留现有数据是一个可行的解决方案,但需要注意以下几点:

1. 备份现有数据

在重新部署之前,确保备份现有的数据。您可以使用 obd 工具或手动备份数据文件。

2. 清理 Clog 目录

由于 Clog 日志文件可能已经损坏,建议在重新部署之前清理 Clog 目录。您可以删除或移动 Clog 目录中的文件,但请确保备份这些文件以防需要恢复。

3. 重新部署数据库

使用 obd 工具重新部署数据库。以下是重新部署的步骤:

  1. 停止集群

    obd cluster stop obtest
    
  2. 清理 Clog 目录

    mv /app/bcp/oceanbase4/data/clog /app/bcp/oceanbase4/data/clog_backup
    
  3. 重新部署集群

    obd cluster deploy obtest -c /path/to/your/deploy.yaml
    
  4. 启动集群

    obd cluster start obtest
    

4. 恢复数据

如果您有备份的数据文件,可以将这些文件恢复到新的部署中。具体步骤如下:

  1. 恢复数据文件

    cp -r /path/to/backup/data/* /app/bcp/oceanbase4/data/
    
  2. 恢复 Clog 文件(如果需要):

    cp -r /app/bcp/oceanbase4/data/clog_backup/* /app/bcp/oceanbase4/data/clog/
    
  3. 重启集群

    obd cluster restart obtest
    

5. 验证数据完整性

重新启动集群后,验证数据的完整性和一致性。您可以使用 obclient 连接到数据库并执行一些查询来确保数据没有丢失或损坏。

注意事项

  • 数据一致性:确保在恢复数据时,数据文件和 Clog 文件的一致性。
  • 备份:在进行任何操作之前,确保有完整的备份。
  • 日志分析:如果问题仍然存在,可以进一步分析 observer.log 日志文件,查找更多的错误信息。

希望这些步骤能帮助您解决问题。如果还有其他疑问或问题,请随时联系 OceanBase 的技术支持团队。

检索到的文档如下:

  1. oceanbase.DBA_WR_ACTIVE_SESSION_HISTORY

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

之前是停机后 mv出去的吗?

是的

应该是有问题的,这种应该无法启动了