【问题标题】:Understand existing Postgres WAL archiving setup filling up the disk了解现有的 Postgres WAL 归档设置填满磁盘
【发布时间】:2021-08-06 00:27:25
【问题描述】:

对某个由其他人完成的 Postgres 实施的新手,需要帮助解决问题。

我们配置了以下归档命令,如果我理解正确,那么归档命令会将 WAL 文件复制到已挂载的存储 /mnt/database:

archive_command = 'if { egrep -q " /mnt/database .* rw," /proc/mounts ;} && { ! pgrep test -u postgres ;} ; then test ! -f /mnt/database/%f && cp %p /mnt/database/%f ; else exit 1; fi'

然后我们有一个 cron 作业来将损坏的 WAL 移开:

find /mnt/database -type f  -regextype posix-extended -regex ".*[A-Z0-9]{24}$" -mmin +60 -size -16777216c -exec logger "Trimming Postgres WAL Logs" \; -exec find /var/lib/pgsql/9.6/data/pg_xlog/{} -type f \; -exec mv {} {}.incomplete \;

我们遇到的问题是 /mnt/database 不断填满,我们需要每隔几天扩展一次磁盘。那是因为我们有过多的 WAL 写入或太多损坏的 WAL 文件吗?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    “pg_wal”中的实时 WAL 会自动清理自己。您的 WAL 存档,这里的 '/mnt/database/' 没有。您可以根据组织的保留政策来安排清理。

    如果您的策略是永久保留 WAL,那么您需要获得足够的存储空间来执行此操作。如果您有其他一些政策,您需要了解它是什么(如果您需要我们帮助实施它,请向我们描述它)

    您显示的两个命令似乎都与保留有关。

    【讨论】:

    • 谢谢。我认为第一个命令将 WAL 文件移动到 /mnt/database 而第二个命令确保它们被旋转。由于我们每 24 小时进行一次基本备份,因此策略是将 /mnt/database 中的 WAL 文件保留 24 小时。这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2022-01-27
    相关资源
    最近更新 更多