PostgreSQL数据库清理归档日志
1 业务背景
安装器部署苍穹后,PostgreSQL数据库(以下简称PG数据库)默认打开归档日志。随着时间的积累,业务的增加,归档日志会占用大量磁盘空间,如果没有及时监控,则容易磁盘撑满,导致数据库服务不可用。
2 解决方案
如不需要归档,可以设置$PGDATA/postgresql.conf参数文件archive_mode = off ,关闭归档功能。
用pgbackrest工具进行物理备份,通过repo1-retention-full备份参数进行归档日志的清理。
结合归档参数和脚本清理归档日志。
使用定时任务清理归档日志。
方案2可以参考社区PG数据库物理备份文章:PostgreSQL高可用pgbackrest物理备份
PostgreSQL备份与恢复中pgbackrest物理备份部分
本文主要讲解方案3和4。
注:以下步骤均在数据节点执行。保留的天数(reserveDay)根据项目上实际需要进行调整。
3 结合归档参数和脚本清理归档日志
3.1 编辑归档脚本
su - postgres #脚本放置在和postgresql.conf同一层目录下 cat > $PGDATA/pg_archive_clean.sh << EOF source /home/postgres/.bashrc #archivelog的上一层目录 PG_ARCH=/kingdee/cosmic/postgres #保留天数7天(根据项目实际情况修改) reserveDay=7 test ! -f \$PG_ARCH/archivelog/\$1 && /bin/cp --preserve=timestamps \$2 \$PG_ARCH/archivelog/\$1 && find \$PG_ARCH/archivelog/* -type f -mtime +\$reserveDay -exec rm -f {} \; EOF
3.2 配置归档相关参数
vim $PGDATA/postgresql.conf ... #开启归档 archive_mode = on #引用3.1的归档脚本 archive_command = 'sh pg_archive_clean.sh %f %p' archive_timeout = 3600 ...
3.3 配置参数生效
pg_ctl reload #查看修改后的结果 psql -c "select name,setting from pg_settings where name='archive_command';"
4 使用定时任务清理归档日志
cat > /kingdee/cosmic/postgres/pg_data/pg_archive_clear.sh << EOF source /home/postgres/.bashrc #archivelog的上一层目录 PG_ARCH=/kingdee/cosmic/postgres #保留天数7天(根据项目实际情况修改) reserveDay=7 find \$PG_ARCH/archivelog/* -type f -mtime +\$reserveDay -exec rm -f {} \; EOF #每天凌晨3点执行归档清理操作 echo "0 3 * * * sh /kingdee/cosmic/postgres/pg_data/pg_archive_clear.sh" >> /var/spool/cron/postgres #脚本赋权 chown postgres.postgres /kingdee/cosmic/postgres/pg_data/pg_archive_clear.sh
5 两方案比较
方案3结合数据库归档参数,需要修改数据库参数配置文件(postgresql.conf)中归档部分,保留的天数(reserveDay)是以最近一次检查点执行时间往前推天数。
方案4无须修改数据库归档参数,保留的天数(reserveDay)是以定时任务脚本执行时间往前推的天数,即自然天数。
PostgreSQL数据库清理归档日志
1 业务背景安装器部署苍穹后,PostgreSQL数据库(以下简称PG数据库)默认打开归档日志。随着时间的积累,业务的增加,归档日志会占用大量...
点击下载文档
上一篇:PostgreSQL主从同步下一篇:PG如何部署空间数据库postgis
本文2024-09-23 01:12:55发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144512.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章