GaussDB--Ops巡检-用户库(总体)大小占用异常处理步骤

147 阅读3分钟

告警解释

=======

此告警对应指标“用户库(总体)大小占用”超出配置阈值,此指标反映所有用户库占用磁盘空间大小的总和。

对系统的影响

磁盘使用率上涨,如果触发只读或磁盘满,会影响业务执行。

可能原因

  • 业务数据量正常增加。
  • 数据库设计不合理,比如表结构冗余、字段不规范等,会导致数据库中的数据冗余和重复,从而导致数据库大小持续增长。
  • 业务未及时清理不用的磁盘空间,比如:不需要的历史数据、不用的索引。
  • 数据库自动清理机制触发不及时。

处理步骤

  1. 收到告警后,首先查看监控指标查看指标“用户库(总体)大小占用”,确认指标情况以及触发告警的组件。

  2. 登录实例节点登录系统库,执行如下语句确认自动清理机制是否开启。

    show autovacuum;

    • 如果结果为on,表示开启,执行3
    • 如果结果为off,表示关闭,需要开启autovacuum,执行3
  3. 确认自动清理机制触发是否及时,执行如下语句确认用户库及其占用空间最大的数据库。

    select datname, pg_database_size(datname), pg_database_size(datname)/1024/1024/1024 as "dataSize_GB" FROM pg_database where datname not in ('template1', 'template0', 'postgres') order by 3 desc;
    

    从占用空间大的用户库开始,逐个连接,执行如下语句,确认自动清理机制触发是否及时

    分布式CN,集中式主DN上执行:

    select schemaname, relname, pg_table_size(concat(schemaname,'.',relname))/1024/1024/1024 as table_size_gb, n_dead_tup/(n_dead_tup+n_live_tup+1), last_autovacuum from pg_stat_user_tables order by table_size_gb desc;
    

    确认table_size_gb大表的last_autovacuum列的时间距离当前的时间。

    • 如果距离当前在一周内,说明此表的自动清理机制触发及时,执行7
    • 如果距离当前很久,说明此表的自动清理机制触发不及时,执行4

    table_size_gb为表占用的磁盘空间。

  4. 如果自动清理机制触发不及时,通过查看监控指标查看“数据库最长事务执行时间超长”指标,排查是否有长事务在执行。

  5. 可以考虑调整自动清理机制的autovacuum_vacuum_scale_factor和autovacuum_vacuum_threshold参数来调整触发阈值。

    参数调整请联系技术支持协助评估。

  6. 如果上述办法无法解决vacuum不及时的问题,联系技术支持

  7. 确认是否为业务正常增长。

    • 如果正常,调大告警阈值。
    • 如果不正常,执行8
  8. 排查数据库设计是否合理,比如表结构冗余、字段不规范等,会导致数据库中的数据冗余和重复,从而导致数据库大小持续增长。

  9. 确认是否有不用的索引,可以考虑删除。

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

不涉及。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…