本文介绍 OceanBase 数据库 SYS 租户盘满之后的运维处理方法。
OceanBase 数据库 V4.2.1 BP3 及前置版本
停止 OBServer 运行。
指定租户配置项重启。
示例。
./bin/observer -o "log_disk_utilization_limit_threshold@1=98"注意
这种方法只能解决部分场景下的盘满问题。
OceanBase 数据库 V4.2.1 BP4 及后续版本
使用 ob_admin 工具查询 server 的资源使用情况,并根据各租户日志盘的使用情况及 server 日志盘余量调整 SYS 租户日志盘规格。
ob_admin -S run/rpc.sock dump_server_usage
如果集群宕机后拉起,SYS 租户无法登录,且 SYS 租户日志盘规格为 3G。

通过 ob_admin 工具调整日志盘规格。
ob_admin -S run/rpc.sock force_set_tenant_log_disk log_disk_size==4294967296
log_disk_size 单位为 bytes,则 4294967296 bytes 大小为 4G,修改为 4G 之后系统恢复运行。
调整 SYS 租户的日志盘规格。
alter resource unit sys_unit_config log_disk_size='4G';
完成修改后,内部表、slog 均有记录,此时
gv$ob_units显示正常。
运维注意事项
在执行 V4.2.1 BP4 及后续版本中有关 SYS 租户盘满步骤 3 时,可能会遇到以下问题。
OBServer 日志盘满导致 SYS 租户无法扩盘,ob_admin.log 文件中可能会出现如下日志。
[CLOG] process (ob_admin_routine.cpp:887) [66071][][T500][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=-4624] force_set_tenant_log_disk failed(arg_cstr="tenant_id=1,log_disk_size=10000000000")
对此,有两种可行的运维方式。
a. 如果机器可原地扩容,通过 ob_admin 工具直接修改 observer 的日志盘规格。
./ob_admin -S run/rpc.sock set_server_config log_disk_size='xxx';
执行命令后,继续执行 V4.2.1 BP4 及后续版本中有关 SYS 租户盘满步骤 3。
b. 如果机器不可原地扩容,可尝试挤占其他租户的日志盘,找到使用较少的租户(此时内部表无法访问,只能通过查询 observer.log 进行),然后通过 ob_amdin 工具修改该租户的日志盘规格。
ob_admin -S run/rpc.sock force_set_tenant_log_disk tenant_id=x,log_disk_size==xxx;
注意
ob_admin工具只修改ObLogService的内存状态,并不修改租户规格本身(内部表中没有记录、slog中没有持久化),gv$ob_units依旧显示 SYS 租户日志盘爆满。- 宕机重启后,之前的修改操作将失效,所以该运维操作无损。
- 为降低运维风险,
ob_admin工具仅支持使用unix套接字对日志盘规格进行安全运维。
适用版本
OceanBase 数据库 V4.2.x 版本。