четверг, 17 января 2013 г.

18.6. Репликация

Эти настройки управляют встроенной потоковой репликацией (см раздел 25.2.5). Некоторые параметры должны быть заданы на мастере, другие - на резервном сервере, которые будут получать данные репликации.

18.6.1 Мастер

Следующие параметры могут быть заданы на мастере - том сервере, который будет посылать данные для репликации на один или более резервных серверов. Обратите внимание, что кроме этих параметров, должно быть установлено корректное значение параметра wal_level; кроме этого Вы скорее всего захотите активировать WAL архивирование (см раздел 18.5.3). Значения этих параметров на резервном сервере не имеют значения, но Вы всё равно можете их задать в качестве подготовки его как мастера.
max_wal_senders (integer)
Определяет максимальное количество одновременных подключений от резервных серверов или клиентов потокового резервного копирования (т.е. максимальное количество одновременно запущенных процессов отправителей WAL). Значение по умолчанию - 0. Этот параметр может быть задан только при старте сервера. wal_level должен быть установлен в archive или hot_standby, чтобы разрешить подключения от резервных серверов.
wal_sender_delay (integer)
Определяет задержку между циклами активности процессов отправителей WAL. В каждом цикле отправитель WAL посылает все WAL, собранные с последнего цикла, на резернвый сервер. После этого процесс засыпает на wal_sender_delay и цикл начинается заново. Сон прерывается подтверждением транзакции, так что подтверждённые транзакции отправляются на резервные сервера сразу после подтверждения, вне зависимости от этой настройки. Значение по умолчанию - 1 секунда (1s). Обратите внимание, что не многих системах разница между значениями этого параметра должна быть не меньше 10 миллисекунд; задание значения не кратного 10 будет иметь тот же эффект, что и ближайшее больше значение, кратное 10. Этот параметр может быть задан либо в postgresql.conf, либо в командной строке.
wal_keep_segments (integer)
Определяет минимальное число файлов сегментов лога, хранимых в каталоге pg_xlog, в случае если резервный сервер должен получить их для потоковой репликации. Каждый сегмент обычно равен 16 мегабайт. Если резервный сервер отстаёт от мастера больше чем на wal_keep_segments сегментов, то мастер удалит нужные сегменты WAL и в таком случае подключение репликации будет прервано. (Однако, резервный сервер может затем восстановить эти сегменты из архива, если происходит архивирование WAL.)
Данная настройка задаёт только минимальное количество сегментов, хранимых в pg_xlog; система может хранить и больше количество сегментов для архивирования WAL или восстановления из чекпойнта. Если wal_keep_segments = 0 (значение по умолчанию), то система на хранит дополнительные сегменты для резервных серверов, так что количество доступных сегментов WAL является функцией места предыдущего чекпойнта и статуса архивирования WAL. Этот параметр не имеет влияния на restartpoints. Этот параметр может быть задан либо в postgresql.conf, либо в командной строке.
vacuum_defer_cleanup_age (integer)
Определяет число транзакций, по которым VACUUM и HOT обновления будут определять очистку версий мёртвых строк. Значение по умолчанию - 0 транзакций, что означает, что версии мёртвых строк будут удалены как только появится возможность, то есть как только они не видны ни одной открытой транзакции. Вы можете захотеть установить ненулевое значение на мастере, который поддерживает "горячие" резервные сервера, как это описано в разделе 25.5. Это предоставляет больше времени для запросов к резервным серверам, чтобы при этом не возникли конфликты из-за раннего удаления строк. Однако, поскольку это значение измеряется в терминах количества операций записи транзакций на основном сервере, трудно предсказать, сколько времени это предоставит для резервного сервера. Этот параметр может быть задан либо в postgresql.conf, либо в командной строке.
Вам следует так же рассмотреть возможность использования настройки hot_standby_feedback в качестве альтернативы этого параметра.
replication_timeout (integer)
Соединения репликации, неактивные больше чем заданное тут время в миллисекундах, разрываются. Это полезно для мастера для обнаружения проблем в сети и сбоя резервного сервера. Значение, равное 0, отключает этот механизм. Этот параметр может быть задан либо в postgresql.conf, либо в командной строке. Значение по умолчанию - 60 секунд.
Для того, чтобы соединения не разрывались, wal_receiver_status_interval должен быть активирован на резервном сервере и это значение должно быть меньше, чем replication_timeout.
synchronous_standby_names (string)
Значением параметра является список, с разделителями запятыми, который содержит имена резервных серверов, которые поддерживают синхронную репликацию, как это описано в разделе 25.2.6. В каждый момент времени есть максимум один активный синхронный резервный сервер; транзакции, ожидающие подтверждения, будут подтверждены лишь после того, как этот резервный сервер подтвердит получение их данных. Синхронным резервным сервером будет первый из списка, который и подключён и получает данные в реальном времени (как это отображается в состоянии потока в pg_stat_replication). Другие резервные сервера, находящиеся позже в этом списке, являются потенциальными синхронными резервными серверами. Если текущий синхронный резервный сервер по какой-то причине отключается, то он тут же замещается на следующий сервер в этом списке. Указание более одного сервера может повысить отказоустойчивость.
В качестве имени резервного сервера в этом параметре надо указывать значение настройки application_name на резервном сервере, as set in the primary_conninfo of the standby's walreceiver. Нет какого-то способа обеспечить уникальность имён серверов. В случае, если одному и тому же имени соответствует два или более сервера, один из них будет выбран в качестве синхронного, но какой именно - не определено. Значение * будет означать любое application_name, включая значение по умолчанию walreceiver.
Если имена резервных серверов тут не указаны, тогда синхронной репликации не происходит и подтверждение транзакции не будет ожидать репликации. Это конфигурация по умолчанию. Даже если синхронная репликация активирована, можно сделать так, чтобы конкретные транзакции не ожидали репликации, задав значение параметра synchronous_commit local или off.
Этот параметр может быть задан в postgresql.conf или в командной строке.

