PG server磁盘空间占满问题处理
前段时间客户运维人员报生产环境批处理数据库环境出问题,没办法正常运行,于是登录他们服务器,查看了PG日志文件,发现原来是磁盘空间满的原因:
接下来直接df -Th ,看到是home空间满,而我是PG的data文件都存在在home目录下,那应该是PG的数据文件空间占满了,但是系统才运行2年,磁盘空间配置将近900G,一下子就占满了,肯定是摸个程序代码突发性引起的,不然这系统运行2年多,一直没出问题,而且前几天有查看总的磁盘空间占用不到30G,经开发人员分析确实是批处理语法出了问题引起的一个特殊条件比较隐秘性BUG
图二:
接下来首要问题是定位哪张表出了问题,并解决磁盘空间缩减问题,能使系统正常启动运行。
通过定位分析是某张报表数据量占用空间导致磁盘空间占满,21亿笔数据。如下:
查看分析确实是这张表占用了783G的空间导致的。
问题处理第一步:
本以为通过对PG数据库进行回收垃圾方式看是否能回收部分,结果无法正常回收,然后再想通过重启数据库方式看能不能释放下空间,结果无法正常启动了,
迫不得己,只好申请临时加一块1T的硬盘,然后重修修改配置,在启动数据库,进行数据删除与恢复。
因日常都有做备份工作,接下来就把对应的表数据恢复到前一天的数据
之前没经验,所以先把该表直接Drop表 重建,然后重建索引,在进行数据导入
问题得到解决:
总结:
本次碰到的问题出现过2次,第一次以为是系统故障问题引起的,当时通过清理磁盘部分多余空间后,然后对该表中脏数据进行清理剩下几十万笔数据,但是发现表空间和索引空间都没释放,于是就复制了该表和清理后的数据,然后在删除旧表和索引,在重新命名,磁盘空间最终才得以释放。