11
Особенности pg_rewind
Целевой сервер (бывший мастер)
все необходимые журнальные файлы должны сохраниться в pg_wal
или в архиве
должны быть включены контрольные суммы или wal_log_hints = on
должен быть включен параметр full_page_writes = on
Сервер-источник (текущий мастер)
клиент-серверное подключение:
--source-server = строка подключения
корректно остановленный сервер:
--source-pgdata = каталог
Для сервера-источника, если он запущен, ключом --source-server
задается строка клиент-серверного подключения libpq (утилита не
использует протокол репликации). Роль для подключения должна иметь
право выполнения функций pg_ls_dir, pg_stat_file, pg_read_binary_file.
Если же сервер-источник остановлен корректно, можно указать его
каталог данных ключом --source-pgdata.
Утилита имеет ряд особенностей:
●
Все сегменты WAL, содержащие записи от последней общей
контрольной точки до текущего момента, должны находиться
в каталоге pg_wal целевого сервера или быть доступны для
получения из архива. Во втором случае надо задать параметр
restore_command и ключ --restore-target-wal.
●
Из-за ошибок при записи возможно рассогласование данных внутри
страницы (проблема неатомарной записи, обсуждается в теме
«Базовая резервная копия»). Чтобы решить проблему, на целевом
сервере первое изменение страницы после контрольной точки
должно вызывать запись в WAL полного ее образа. Для этого должен
быть установлен full_page_writes = on. Этот режим не учитывает
«незначительные» изменения страниц (hint bits), поэтому
дополнительно требуется, чтобы в кластере либо были включены
контрольные суммы страниц, либо был установлен параметр
wal_log_hints = on.
●
Если целевой сервер был остановлен нештатно, без контрольной
точки, утилита запустит его в однопользовательском режиме и тут же
остановит корректно.