Несколько хостов libpq: выбор соединения не является прозрачным переносом транзакции

Фотография конкретного исполнения не приложена.

Список хостов позволяет libpq искать подходящее подключение. Target_session_attrs уточняет, какая сессия приемлема: например, primary, standby либо read-write. Это решение на этапе соединения, а не распределение каждого следующего SQL-запроса между всеми адресами.

В документации 18 read-write требует возможности обычной записи по умолчанию: сервер не должен быть в hot standby, а default_transaction_read_only должен быть выключен. Primary проверяет другой критерий — отсутствие hot standby. Поэтому эти варианты нельзя считать полными синонимами для любой конфигурации сервера.

Load_balance_hosts меняет порядок попыток выбора доступных адресов. После успешного подключения последующие запросы идут на выбранный сервер. Если оно оборвалось во время операции, список альтернатив сам по себе не подтверждает перенос незавершённой транзакции и не определяет, успел ли сервер подтвердить её результат.

В приёмке проверяют доступность хостов, несовпадение требуемой роли и изменение состава при новом подключении. Отдельно проверяют реакцию приложения на разрыв действующего сеанса. Успешное соединение с одним резервным адресом не является доказательством готовой автоматической процедуры failover всей базы, приложений и состояния обработки команд.

Основание — Official PostgreSQL major18 documentation snapshot; stable18.6 observed separately from19RC1, разделы Multiple hosts; target_session_attrs; load_balance_hosts. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Использована документация ветки PostgreSQL 18; страницы обновляются внутри major-ветки. Версии действующих сервера и libpq, конфигурация и резервные копии не проверялись. Подключения, SQL-команды и восстановление не выполнялись.

Запросить

Запросы отправляются на наш e-mail из вашей почтовой программы.