对于postgres,
我使用'pg_dump'来转储数据库,然后使用'psql'来恢复另一个服务器上的数据库。我发现在pg_xlog /中创建了大量的WAL日志,耗费了大量的磁盘空间。
postgres有没有办法自动压缩这些WAL日志?
我在postgres手册中看到了'archive_command'设置。这是正确的方向吗?
杨
答案 0 :(得分:0)
是的,archive_command
是您正在寻找的指令。来自the manual:
archive_command (string)
执行shell命令以存档已完成的WAL文件段。 字符串中的任何%p都将替换为文件的路径名 存档,任何%f仅由文件名替换。 (路径名称 是相对于服务器的工作目录,即 cluster的数据目录。)使用%%嵌入实际的%字符 命令。命令返回零退出很重要 只有成功的状态。有关更多信息,请参见第24.3.1节。
此参数只能在postgresql.conf文件中设置或在 服务器命令行。除非在启用了archive_mode,否则它将被忽略 服务器启动。如果archive_command是空字符串(默认值) 启用archive_mode时,暂时禁用WAL归档, 但服务器继续累积WAL段文件 期望很快就能提供命令。设置 archive_command到一个只返回true的命令,例如: / bin / true(Windows上的REM),有效地禁用存档,但也 打破了归档恢复所需的WAL文件链,所以它 只应在特殊情况下使用。
Postgres wiki有一个例子:
# Enable WAL archiving on the primary to an archive directory accessible from
# the standby. If wal_keep_segments is a high enough number to retain the WAL
# segments required for the standby server, this is not necessary.
archive_mode = on
archive_command = 'cp %p /path_to/archive/%f'