如下图所示:C:\Program Files\PostgreSQL\15\data\log下会生成许多log文件。当VBR上Job数量比较多、或Schedule频率比较频繁时,则会在log目录下会产生比较多Postgres日志文件。
当Postgres Log日志越来越多时,可能会占用比较多的磁盘空间。本文则介绍如何及时、安全地清理Postgres Log日志。
方法一:修改postgresql.conf配置文件
在C:\Program Files\PostgreSQL\15\data\目录下有一个postgresql.conf配置文件里,找到如下配置项:
1)、#log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
2)、log_rotation_age = 10d
3)、#log_rotation_size = 10MB
4)、#log_truncate_on_rotation = off
修改项:
1)、注释 log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
2)、修改log_rotation_age = 10d 为 log_rotation_age = 4h //日志保留时间由10天,改成4小时。
3)、注释log_rotation_size = 10MB
4)、注释log_truncate_on_rotation = on //改成on
注意,修改后需要重启Postgres服务。重启服务前需要确保没有正在运行的Veeam Job。
方法二:修改Set-VBRPSQLDatabaseServerLimits
从v12.1开始,VBR增加了一个功能:可以用来更新的Postgres Log日志记录设置。但遗憾的是升级到v12.1的过程中,不会自动去升级、更新这个设置,需要手工去更新。
直接打开Veeam Powershell窗口,输入 Set-VBRPSQLDatabaseServerLimits 即可。
注意,修改后仍然需要重启Postgres服务。重启服务前需要确保没有正在运行的Veeam Job。
方法三:使用脚本定期删除
新建一条定期删除的脚本,如:auto_del_pglog.bat文件,输入一下内容:
@echo off
set SrcDir=“C:\Program Files\PostgreSQL\15\data\log”
set DaysAgo=“7”
forfiles /p %SrcDir% /s /m
*.log /d –%DaysAgo% /c “cmd /c del /f /q /a @path”
其中:SrcDir是指Postgres Log目录路径,DaysAgo是指保留天数。