OceanBase服务占用的磁盘空间过大

【 使用环境 】生产环境
【 OB or 其他组件 】OceanBase
【 使用版本 】OceabBase_CE 4.2.1.2
【问题描述】Oceanbase所在服务器总共300G的磁盘,Oceanbase所在文件夹占了220G。其中store文件夹占了182G。store文件下的clog占了120G,sstable占了60G。综上所述,请问下clog文件夹和sstable文件夹分别保存的内容是什么,能否删除。以及,是否有配置项能让我们管理Oceanbase所在文件夹能占用的最大内存大小。
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

根据您的描述,OceanBase 服务确实占用了较大的内存,其中 store 文件夹下的 clog 和 sstable 子文件夹占据了主要部分。在这种情况下,直接删除这些文件是不可取的,因为这可能会导致数据丢失或损坏,影响数据库的正常运行。为了安全地管理这些文件并调整 OceanBase 的内存使用,请先使用 obdiag 工具来收集与内存使用相关的日志,以便我们能够更好地了解当前状况。

日志采集场景: 内存问题
日志采集命令: obdiag gather scene run --scene=observer.memory

建议您运行上述命令来收集内存使用情况的相关日志,并将日志提供给我们以便进一步分析。同时,针对您的问题,我需要向您提出以下几个问题,以获取更多有助于诊断的信息:

  1. 您当前的 OceanBase 版本是什么?
  2. 您是否有定期对数据库进行维护,如数据清理、归档等操作?
  3. 您是否有配置过与内存使用相关的参数,例如 memory_limit_percentage 或者 memory_limit
  4. 您期望将 OceanBase 的最大内存使用量限制在什么范围内?

这些问题的答案将帮助我们更准确地分析问题并提供解决方案。

附上敏捷诊断工具 obdiag 使用帮助链接

1 个赞

memory_limit设置的多少?

1 个赞

memory_limit设置的是20G。老师我上边表述有误,我其实是想说的是,磁盘存储空间。

data和clog是预占用的,在部署时可以通过参数设置控制占用大小,clog一般设置为memory_limit的3~4倍

datafile_size
datafile_disk_percentage

log_disk_size
log_disk_percentage

1 个赞

datafile_size:没用到
datafile_disk_percentage:

log_disk_size:没用到
log_disk_percentage没用到

我们的配置如下:
datafile_disk_percentage: 20
datafile_next: 2G
datafile_maxsize: 20G

1 个赞

查下server级资源信息

select /*+ READ_CONSISTENCY(WEAK) */
a.zone,
a.svr_ip,
b.status,
cpu_capacity,
cpu_assigned_max,
cpu_capacity-cpu_assigned_max as cpu_free,
round(memory_limit /1024/1024/1024 ,2) as memory_total_gb,
round(mem_capacity /1024/1024/1024 ,2) as mem_capacity,
round((memory_limit-mem_capacity) /1024/1024/1024 ,2) as system_memory_gb,
round(mem_assigned /1024/1024/1024 ,2) as mem_assigned_gb,
round((mem_capacity-mem_assigned) /1024/1024/1024 ,2) as memory_free_gb,
round(log_disk_capacity /1024/1024/1024 ,2) as log_disk_capacity_gb,
round(log_disk_assigned /1024/1024/1024 ,2) as log_disk_assigned_gb,
round((log_disk_capacity-log_disk_assigned) /1024/1024/1024 ,2) as log_disk_free_gb,
round((data_disk_capacity /1024/1024/1024 ),2) as data_disk_capacity_gb,
round((DATA_DISK_ALLOCATED /1024/1024/1024 ),2) as data_disk_allocate_gb,
round((data_disk_in_use /1024/1024/1024 ),2) as data_disk_used_gb,
round((data_disk_capacity-data_disk_in_use) /1024/1024/1024 ,2) as data_disk_free_gb
from gv$ob_servers a
join oceanbase.DBA_OB_SERVERS b on a.zone=b.zone\G;
1 个赞

ErrorCode = 1146, SQLState = 42S02, Details = Table ‘oceanbase.gv$ob_servers’ doesn’t exist

1 个赞

sys租户下查询

1 个赞

212root@sys

连接模式:MySQL

主机名/端口:192.168.23.212:2881

集群/租户:/

数据库用户名:root@sys

老师,我改到sys租户下还是报错
失败原因:

ErrorCode = 1109, SQLState = 42S02, Details = Unknown table ‘gv$ob_servers’ in information_schema

1 个赞

这样试下

select /*+ READ_CONSISTENCY(WEAK) */
a.zone,
a.svr_ip,
b.status,
cpu_capacity,
cpu_assigned_max,
cpu_capacity-cpu_assigned_max as cpu_free,
round(memory_limit /1024/1024/1024 ,2) as memory_total_gb,
round(mem_capacity /1024/1024/1024 ,2) as mem_capacity,
round((memory_limit-mem_capacity) /1024/1024/1024 ,2) as system_memory_gb,
round(mem_assigned /1024/1024/1024 ,2) as mem_assigned_gb,
round((mem_capacity-mem_assigned) /1024/1024/1024 ,2) as memory_free_gb,
round(log_disk_capacity /1024/1024/1024 ,2) as log_disk_capacity_gb,
round(log_disk_assigned /1024/1024/1024 ,2) as log_disk_assigned_gb,
round((log_disk_capacity-log_disk_assigned) /1024/1024/1024 ,2) as log_disk_free_gb,
round((data_disk_capacity /1024/1024/1024 ),2) as data_disk_capacity_gb,
round((DATA_DISK_ALLOCATED /1024/1024/1024 ),2) as data_disk_allocate_gb,
round((data_disk_in_use /1024/1024/1024 ),2) as data_disk_used_gb,
round((data_disk_capacity-data_disk_in_use) /1024/1024/1024 ,2) as data_disk_free_gb
from oceanbase.gv$ob_servers a
join oceanbase.DBA_OB_SERVERS b on a.zone=b.zone\G;

‘zone’,‘svr_ip’,‘status’,‘cpu_capacity’,‘cpu_assigned_max’,‘cpu_free’,‘memory_total_gb’,‘mem_capacity’,‘system_memory_gb’,‘mem_assigned_gb’,‘memory_free_gb’,‘log_disk_capacity_gb’,‘log_disk_assigned_gb’,‘log_disk_free_gb’,‘data_disk_capacity_gb’,‘data_disk_allocate_gb’,‘data_disk_used_gb’,‘data_disk_free_gb’
‘zone1’,‘127.0.0.1’,‘ACTIVE’,30,30.0,0.0,20.00,18.00,2.00,16.00,2.00,128.94,45.00,83.94,100.00,85.98,2.75,97.25

是正常的,如果希望不占用这么大,可以在部署时调整我上面说的参数,4个参数的具体含义可以搜下