恢复postgres db时压缩xlog?

时间:2013-08-01 02:40:47

标签: postgresql-9.1 wal

对于postgres,

我使用'pg_dump'来转储数据库,然后使用'psql'来恢复另一个服务器上的数据库。我发现在pg_xlog /中创建了大量的WAL日志,耗费了大量的磁盘空间。

postgres有没有办法自动压缩这些WAL日志?

我在postgres手册中看到了'archive_command'设置。这是正确的方向吗?

1 个答案:

答案 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'