一、背景
后台一直往 Greenplum 数据库生成数据,由于没关注磁盘空间,导致数据存储空间利用率达到100%,数据库宕机无法启动。
当然上述情况是可以通过很多方式规避的:
- 利用率达到70%时扩展空间
- 利用率达到70%时清理数据库无用数据
- 在数据目录下放置大文件,在没有足够空间启动时通过删除大文件获取足够空间启动
- …
二、解决办法
2.1、删除 pg_log 目录下的文件
在每个节点的数据存放目录下会生成 pg_log 目录,如下:
pg_log 目录下记录的是数据库活动日志,一般是记录服务器与 DB 的状态,比如各种 Error 信息,定位慢查询 SQL ,数据库的启动关闭信息,发生 checkpoint 过于频繁等的告警信息,诸如此类。该日志有 .csv 格式和 .log。
如果生产系统 pg_log 日志没有定期清理, log 日志会轻松占用 1G 以上的空间,如果数据库宕机无法启动,可以通过清理所有节点该目录下的数据文件(master 节点的 log 日志很大, segment 节点 log 日志稍小);清理完后,尝试启动数据库,此时一般不会有问题,都能正常启动。
这里要注意不能删错 pg_xlog 和 pg_clog 目录的信息。pg_xlog 与 pg_clog 记录数据库的事务信息