PostgreSQL: Как узнать тип реплики без мастера? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть 1 хост реплики, на котором работает экземпляр postgres. Мне нужно понять, является ли эта реплика синхронной или асинхронной. Есть ли взломать, как узнать без доступа к мастеру?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2020

Если вы используете синхронную репликацию, вы указали бы application_name в recovery.conf. Тем не менее, вы можете установить application name без использования синхронной репликации (т. Е. synchronous_standby_names никогда не устанавливалось в настройках мастера), но это единственный совет относительно того, используете ли вы синхронную v. Асинхронную репликацию. В противном случае вам нужно проверить со стороны мастера.

0 голосов
/ 13 февраля 2020

Вы можете проверить, установлен ли XACT_COMPLETION_APPLY_FEEDBACK в записях фиксации в файлах WAL. Я думаю, что это будет работать только под "remote_apply", хотя. Кроме того, нет простого способа проверить это. Вам нужно будет вручную проанализировать некоторые записи WAL, или добавить код в pg_waldump, чтобы напечатать эту дополнительную информацию, или, возможно, добавить код в xact_redo_commit в xact. c, чтобы регистрировать его при его просмотре. Я не думаю, что есть способ определить, используется ли уровень ниже «remote_apply».

0 голосов
/ 12 февраля 2020

Вы не можете, потому что на стороне режима ожидания нет различий.

Разница лишь в том, что основной сервер ожидает обратной связи от режима ожидания в течение COMMIT или нет.

Вы будете надо обследовать synchronous_standby_names по первичному.

...