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出去的吗?

是的

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