18.6.2 Резервные сервера

Эти настройки определяют поведение резервных серверов, которые должны получать данные для репликации. Их значение на мастере не имеет никакого значения.
hot_standby (boolean)
Определяет, можете ли Вы подключиться для выполнения запросов к серверу во время восстановления, как это описано в разделе 25.5. Значение по умолчанию - off. Этот параметр может быть задан только при старте сервера. Он имеет значение только при восстановлении архива или в режиме standby (резервного сервера).
max_standby_archive_delay (integer)
Когда активен режим "горячего" резервного сервера, этот параметр определяет как долго резервный сервер должен ждать перед отменой запроса к нему, если этот запрос конфликтует с записями WAL, которые должны быть сейчас применены, как об этом говорится в разделе 25.5.2. max_standby_archive_delay применяется когда WAL данные считываются из WAL архива (и потому не являются текущими данными). Значение по умолчанию - 30 секунд. Единица измерения - миллисекунды, если не определено иначе. Значение -1 позволяет резервному серверу вечно ждать завершения конфликтующего запроса. Этот параметр может быть определён в postgresql.conf или в командной строке.
Обратите внимание, что max_standby_archive_delay - не то же самое, что и максимальное время, которое запрос может выполняться до его завершения; это то время, которое дано на применение одного сегмента WAL данных. Таким образом, если один запрос привёл к значительной задержке в начале сегмента WAL, последующие конфликтующие запросы будут иметь гораздо меньше этого времени.
max_standby_streaming_delay (integer)
Когда активен режим "горячего" резервного сервера, этот параметр определяет как долго резервный сервер должен ждать перед отменой запроса к нему, если этот запрос конфликтует с записями WAL, которые должны быть сейчас применены, как об этом говорится в разделе 25.5.2. max_standby_streaming_delay применяется когда WAL данные получаются через потоковую репликацию. Значение по умолчанию - 30 секунд. Единица измерения - миллисекунды, если не определено иначе. Значение -1 позволяет резервному серверу вечно ждать завершения конфликтующего запроса. Этот параметр может быть определён в postgresql.conf или в командной строке.
Обратите внимание, что max_standby_streaming_delay - не то же самое, что и максимальное время, которое запрос может выполняться до его завершения; это то время, которое дано на применение одного сегмента WAL данных после его получения с мастера. Thus, if one query has resulted in significant delay, subsequent conflicting queries will have much less grace time until the standby server has caught up again.
wal_receiver_status_interval (integer)
Определяет минимальную частоту, с которой процесс получения WAL на резервном сервере будет gjcksfnm на мастер информацию о прогрессе репликации, который можно увидеть при помощи pg_stat_replication. Резервный сервер сообщает последнюю позицию в логе транзакций, которая была записана, последняя позиция, сброшенная на диск и последняя применённая позиция. Значением этого параметра является максимальный интервал, в секундах, между отчётами. Обновления посылаются каждый раз, когда изменяется позиция записи или сброса на диск, или, не позже, чем указанное тут время. Таким образом, реальная применённая позиция может немного отличаться от переданной. Установка этого параметра в 0 отключает обновление статуса. Этот параметр может быть задан в postgresql.conf или в командной строке. Значение по умолчанию - 10 секунд.
Когда активирован replication_timeout на мастере, wal_receiver_status_interval тоже должен быть активирован и его значение должно быть меньше, чем replication_timeout.
hot_standby_feedback (boolean)
Определяет, будет или нет "горячий" резервный сервер посылать "отзыв" (feedback) мастеру по поводу запросов, которые сейчас выполняются на резервном сервере. Этот параметр может быть использован для того, чтобы запросы не прекращались из-за очистки записей, но может увеличить нагрузку на мастер. "Отзывы" не будут посылаться чаще, чем 1 отзыв в wal_receiver_status_interval интервал. Значение по умолчанию - off. Этот параметр может быть задан в postgresql.conf или в командной строке.

Комментариев нет:

Отправить комментарий