zoukankan      html  css  js  c++  java
  • 记一次postgresql的归档日志爆仓磁盘处理

    说明:

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

    image-20210616171610620

     

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

    cd /data
    du -sh *

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

    image-20210616171840438

     

    查看配置文件核对目录

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

    image-20210616172031177

    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

     

    执行脚本看下效果:

     

    image-20210616172519290

     

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

     

    补充说明:

    pg_log记录各种Error信息,以及服务器与DB的状态信息,可由用户随意更新删除
    pg_xlog与pg_clog记录数据库的事务信息,不得随意删除更新,做物理备份时要记得备份着两个日志。

     

     

     

    专业从事搬砖多年,还是在继续搬砖中,厚积薄发~
  • 相关阅读:
    2.4 自给自足的脚本:位于第一行的#!
    2.3 一个简单的脚本
    2.2 为什么要使用Shell脚本
    JSON 字符串 与 java 对象的转换
    ajax异步提交文件
    jquery选择器
    发现前端框架 bui-min.js
    学习hsf
    Git详解
    java学习材料
  • 原文地址:https://www.cnblogs.com/Crazy-Liu/p/14890283.html
Copyright © 2011-2022 走看看