暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

WAL日志磁盘空间占用大小分析

瀚高PG实验室 2021-05-12
653

作者:Chrisx,瀚高大学PG实验室核心成员,数据库高级工程师,擅长HGDB、Post-greSQL、Oracle等主流数据库。

文章目录

  • WAL日志磁盘空间占用大小分析

    • 参数

    • 影响WAL大小的因素

参数

通常情况下,pg_wal目录中的 WAL 段文件数量取决于min_wal_size、max_wal_size以及在之前的检查点周期中产生的 WAL 数量。

  • max_wal_size,两个检查点之间,wal可增长的最大大小,这是一个软限制。

  • min_wal_size,检查点后用来保留的,用于未来循环使用的wal文件。可以被用来确保有足够的 WAL 空间被保留来应付 WAL 使用的高峰

WAL空间使用情况如下

  1. 如果日志量大于max_wal_size,则WAL日志空间尽量保持在max_wal_size。因为会触发检查点,不需要的段文件将被移除直到系统回到这个限制以下。

  2. 如果日志量小于max_wal_size,则WAL日志空间至少保持min_wal_size。

  3. 通常情况下,WAL日志空间大小在min_wal_size和max_wal_size之间动态评估。该估计基于在以前的检查点周期中使用的WAL文件数的动态平均值。如果实际使用量超过估计值,动态平均数会立即增加。

如:

    postgres=# select name,setting,unit from pg_settings where name like '%wal_size%';
    name | setting | unit
    --------------+---------+------
    max_wal_size | 1024 | MB
    min_wal_size | 80 | MB
    (2 rows)
    $ ll
    total 81936
    drwx------ 3 pg126 pg126 4096 Apr 28 10:09 ./
    drwx------ 20 pg126 pg126 4096 Apr 29 15:18 ../
    -rw------- 1 pg126 pg126 337 Apr 14 14:02 000000010000000000000009.00000028.backup
    -rw------- 1 pg126 pg126 16777216 Apr 28 16:09 00000001000000000000000A
    -rw------- 1 pg126 pg126 16777216 Apr 14 13:52 00000001000000000000000B
    -rw------- 1 pg126 pg126 16777216 Apr 14 13:52 00000001000000000000000C
    -rw------- 1 pg126 pg126 16777216 Apr 14 14:02 00000001000000000000000D
    -rw------- 1 pg126 pg126 16777216 Apr 14 14:02 00000001000000000000000E
    drwx------  2 pg126 pg126     4096 Apr 28 10:09 archive_status/

    pg_wal大小至少保留80MB的文件,也就是00000001000000000000000A-E 5个文件

    执行一个大型操作,查看pg_wal大小超过了1GB

      $ du -sm pg_wal
      1329    pg_wal

      执行检查点后,查看pg_wal大小为801MB,低于1GB

        $ du -sm pg_wal/
        801     pg_wal/

        再次执行检查点后,查看pg_wal大小依然为801MB,与上一个检查点周期WAL大小一致

          $ du -sm pg_wal/
          801     pg_wal/

          影响WAL大小的因素

          其他情况下,会有以下因素影响WAL大小。

          WAL异常增长,或WAL一直膨胀且超过max_wal_size,执行检查点后,WAL使用量未见降低或WAL日志不会被删除重用,需要排查以下因素。

          • 独立于max_wal_size之外,wal_keep_size(MB)+ 1 个最近的 WAL 文件将总是被保留。(pg13之前的版本是wal_keep_segments)

          • 启用了WAL 归档,旧的段在被归档之前不能被移除或者再利用。

          • 启用了复制槽功能,一个使用了复制槽的较慢或者失败的后备服务器也会导致WAL不能被删除或重用。

          • checkpoing未完成,

          • 长事务未提交。

          文章转载自瀚高PG实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论