当前位置: 首页 > news >正文

PostgreSQL WAL日志膨胀处理

作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;墨天轮:Digital Observer;PGFans:施嘉伟。

第一部分 描述

PostgreSQL由于WAL日志的机制,导致其在不正确配置的情况下会出现磁盘空间暴涨的情况,本文档就此情景写一般处理办法。

第二部分 场景复现及处理过程

2.1 基本描述

某一客户反映,有一个PostgreSQL数据库的数据目录增长非常大,500G的总磁盘空间,剩余23G,通过du -sh $PGDATA/*对数据目录进行统计分析,发现大部分的空间都被pg_wal目录占用,文件数量达到1w+。

2.2 查看相关配置

查看可能会造成原因的相关参数,checkpoint_timeout是可能造成wal大量生成的原因之一,当max_wal_size=20GB时,可能会出现在进行checkpoint之间,如果出现大事物或者写入量非常大的时候,最大可能会生成(20*1024)/16=1280个wal文件
适当调整后,发现由于事务量比较大,即使调小参数,还是会不断生成文件,接着查看归档是否出现问题

postgres=# show checkpoint_timeout ;checkpoint_timeout 
--------------------60min
(1 row)postgres=# show max_wal_size ;max_wal_size 
--------------20GB
(1 row)postgres=# show min_wal_size ;min_wal_size 
--------------80MB
(1 row)postgres=# show wal_keep_size ;wal_keep_segments 
---------------128
(1 row)

2.3 查看归档配置

可以看到归档已经开启,检查归档路径是否存在,在pg_wal/ archive_status文件中记录wal文件的归档状态是否正常,检查下来都没有发现问题,如果说归档没有成功进行,wal日志也是无法移除造成空间迅增

postgres=# show archive_mode ;archive_mode 
--------------on
(1 row)postgres=# show archive_command ;archive_command                                   
------------------------------------------------------------------------------------test ! -f /software/pgsql12/archivedir/%f && cp %p /software/pgsql12/archivedir/%f
(1 row)

2.4 查看是否有备库

查看是否有流复制环境,流复制环境中,主要靠wal日志进行主备同步,当主备环境之间差异过大,或者出问题后,造成主备没有同步,则会保留wal日志不进行删除。如果有差异的话,wal_keep_segments参数会生效,它会为备库保留相应数量的wal日志文件、甚至更多。

postgres=# select * from pg_stat_replication ;


确认没有备库环境

2.5 查看是否有复制槽

是否存在无效的复制槽,备库如果没有进行同步或者说没有消费wal日志,那么该复制槽不可用,wal日志也会一直保留,造成wal日志不断增加

postgres=# select * from pg_replication_slots;

查询到果然存在一个active状态为f的复制槽,我们尝试删除该复制槽

SELECT * FROM pg_drop_replication_slot('pg_102');

删除后,发现pg_wal空间不再增长,一段时间后已自动释放

hhh6.jpg

http://www.lryc.cn/news/494333.html

相关文章:

  • 用户该怎么管理维护自己的服务器?
  • 【MYSQL数据库相关知识介绍】
  • 初窥 HTTP 缓存
  • yolov8的深度学习环境安装(cuda12.4、ubuntu22.04)
  • RSA算法和AES算法,哪种更安全
  • Vue教程|搭建vue项目|Vue-CLI新版脚手架
  • kdump调试分析(适用于麒麟,ubuntu等OS)
  • houdini肌肉刷pin点的方法
  • JMeter 并发策略-针对准点秒杀场景的压测实现
  • 龙迅#LT6912适用于HDMI2.0转HDMI+LVDS/MIPI,分辨率高达4K60HZ,支持音频和HDCP2.2
  • RBF神经网络预测结合NSGAII多目标优化
  • 如何看linux系统内核是aarch64 ,还是64-bit
  • 如何通过 ADB 安装 xapk
  • QT:多ui界面显示
  • redis cluster 3主3从部署方案
  • 前端学习笔记之文件下载(1.0)
  • 从技术视角看AI在Facebook全球化中的作用
  • Web 表单开发全解析:从基础到高级掌握 HTML 表单设计
  • Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!
  • 【webrtc】 mediasoup中m77的IntervalBudget及其在AlrDetector的应用
  • AI数据分析工具(二)
  • 小米路由mini刷PDCN教程补充
  • [巅峰极客 2021]签到
  • 详解SpringCloud集成Camunda7.19实现工作流审批(二)
  • Matlab学习笔记
  • Hexo博客在多个设备同步
  • 淘宝Vision Pro:革新购物体验的沉浸式未来
  • 公链开发中的技术实现路径:构建高效、安全的去中心化网络
  • mac上的建议xftp 工具
  • Android 使用Charles抓包显示Unknown