问题现象
OceanBase 数据库运行一段时间,发现磁盘满了,然后运维直接将日志删除,导致数据库停止运行,并且无法启动。
问题原因
查询占用磁盘过大,手动删除 clog 日志。
适用版本
OceanBase 数据库所有版本。
解决方法
默认就是达到设置的参数指定的大小后自动复用(也就是删除),但是禁止手动去删除,手动删除以后,无法恢复。
租户的 clog 盘的空间,不会全部使用完,通过以下参数来控制:
log_disk_utilization_threshold,默认是 80,表示在超过设定阈值后,会将可以回收的日志文件回收掉。log_disk_utilization_limit_threshold,默认是 95,表示 clog 大小达到该阈值后,会禁止写入和日志同步。
在不损坏集群数据一致性的前提下修复 clog 盘空间满问题,一般需要遵循以下几个步骤:
主动停止租户的写入,防止 clog 盘临时腾挪的空间再次快速被业务写入打满,无法修复。
停止集群写入后,临时调大 clog 盘阈值比例,由 95% 调整到 98%。
ALTER system SET log_disk_utilization_limit_threshold = 98 server ='[IP 地址]:2882';观察一段时间,多数情况下 clog 追上后,集群可以恢复,如果未恢复,联系 OceanBase 技术支持。