美文网首页
【Greenplum】Greenplum 磁盘空间满了数据库宕机

【Greenplum】Greenplum 磁盘空间满了数据库宕机

作者: w1992wishes | 来源:发表于2018-09-11 19:20 被阅读288次

    一、背景

    后台一直往 Greenplum 数据库生成数据,由于没关注磁盘空间,导致数据存储空间利用率达到100%,数据库宕机无法启动。

    当然上述情况是可以通过很多方式规避的:

    • 利用率达到70%时扩展空间
    • 利用率达到70%时清理数据库无用数据
    • 在数据目录下放置大文件,在没有足够空间启动时通过删除大文件获取足够空间启动
    • ......

    二、解决办法

    2.1、删除 pg_log 目录下的文件

    在每个节点的数据存放目录下会生成 pg_log 目录,如下:

    greenplum_01.png

    pg_log 目录下记录的是数据库活动日志,一般是记录服务器与 DB 的状态,比如各种 Error 信息,定位慢查询 SQL ,数据库的启动关闭信息,发生 checkpoint 过于频繁等的告警信息,诸如此类。该日志有 .csv 格式和 .log。

    如果生产系统 pg_log 日志没有定期清理, log 日志会轻松占用 1G 以上的空间,如果数据库宕机无法启动,可以通过清理所有节点该目录下的数据文件(master 节点的 log 日志很大, segment 节点 log 日志稍小);清理完后,尝试启动数据库,此时一般不会有问题,都能正常启动。

    这里要注意不能删错 pg_xlog 和 pg_clog 目录的信息。pg_xlog 与 pg_clog 记录数据库的事务信息,不得随意删除更新。

    2.2、移动 base 目录下的文件

    现场的 pg_log 保留时间太短,删完了也无法启动。

    此时还有一种移动文件的办法,可以先查看一下base目录(数据存储的实际目录,和 pg_log 处在同一目录下),找到下面数字较大的文件夹,把里面的几个大文件复制备份一下,然后删除,这样空间就足够启动了,启动数据库后,尽快清理部分表数据后,将原来的数据文件移动回来,保证数据完整性,否则会导致一些表不可用。

    这种方法是不正规的操作,建议少用。使用前一定要做好备份工作,因为涉及删除生产数据,一旦误操作,可能导致数据无法恢复。

    2.2、其他方法

    也许还有其他的方法,后续有资料后再做记录。

    三、总结

    初次使用 greenplum 没有经验,可能会有磁盘占用满的风险,后续应该注意这个问题,尽量规避,少踩一些坑。

    相关文章

      网友评论

          本文标题:【Greenplum】Greenplum 磁盘空间满了数据库宕机

          本文链接:https://www.haomeiwen.com/subject/zyfpgftx.html