ob4.3.5 集群空间使用到了90%如何清理的提供一下思路

ob4.3.5 poc测试。集群数据空间使用到了90%,主要租户未开启归档 ,
从clog清除, 合并,表大对象查看清理 等各方面是否有相关实践文档?各位老师指导一下

cd /data

du -sh *
537G 1
269G log1

1 个赞

先清理运行日志
observer.log.xxxxxx 这种日志 ob产生很多也很大 .每个 256M 。 您看您哪里参数设置的多大
election.log.xxxx

syslog 关键字

1 个赞

你需要先确认一下这个参数,这个参数会在安装完集群后,自动预占用90%空间的。

2 个赞

@论坛小助手

根据您的问题描述,OceanBase 集群的数据空间已经使用到了 90%,并且主要租户未开启归档功能。以下从多个方面提供清理和优化的思路,并结合文档中的信息进行解答。


1. Clog 空间清理

Clog(Commit Log)是 OceanBase 数据库中记录事务日志的部分,当其占用空间较大时,可以通过以下步骤进行排查和清理:

步骤 1:检查 Clog 回收阻塞的原因

  • 根据文档信息(参考《集群管理 FAQ → CLOG FAQ → CLOG 满盘应该如何进行问题分析和应急操作?》),Clog 文件无法回收的主要原因是转储失败或卡住。
  • 使用以下命令定位阻塞回收的分区:
    grep can_skip_base observer.log
    
    • 查找 need_recordTrue 的记录,其中包含 partition_key,表示该分区的日志无法回收。
    • 进一步搜索该分区的日志:
      grep partition_key observer.log
      
      分析日志,确认转储位点未推进的原因。

步骤 2:调整 Clog 磁盘阈值

  • 如果 Clog 磁盘空间接近上限(如 95%),可以临时调大阈值以缓解压力:
    ALTER SYSTEM SET log_disk_utilization_limit_threshold = 98 SERVER = '[IP 地址]:2882';
    
    (参考《节点日志盘(Clog)空间满 → 应急处理流程》)

步骤 3:确保转储正常

  • 转储是将内存中的数据写入 SSTable 的过程。如果转储失败,可能导致 Clog 文件无法回收。
  • 检查是否有转储失败的错误日志,并尝试解决相关问题。

2. 数据盘空间清理

对于数据盘空间使用率较高的情况,可以从以下几个方面入手:

步骤 1:扩容节点

  • 如果条件允许,可以通过扩容节点来均衡数据分布:
    • 使用 OCP 或者命令行工具添加新节点(参考《节点数据盘空间满 → 应急处理流程》)。
    • 手动迁移 Unit 到新节点,具体操作请参见相关文档。

步骤 2:删除冗余数据

  • 删除不再需要的表、索引或大对象数据:
    DROP TABLE table_name;
    DROP INDEX index_name;
    
  • 清空回收站中的数据(注意:清空后数据无法恢复,请谨慎操作):
    PURGE RECYCLEBIN;
    

步骤 3:调整磁盘使用比例

  • 临时调大磁盘最大空间百分比以释放部分空间:
    ALTER SYSTEM SET datafile_disk_percentage = 98;
    

3. 合并(Minor/Major Freeze)

OceanBase 数据库通过合并机制清理历史版本数据,减少磁盘占用。

步骤 1:触发 Minor Freeze

  • Minor Freeze 会清理短生命周期版本的数据:
    ALTER SYSTEM MAJOR FREEZE;
    

步骤 2:触发 Major Freeze

  • Major Freeze 会清理长生命周期版本的数据,但可能耗时较长:
    ALTER SYSTEM MAJOR FREEZE;
    

步骤 3:监控合并进度

  • 使用以下命令查看合并状态:
    SHOW MAJOR FREEZE STATUS;
    

4. 大对象数据检查与清理

如果集群中存在大量大对象数据(如 BLOB、CLOB 类型字段),可以进行以下操作:

步骤 1:查找大对象数据

  • 查询占用空间较大的表和字段:
    SELECT table_name, column_name, data_type 
    FROM oceanbase.__all_column 
    WHERE data_type IN ('BLOB', 'CLOB');
    

步骤 2:清理无用的大对象数据

  • 删除不再需要的大对象数据,或者将其迁移到其他存储系统。

5. 归档功能建议

虽然当前租户未开启归档功能,但从长期运维的角度建议开启归档,以便定期清理历史数据。

步骤 1:启用归档

  • 修改租户配置以启用归档:
    ALTER TENANT tenant_name SET ARCHIVELOG ON;
    

步骤 2:定期清理归档日志

  • 归档日志可以定期备份到外部存储并清理本地空间。

总结

根据文档库中的信息,您可以按照以下优先级进行清理和优化:

  1. 检查 Clog 回收阻塞原因并解决。
  2. 删除冗余数据、表和索引。
  3. 触发 Minor/Major Freeze 合并。
  4. 检查并清理大对象数据。
  5. 开启归档功能以定期清理历史数据。

如果上述方法仍无法解决问题,建议联系 OceanBase 技术支持团队进行进一步诊断。

检索到的文档如下:

  1. 节点日志盘(Clog)空间满
  2. Redo 日志
  3. 集群管理 FAQ
  4. 节点数据盘空间满
  5. BootStrap
  6. 使用 ob-operator 进行运维
  7. 清理旧集群
2 个赞

/data/{1,log1} 这两个目录里面的文件是预占的,由参数 datafile_size、datafile_disk_percentage 和log_disk_size 、log_disk_percentage 控制的,如果没有设置datafile_size 和 log_disk_size ,则安装的时候默认以datafile_disk_percentage=90%和log_disk_percentage=90%来预占磁盘空间,

嫌占用大可以对应的调整下参数值

1 个赞

ob是预占用的,可以去数据库中查询下实际占用大小

SELECT * FROM oceanbase.CDB_OB_SERVER_SPACE_USAGE WHERE

1 个赞

oceanbase4.3.5的版本
/data/1,/data/log1这两个目录里面的文件是预占的,由参数 datafile_disk_percentage 和log_disk_size 、log_disk_percentage 控制的,如果安装的时候设置为datafile_disk_percentage=90%和log_disk_percentage=90%来预占磁盘空间,就会出现空间使用高达90%,如果觉得占用大可以对应的调整下参数值

1 个赞

跟着学到了