block_file 自动扩到 5T 占满数据盘,但实际租户数据仅百余 GB

环境为 OceanBase 社区版 4.4.2,3 个 OBServer 节点,目前遇到数据盘被 block_file 占满、其中一个节点下线的问题。实际业务数据量很小,但 block_file 已经扩到了约 5T。
1、数据文件动态扩容相关参数:
datafile_size ≈ 57G
datafile_next ≈ 552G
datafile_maxsize ≈ 5T
2、ls -lh block_file
du -h block_file 均为5T
3、 CDB_OB_SERVER_SPACE_USAGE 汇总所有租户、各类空间后,总量只有一百多 GB
4、SELECT
SVR_IP,
ROUND(DATA_DISK_CAPACITY/1024/1024/1024,2),
ROUND(DATA_DISK_ALLOCATED/1024/1024/1024,2),
ROUND(DATA_DISK_IN_USE/1024/1024/1024,2)
FROM oceanbase.GV$OB_SERVERS;
DATA_DISK_CAPACITY
DATA_DISK_ALLOCATED
DATA_DISK_IN_USE 均为5T
5、ocp中查看,只有节点1的数据盘接近5T,节点2和节点3的数据盘都不到100G

1 个赞


在ocp中对节点1进行了停止和重新启动,节点状态恢复,ocp中显示的数据盘使用大小降下来了。但是服务器中查看数据文件大小,还是5T

预占用 和你datafile_maxsize 设置有关系 在查一下信息 看看

select zone,concat(SVR_IP,':',SVR_PORT) observer,
cpu_capacity_max cpu_total,cpu_assigned_max cpu_assigned,
cpu_capacity-cpu_assigned_max as cpu_free,
round(memory_limit/1024/1024/1024,2) as memory_total,
round((memory_limit-mem_capacity)/1024/1024/1024,2) as system_memory,
round(mem_assigned/1024/1024/1024,2) as mem_assigned,
round((mem_capacity-mem_assigned)/1024/1024/1024,2) as memory_free,
round(log_disk_capacity/1024/1024/1024,2) as log_disk_capacity,
round(log_disk_assigned/1024/1024/1024,2) as log_disk_assigned,
round((log_disk_capacity-log_disk_assigned)/1024/1024/1024,2) as log_disk_free,
round((data_disk_capacity/1024/1024/1024),2) as data_disk,
round((DATA_DISK_ALLOCATED/1024/1024/1024),2) as DATA_DISK_ALLOCATED,
round((data_disk_in_use/1024/1024/1024),2) as data_disk_used,
round((data_disk_capacity-data_disk_in_use)/1024/1024/1024,2) as data_disk_free
from oceanbase.gv$ob_servers;



61是问题节点,62是其它正常节点

show parameters where name in (‘memory_limit’,‘memory_limit_percentage’,‘system_memory’,‘log_disk_size’,‘log_disk_percentage’,‘datafile_size’,‘datafile_disk_percentage’,‘datafile_next’,‘datafile_maxsize’); 查一下参数设置

不过61看着确实是奇怪 其他的节点数据文件大小 看看


这个是其它节点

这个信息 查一下

ls -lh block_file
du -h block_file 均为5T

什么时候 发现的 有做过什么操作么?例如:在线修改DDL


没有做过在线ddl,只有在一周前做了旁路导入,数据量也不到,十几G。后面其它操作都没做了。并且这套的数据盘和日志盘是在一起的。但是我们另一套数据盘和日志盘在一起的集群没有出现这种情况

还有一个线索,前几天有个同事往这个节点的数据盘目录中rsync了1T左右的csv文件,我看了ocp的历史告警,在开始rsync之后就开始报observer节点不工作,cpu使用率超限,observer坏盘告警

从节点文件信息 来看预占用的文件大小 应该没有问题 目前不确定是不是这个导致的 还有当时的observer.log日志么?

当时的observer日志没有了

如果数据盘没有放其它东西时,只给OB的data使用时,当设置
datafile_maxsize <= DATA_DISK_ALLOCATED 时 ,DATA_DISK_CAPACITY取值DATA_DISK_ALLOCATED;
操作系统磁盘空间> = datafile_maxsize> DATA_DISK_ALLOCATED 时,DATA_DISK_CAPACITY取值 datafile_maxsize;

操作系统磁盘空间< datafile_maxsize 时,DATA_DISK_CAPACITY取值 操作系统磁盘空间;

当操作系统上的这个数据盘放其它东西时,当设置
datafile_maxsize <= DATA_DISK_ALLOCATED 时 ,DATA_DISK_CAPACITY取值DATA_DISK_ALLOCATED;

操作系统磁盘空闲空间+DATA_DISK_ALLOCATED>= datafile_maxsize > DATA_DISK_ALLOCATED时,DATA_DISK_CAPACITY取值 datafile_maxsize;

操作系统磁盘空闲空间+DATA_DISK_ALLOCATED < datafile_maxsize 时,DATA_DISK_CAPACITY近似取值 操作系统磁盘空闲空间+DATA_DISK_ALLOCATED

OCP上这里的“数据盘”,是指OB数据当前可用的空间


给你解释一下 这几个含义

好的,谢谢~