了解现有的Postgres WAL归档设置填充磁盘



刚开始使用别人完成的Postgres实现,需要帮助解决问题。

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

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作业来移动损坏的wall:

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/数据库不断填满,我们需要每隔几天扩展磁盘。这是因为我们有过多的WAL写入或太多损坏的WAL文件吗?

'pg_wal'中的活动WAL会自动清理自己。而您的WAL存档文件"/mnt/database/"则没有。您可以根据组织的保留策略对其进行清理。

如果您的策略是永久保存WAL,那么您需要获得足够的存储空间来做到这一点。如果你有其他的策略,你需要了解它是什么(如果你想让我们帮助你实现它,你需要向我们描述它)

你展示的这两个命令似乎都与保留率无关。

最新更新