首批通过分布式安全可靠测评,为关键业务系统打造
OBServer 服务器日志目录磁盘使用率超限报错 4264
更新时间:2026-06-16 09:21
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。
问题现象
OCP 白屏界面上持续告警,告警事件详情如下。
告警概述:alarm_template_id=0:ob_cluster=xxx-1661252989:host=xxx OBServer 服务器日志目录磁盘使用率超限。
告警详情:集群:xxx,主机:xxx.xxx.xxx.xxx,告警:OB服务器日志目录磁盘使用率超限。日志目录 /data/log1 挂载点 /data/log1 磁盘使用率 95.003 超过 95 %。查看告警处理建议。
同时对应 IP 的主机上 observer.log 中报错。
```shell
[root@localhost log]# tail observer.log
...
...
[2023-02-14 16:51:10.255801] ERROR [CLOG] submit_log (ob_partition_log_service.cpp:468) [893][0][Y0-0000000000000000-0-0] [lt=19] submit_log failed(ret=-4264, partition_key={tid:1099511627916, partition_id:0, part_cnt:0}, buff=0xfff80a4aef70, size=805, base_timestamp=1676065578191066, is_trans_related_log=true, role=1, state=4) BACKTRACE:0xe924894 0xe90e600 0x46e6bd8 0x8af2ab4 0x89f4bf0 0xa50618c 0xa505d14 0xa075300 0xa5b9c0c 0x58c5a6c 0xe809cf0 0xe809b34 0xeaa425c
[2023-02-14 16:51:10.255809] ERROR [CLOG] submit_log (ob_partition_log_service.cpp:468) [892][0][Y0-0000000000000000-0-0] [lt=18] submit_log failed(ret=-4264, partition_key={tid:1099511627916, partition_id:0, part_cnt:0}, buff=0xffeaab7a79c0, size=774, base_timestamp=1676274484275766, is_trans_related_log=true, role=1, state=4) BACKTRACE:0xe924894 0xe90e600 0x46e6bd8 0x8af2ab4 0x89f4bf0 0xa50618c 0xa505d14 0xa075300 0xa5b9c0c 0x58c5a6c 0xe809cf0 0xe809b34 0xeaa425c
[2023-02-14 16:51:10.255828] ERROR [CLOG] submit_log (ob_partition_log_service.cpp:468) [893][0][Y0-0000000000000000-0-0] [lt=20] submit_log failed(ret=-4264, partition_key={tid:1099511627916, partition_id:0, part_cnt:0}, buff=0xffeaf3ee4030, size=784, base_timestamp=1676189935349578, is_trans_related_log=true, role=1, state=4) BACKTRACE:0xe924894 0xe90e600 0x46e6bd8 0x8af2ab4 0x89f4bf0 0xa50618c 0xa505d14 0xa075300 0xa5b9c0c 0x58c5a6c 0xe809cf0 0xe809b34 0xeaa425c
[2023-02-14 16:51:10.255834] ERROR [CLOG] submit_log (ob_partition_log_service.cpp:468) [892][0][Y0-0000000000000000-0-0] [lt=18] submit_log failed(ret=-4264, partition_key={tid:1099511627916, partition_id:0, part_cnt:0}, buff=0xffea7c5081f0, size=774, base_timestamp=1676297873306848, is_trans_related_log=true, role=1, state=4) BACKTRACE:0xe924894 0xe90e600 0x46e6bd8 0x8af2ab4 0x89f4bf0 0xa50618c 0xa505d14 0xa075300 0xa5b9c0c 0x58c5a6c 0xe809cf0 0xe809b34 0xeaa425c
```
使用 df 命令可以发现 clog 日志盘的使用率已经超过 95% 了。
```shell
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
...
/dev/mapper/klas-data_log1 xfs 800G 760G 40G 96% /data/log1
...
```
问题原因
clog 日志盘的使用率如果超过了系统全局配置项 clog_disk_usage_limit_percentage 的值(默认值:95%)就会遇到如上告警和报错。这是一个刚性的限制,超过此值后该 OBServer 不再允许任何新事务的写入,同时不允许接收其他 OBServer 同步的日志。对外表现是所有访问此 OBServer 的读写事务报 transaction needs rollback 的错误。
本质原因还是在于 clog 日志盘使用率达到 clog_disk_utilization_threshold(默认值:80%)后 clog 没有及时自动回收导致,该原因需要进一步分析处理。
解决方法
应急方法是临时调高 clog_disk_usage_limit_percentage 参数值,让 OceanBase 集群恢复正常的处理能力,同时也让 obclient/mysql 等客户端工具可以正常登录而不再 hang 住。
如果集群的 SYS 租户还可以正常连接登录,可以将
clog_disk_usage_limit_percentage调整为一个较大的值,例如 98,使 OBServer 可以继续接收 Clog 日志。obclient [oceanbase]> alter system set clog_disk_usage_limit_percentage=98; Query OK, 0 rows affected (0.024 sec)如果集群的 SYS 租户已经无法正常连接登录了,可以使用 ob_admin 命令登录,将
clog_disk_usage_limit_percentage调整为一个较大的值,例如 98,使 OBServer 可以继续接收 Clog 日志 。[root@localhost ~]# /home/admin/oceanbase/bin/ob_admin -h 'xxx.xxx.xxx.xxx' -p 2882 set_server_config clog_disk_usage_limit_percentage=98注意
- 此 ob_admin 命令需要在所有遇到 clog 盘满的机器上都执行一下,只需要将对应的 IP 地址更换成当前 OBServer 的 IP 地址就可以了,同时该命令在 OceanBase 集群已经 hang 住的情况下也能生效。
- 最后如果环境恢复正常了,记得一定要将
clog_disk_usage_limit_percentage修改回默认值,为下次 clog 盘满预留一些缓冲空间。