2013-08-01 4 views
0

Для postgres,Сжимать xlog при восстановлении postgres db?

Я использовал 'pg_dump' для сброса db, а затем использовал 'psql' для восстановления db на другом сервере. Я обнаружил, что существует огромный объем журналов WAL, созданных на pg_xlog /, которые потребляют много дискового пространства.

Есть ли способ postgres, который позволяет сжать эти журналы WAL автоматически?

В руководстве postgres я увидел настройку «archive_command». Правильно ли это?

Ян

ответ

0

Да, archive_command это директива, что вы ищете. От the manual:

archive_command (string)

командная оболочка для выполнения архивирования завершенного сегмента файла WAL. Любой% p в строке заменяется файлом пути к архиву , а любой% f заменяется только именем файла. (Имя пути относится к рабочему каталогу сервера, то есть к каталогу данных кластера .) Используйте %% для вставки фактического символа% в команде . Важно, чтобы команда возвращала нулевой выход статус только в случае успеха. Для получения дополнительной информации см. Раздел 24.3.1.

Этот параметр может быть установлен только в файле postgresql.conf или в командной строке сервера . Он игнорируется, если параметр archive_mode не был включен при запуске сервера . Если archive_command является пустой строкой (по умолчанию) , тогда как параметр archive_mode включен, архивирование WAL временно отключено, , но сервер продолжает накапливать файлы сегментов WAL в ожидании, что команда скоро будет предоставлена. Задайте archive_command команде, которая ничего не делает, но возвращает true, например. /bin/true (REM в Windows) эффективно отключает архивирование, но также разбивает цепочку файлов 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' 
Смежные вопросы