【 使用环境 】测试环境
【 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 日志磁盘的状态有关。以下是一些可能的解决方案:
-
检查磁盘状态和数据库负载情况:
根据文档片段 3,错误码 6325 表示 Clog 日志磁盘被 Hang 住。您可以先检查磁盘状态和数据库负载情况,确保磁盘没有被其他进程占用或挂起。 -
确保 Clog 日志的完整性和一致性:
您提到将 Clog 日志移动到其他磁盘后再拷贝回来,这可能导致日志文件的完整性受损。根据文档片段 7,如果转储不成功或宕机重启 clog 起始回放位点不推进,clog 文件就无法回收。建议您检查 Clog 日志的完整性和一致性,确保所有日志文件没有损坏。 -
清理不必要的 Clog 日志:
如果磁盘空间确实不足,您可以尝试清理一些不必要的 Clog 日志。根据文档片段 8,错误码 4184 表示磁盘空间满。您可以增加服务器以扩容,或者联系技术支持人员协助排查。 -
检查日志目录的权限:
根据文档片段 4,错误码 -4290 表示磁盘空间不足,但同时也提到了日志目录的权限问题。请确保日志目录的权限正确,可以执行如下命令:chown root /app/bcp/oceanbase4/data/clog/log_pool
-
联系技术支持人员:
如果以上步骤都无法解决问题,建议您联系 OceanBase 技术支持人员进行进一步的诊断和协助。
希望这些信息能帮助您解决问题。如果还有其他疑问,请随时联系 OceanBase 的技术支持团队。
检索到的文档如下:
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
工具重新部署数据库。以下是重新部署的步骤:
-
停止集群:
obd cluster stop obtest
-
清理 Clog 目录:
mv /app/bcp/oceanbase4/data/clog /app/bcp/oceanbase4/data/clog_backup
-
重新部署集群:
obd cluster deploy obtest -c /path/to/your/deploy.yaml
-
启动集群:
obd cluster start obtest
4. 恢复数据
如果您有备份的数据文件,可以将这些文件恢复到新的部署中。具体步骤如下:
-
恢复数据文件:
cp -r /path/to/backup/data/* /app/bcp/oceanbase4/data/
-
恢复 Clog 文件(如果需要):
cp -r /app/bcp/oceanbase4/data/clog_backup/* /app/bcp/oceanbase4/data/clog/
-
重启集群:
obd cluster restart obtest
5. 验证数据完整性
重新启动集群后,验证数据的完整性和一致性。您可以使用 obclient
连接到数据库并执行一些查询来确保数据没有丢失或损坏。
注意事项
- 数据一致性:确保在恢复数据时,数据文件和 Clog 文件的一致性。
- 备份:在进行任何操作之前,确保有完整的备份。
-
日志分析:如果问题仍然存在,可以进一步分析
observer.log
日志文件,查找更多的错误信息。
希望这些步骤能帮助您解决问题。如果还有其他疑问或问题,请随时联系 OceanBase 的技术支持团队。
检索到的文档如下:
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
之前是停机后 mv出去的吗?
是的
应该是有问题的,这种应该无法启动了