В этом документе описаны параметры системной конфигурации в категории Репликация.
Предупреждение!
Для обеспечения стабильности и безопасности системы ручное изменение этих параметров должно выполняться с осторожностью.
Эти настройки управляют поведением потоковой репликации. Сервер может выступать в роли первичного (мастера) или резервного. Первичный сервер отправляет данные, а резервный всегда является получателем реплицируемых данных. Эти параметры в основном используются как на отправляющих серверах, так и на резервных, хотя некоторые из них имеют смысл только на мастере.
Параметры в этом разделе должны быть заданы на Мастере и на любом резервном сервере, который будет отправлять данные репликации.
Задаёт максимальное количество репликационных слотов, которые сервер может поддерживать.
replica или выше.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 10 | 1 ~ 262143 | segments; system; restart |
Задаёт максимальный размер WAL (в МБ), который могут сохранять репликационные слоты.
-1, что отключает эту функцию.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | -1 | -1 ~ INT_MAX/1024 | segments; system; reload |
Задаёт максимальное количество одновременных соединений от резервных серверов или клиентов базового резервного копирования потоковой передачи (т.е. максимальное количество одновременно работающих процессов WAL sender).
replica или выше, чтобы разрешить соединения от резервных серверов.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 10 | 0 ~ 262143 | segments; system; restart |
Включает отслеживание временных меток фиксации транзакций.
| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| boolean | off | segments; system; restart |
При установке в значение on заполняет новые файлы WAL нулями.
off, при создании файла записывается только последний байт, придавая файлу ожидаемый размер.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| boolean | on | segments; session; reload; superuser |
Задаёт минимальное количество предыдущих сегментов файлов журнала, которые следует сохранять в каталоге pg_wal, на случай, если резервный сервер потребует их для потоковой репликации.
wal_keep_segments сегментов, отправляющий сервер может удалить сегмент WAL, который всё ещё нужен резервному серверу, разорвав соединение репликации. В конечном итоге соединение на стороне получателя также завершится сбоем (хотя при использовании архивирования WAL резервный сервер может восстановиться, получив сегменты из архива).pg_wal; система может сохранять дополнительные сегменты для архивирования WAL или восстановления после контрольной точки.0 (по умолчанию), система не сохраняет дополнительных сегментов для резервных серверов. Таким образом, количество старых сегментов WAL, доступных резервному серверу, зависит от положения последней контрольной точки и состояния архивирования WAL.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 64 | 0 ~ INT_MAX | segments; system; reload |
Включает повторное использование файлов WAL.
on файлы WAL переиспользуются путём переименования, чтобы избежать создания новых файлов.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| boolean | on | segments; session; reload; superuser |
Завершает репликационные соединения, неактивные дольше указанного времени (в миллисекундах).
0 отключает таймаут.300000毫秒, то есть 5 минут.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 300000 | 0 ~ INT_MAX | segments; session; reload; superuser |
Эти настройки игнорируются на резервных серверах.
Примечание!
Помимо этих параметров, на Мастере необходимо установить соответствующий параметр wal_level, а при необходимости включить архивирование WAL.
Задаёт список резервных серверов, поддерживающих синхронную репликацию.
application_name, заданное в информации подключения. Элементы списка разделяются запятыми.primary_conninfo. Если не задано, по умолчанию используется cluster_name, иначе walreceiver.'*' соответствует любому имени резервного сервера.Этот параметр использует один из следующих синтаксисов для указания списка резервных серверов:
[FIRST] num_sync ( standby_name [, ...] )
ANY num_sync ( standby_name [, ...] )
standby_name [, ...]
num_sync — количество синхронных резервных серверов, ответы от которых транзакция должна дождаться, а standby_name — имя резервного сервера. FIRST и ANY определяют, как выбираются синхронные резервные серверы из списка.FIRST с num_sync задаёт приоритетную синхронную репликацию. Фиксация транзакций ожидает, пока записи WAL не будут реплицированы на num_sync резервных сервера с наивысшим приоритетом, выбранных из списка. Например, FIRST 3 (s1, s2, s3, s4) заставляет каждую фиксацию ожидать ответов от трёх резервных серверов с наивысшим приоритетом, выбранных из s1, s2, s3 и s4.FIRST является необязательным.ANY с num_sync задаёт кворумную синхронную репликацию. Фиксации ожидает, пока записи WAL не будут реплицированы как минимум на num_sync из перечисленных резервных серверов. Например, ANY 3 (s1, s2, s3, s4) позволяет фиксации продолжиться после получения ответов от любых трёх из s1, s2, s3 и s4.FIRST и ANY не чувствительны к регистру. Если используются как имена резервных серверов, они должны быть заключены в двойные кавычки.FIRST и num_sync, равными 1. Например, FIRST 1 (s1, s2) означает то же самое, что и s1, s2: либо s1, либо s2 будет выбран в качестве синхронного резервного сервера.standby_name должен быть допустимым SQL-идентификатором, если только это не *. Двойные кавычки могут использоваться при необходимости. Однако сравнение standby_name и имён приложений резервных серверов не чувствительно к регистру (независимо от кавычек).local или off.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| string | segments; system; reload |
Задаёт, на сколько (в количестве транзакций) следует откладывать очистку мёртвых версий строк в VACUUM и HOT.
hot_standby_feedback на резервном сервере в качестве альтернативы.old_snapshot_threshold.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 0 | 0 ~ 1000000 | segments; system; reload |
Эти настройки игнорируются на мастер-сервере.
Задаёт, можно ли выполнять подключения и запросы во время восстановления](https://www.postgresql.org/docs/12/hot-standby.html).
| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| boolean | off | segments; system; restart |
Задаёт, отправляет ли горячий резервный сервер обратную связь мастеру или вышестоящему резервному серверу о текущих выполняемых запросах на резервном сервере.
wal_receiver_status_interval.old_snapshot_threshold на мастере. Снимок на резервном сервере, превышающий порог возраста мастера, может стать недействительным, что приведёт к отмене транзакции на резервном сервере. Это связано с тем, что old_snapshot_threshold устанавливает абсолютный предел, насколько долго могут существовать мёртвые строки, предотвращая сбои из-за конфигурации резервного сервера.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| boolean | off | segments; system; reload |
При активном горячем резервном сервере этот параметр задаёт максимальное время (в миллисекундах), в течение которого резервный сервер ждёт, прежде чем отменить запросы, конфликтующие с записями WAL, которые собираются применить. См. Обработка конфликтов запросов.
-1 применяется, когда данные WAL читаются из архивов WAL (а не из текущих WAL).max_standby_archive_delay позволяет резервному серверу ждать неограниченно долго, пока не завершится конфликтующий запрос.max_standby_streaming_delay — это не максимальное время, в течение которого один запрос может выполняться до отмены; это максимальное общее время, разрешённое для применения любого сегмента WAL. Таким образом, если ранний запрос вызывает значительную задержку, последующие конфликтующие запросы получат меньше времени.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 30000 | -1 ~ INT_MAX | segments; system; reload |
При активном горячем резервном сервере этот параметр задаёт максимальное время (в миллисекундах), в течение которого резервный сервер ждёт, прежде чем отменить запросы, конфликтующие с записями WAL, которые собираются применить. См. Обработка конфликтов запросов.
max_standby_streaming_delay применяется, когда данные WAL получены через потоковую репликацию.-1 позволяет резервному серверу ждать неограниченно долго, пока не завершится конфликтующий запрос.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 30000 | -1 ~ INT_MAX | segments; system; reload |
Указывает строку подключения, используемую резервным сервером для подключения к серверу-источнику.
primary_conninfo или в отдельный файл ~/.pgpass на резервном сервере (используя replication в качестве имени базы данных).primary_conninfo.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| string | segments; system; restart; superuser |
Опционально указывает существующий репликационный слот, который следует использовать при подключении через потоковую репликацию, чтобы управлять удалением ресурсов на узле-источнике.
primary_conninfo не установлен.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| string | segments; system; restart |
Указывает файл триггера, существование которого завершает восстановление на резервном сервере.
pg_ctl promote или вызовом pg_promote.| Тип данных | Значение по умолчанию | Категория |
|---|---|---|
| string | segments; system; reload |
По умолчанию резервный сервер применяет записи WAL от сервера-источника как можно быстрее.
hot_standby_feedback, что может привести к раздуванию мастера — используйте с осторожностью, если оба параметра включены.0, что означает отсутствие задержки.Примечание!
При установкеsynchronous_commitвremote_applyсинхронная репликация受到影响 — каждыйCOMMITдолжен ждать завершения задержки перед применением.
| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 0 | 0 ~ INT_MAX | segments; system; reload |
Задаёт минимальную частоту (в секундах), с которой процесс WAL-приёмника на резервном сервере отправляет информацию о прогрессе репликации на мастер или промежуточный резервный сервер.
0 полностью отключает обновления статуса.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 10 | 0 ~ INT_MAX/1000 | segments; system; reload |
Завершает репликационные соединения, которые были неактивны дольше указанного времени (в миллисекундах).
0 отключает таймаут.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 60000 | 0 ~ INT_MAX | segments; system; reload |
Указывает, сколько миллисекунд резервный сервер должен ждать перед повторной попыткой получения данных WAL, если данные недоступны ни от одного источника (потоковая репликация, локальный pg_wal или архив WAL).
| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 5000 | 1 ~ INT_MAX | segments; system; reload |
Эти параметры управляют поведением подписчиков логической репликации. Их значения на издателе не имеют значения.
Примечание!
Параметры конфигурацииwal_receiver_timeout,wal_receiver_status_intervalиwal_retrieve_retry_intervalтакже влияют на рабочие процессы логической репликации.
Задаёт максимальное количество рабочих процессов логической репликации. Это включает как рабочие процессы применения, так и рабочие процессы синхронизации таблиц.
max_worker_processes.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 4 | 0 ~ 262143 | segments; system; restart |
Задаёт максимальное количество рабочих процессов синхронизации на одну подписку.
max_logical_replication_workers.| Тип данных | Значение по умолчанию | Диапазон | Категория |
|---|---|---|---|
| int | 2 | 0 ~ 262143 | segments; system; reload |