pg_standby
Cоздание сервера теплого резерва.
Программа pg_standby поддерживает создание сервера и предназначена для:
- непосредственного применения в производственной среде;
- использования в качестве настраиваемой заготовки, когда требуются специальные модификации.
Расширение ожидает выполнения команды
restore_command
, которая нужна для перехода от стандартного восстановления архива к режиму так называемого «теплого резерва».Синтаксис:
pg_standby [параметр...] расположение_архива следующий_файл_wal каталог_wal [файл_перезапуска_wal]
Если указывается
файл_перезапуска_wal
, тогда все файлы журнала предзаписи (WAL), предшествующие указанному, будут удалены из каталога расположение_архива
. Аргумент обычно указывается с помощью макроса %r
.Удаление предыдущих журналов позволяет сократить число сохраняемых файлов без потери возможности восстановления при перезапуске. Такой вариант использования уместен, когда
расположение_архива
указывает на область рабочих файлов конкретного резервного сервера, но не когда расположение_архива
— это каталог с архивом WAL для долговременного хранения.Логика работы приложения pg_standby предполагает, что каталог, заданный аргументом
расположение_архива
, доступен для чтения владельцу серверного процесса.Кроме того, если указывается аргумент
файл_перезапуска_wal
(или ключ -k
), то каталог расположение_архива
должен быть доступен для записи.При выходе из строя ведущего сервера переключение на сервер «теплого резерва» возможно двумя способами:
-
Умное переключение (Smart Failover).При умном переключении сервер включается в работу, применив изменения из всех файлов WAL, имеющихся в архиве. В результате умного переключения данные не теряются, даже если данный резервный сервер отстал. Если применить нужно большое количество изменений WAL, подготовка к работе может быть длительной. Чтобы вызвать умное переключение, нужно создать файл-триггер, содержащий слово
smart
, либо просто пустой файл. -
Быстрое переключение (Fast Failover).При быстром переключении сервер включается в работу немедленно. Все непримененные файлы WAL в архиве будут игнорироваться, и все транзакции в этих файлах будут потеряны. Чтобы вызвать быстрое переключение, создайте файл-триггер и запишите в него слово
fast
. Программуpg_standby
можно настроить так, чтобы быстрое переключение происходило автоматически, если за определенное время не появляется новый файл журнала WAL.
Программа
pg_standby
принимает следующие аргументы командной строки:Аргумент | Описание |
---|---|
-c | Применяет для восстановления файлов WAL из архива команду cp или copy ; параметр бесполезен, поскольку в данный момент поддерживается только это поведение |
-d | Выводит подробные отладочные сообщения в stderr |
-k | Задает количество файлов WAL, предшествующих текущему журналу; параметр оставляет не больше заданного числа файлов WAL в каталоге расположение_архива , предшествующие – удалить.– 0 , «ноль» (значение по умолчанию) означает, что не нужно удалять никакие файлы из каталога расположение_архива ;данный параметр будет игнорироваться, если указан файл_перезапуска_wal – такой способ более точно определяет правильную точку отсечения архива.Слишком низкое значение параметра может привести к удалению файлов, которые могут потребоваться для перезапуска резервного сервера. Слишком высокое значение параметра может быть причиной неэффективного использования дискового пространства архива |
-r макс_повторов | Устанавливает максимальное количество повторов команды copy в случае ошибки. После каждой ошибки программа приостанавливается на время_задержки * число_повторов ; время ожидания постепенно увеличивается.По умолчанию программа ожидает 5, 10, 15 секунд, а затем сообщает резервному серверу об ошибке – это событие будет воспринято как завершение восстановления, и в результате резервный сервер полностью включится в работу. Значение по умолчанию: 3 |
-s время_задержки | Задает количество секунд для выдержки паузы между проверками наличия файла WAL в архиве. Допустимые значения: до 60. Значение по умолчанию: 5 |
-t файл_триггер | Указывает файл-триггер, при появлении которого должна начаться отработка отказа. Имя этого файла рекомендуется выбирать по определенной схеме, позволяющей однозначно понять, для какого сервера вызывается отработка отказа, когда таких серверов в одной системе несколько. Например, /tmp/pgsql.trigger.5432 приложение поддерживает параметр recovery_end_command , в котором можно задать команду для удаления файла-триггера во избежание ошибок |
-V --version | Выводит версию pg_standby и завершает работу |
-w макс_время_ожидания | Задает максимальное время ожидания (в секундах) следующего файла WAL, по истечении которого будет произведено быстрое переключение.0 , «ноль» (значение по умолчанию) означает бесконечное ожидание |
-? --help | Выводит справку об аргументах командной строки pg_standby и завершает работу |
Программа pg_standby предназначена для работы с ядром СУБД PostgreSQL версии 8.2 или новее.
В операционных системах семейства Unix можно использовать команды:
archive_command = 'cp %p .../archive/%f'
restore_command = 'pg_standby -d -s 2 -t /tmp/pgsql.trigger.5442 .../archive %f %p %r 2>>standby.log'
recovery_end_command = 'rm -f /tmp/pgsql.trigger.5442'
Предполагается, что каталог архива физически располагается на резервном сервере. Команда
archive_command
обращается к резервному серверу посредством сетевого доступа. По отношению к самому резервному серверу эти файлы будут являться локальными, для чего применяется создание ссылок (ln
).Приведенные команды будут выполнять следующие действия:
- выводить отладочную информацию в
standby.log
; - ждать 2 секунды между проверками появления следующего файла WAL;
- прекращать ожидание, только когда появляется файл-триггер с именем
/tmp/pgsql.trigger.5442
, и выполнять переключение согласно его содержимому; - удалять файл-триггер после завершения восстановления;
- удалять лишние файлы из каталога архива.
Дополнительную информацию по поставляемому модулю pg_standby можно получить по ссылке.