点击蓝字
关注我们
作者简介
彭占元
2018年8月加入去哪儿网,现负责公司 PostgreSQL/GreenPlum 运维工作,对数据库日常运维和日常调优有大量优化实践经验。
1. 提出问题
最近遇到一个自己运维 DB 的开发同学反馈:"我们的业务量较小,但现在数据库积累了大量的 WAL, 一个月的时间 pg_wal 目录和归档的目录均超过了80GB, 且 WAL 增长的速度较快,由于虚拟机的磁盘不大,几乎把磁盘撑爆了,我应该怎么处理呢?可以先人工删一下吗?”
针对这个现象,我们需要分析如下几个问题:
几乎没有业务为什么 WAL 还会增加且增加的还很快?
WAL 会一直增加直至把磁盘撑爆吗?DBMS 有参数控制上限么?
WAL 文件为什么会保留那么多, DBMS 难道不会自动清理, 需要人工介入么?
2. 分析问题
因为 PostgreSQL 不同版本之间参数有差异,所以确认运行环境是排查问题的第一步。经确认, 出现这一现象的 DB 版本是 PostgreSQL 11,那么针对 pg_wal 目录下文件数量和尺寸的问题,我们首先明确如下几个相关参数的含义:
wal_segment_size:单个 WAL 文件的大小,默认为16MB,一般不做更改,且在 pg11 之前,只能在编译 pg 时指定,很