首页 > 数据库技术 > 详细

记一次postgresql的归档日志爆仓磁盘处理

时间:2021-06-16 22:24:04      阅读:29      评论:0      收藏:0      [点我收藏+]

 

 

说明:

收到磁盘跑满的问题,登录机器查看数据库磁盘近乎跑满/data

技术分享图片

 

查看/data下最大占用目录文件,

cd /data
du -sh *

查看pgwalarchive目录就占用了320G多,顾名思义pgwalarchive就是归档日志。

技术分享图片

 

查看配置文件核对目录

查看配置文件,默认在postgresql.conf里面。

技术分享图片

archive_command = ‘gzip < %p > /data/backup/pgwalarchive/%f.gz && echo %f.gz >> /data/backup/pgwalarchive/archive.list‘
?

归档文件名和目录与/data目录内的文件一致。确定这个是pg_log产生的。

看样子是归档日志一直存放没有定期清理导致持续跑满磁盘。

那删除老的归档日志即可。

 

删除老的归档日志

 

脚本说明:

写个脚本定时检测磁盘大小,删除保存指定多少天数的日志归档即可。

cat clear_bin_log.sh

 

#!/bin/bash
disk_free=$(df -hP | awk ‘{if($NF == "/data"){gsub(/%/,"",$(NF-1));print $(NF-1)}}‘)
?
if [ "$disk_free" -gt 90 ];then
  find /data/backup/pgwalarchive -type f -name ‘*.gz‘ | xargs -i rm {}
elif [ "$disk_free" -gt 88 ];then
    find /data/backup/pgwalarchive -type f -name ‘*.gz‘ -mtime +3 | xargs -i rm {}
elif [ "$disk_free" -gt 86 ];then
    find /data/backup/pgwalarchive -type f -name ‘*.gz‘ -mtime +6 | xargs -i rm {}
elif [ "$disk_free" -gt 80 ];then
    find /data/backup/pgwalarchive -type f -name ‘*.gz‘ -mtime +15 | xargs -i rm {}
elif [ "$disk_free" -gt 70 ];then
    find /data/backup/pgwalarchive -type f -name ‘*.gz‘ -mtime +20 | xargs -i rm {}
elif [ "$disk_free" -gt 60 ];then
    find /data/backup/pgwalarchive -type f -name ‘*.gz‘ -mtime +25 | xargs -i rm {}
fi

 

 

加入定时任务

root@xx-xx-DB-02:/data/backup# crontab -l
00 20 * * * /bin/bash /data/backup/clear_bin_log.sh >/dev/null 2>&1

 

执行脚本看下效果:

 

技术分享图片

 

好了,可以了,磁盘释放了,记得切记保留时长以及数据重要性记得核对哦,是否可以删除。

 

 

记一次postgresql的归档日志爆仓磁盘处理

原文:https://www.cnblogs.com/Crazy-Liu/p/14890283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!