Подключение к кластеру Managed Service for Sharded PostgreSQL
Как подключиться к роутеру?
Вы можете подключиться к роутеру в кластере Managed Service for Sharded PostgreSQL с помощью клиента PostgreSQL. Для этого выполните команду:
psql "host=<FQDN_хоста> \
port=6432 \
sslmode=verify-full \
dbname=<имя_БД> \
user=<имя_пользователя> \
target_session_attrs=read-write"
Где target_session_attrs определяет тип запроса к хосту. Например, значение read-write дает возможность чтения и записи. Подробнее читайте в документации SPQR
После выполнения команды введите пароль пользователя для завершения процедуры подключения.
Как подключиться к консоли администратора Sharded PostgreSQL?
Используйте порт 6432, пользователя spqr-console и БД spqr-console. Пример:
psql "host=<FQDN_роутера> port=6432 user=spqr-console dbname=spqr-console sslmode=verify-full"
Что такое сессионный и транзакционный режимы?
В сессионном режиме клиентское соединение устанавливается при первом запросе к базе данных и поддерживается до тех пор, пока клиент не разорвет сессию. Затем это соединение может быть использовано другим или этим же клиентом. Такой подход позволяет хорошо переживать момент установления большого количества клиентских соединений к СУБД (например, при старте приложений, обращающихся к базам данных), но является менее производительным, чем транзакционный режим.
В транзакционном режиме клиентское соединение устанавливается при первом запросе к базе данных и поддерживается до завершения транзакции. Затем это соединение может быть использовано другим или этим же клиентом. Такой подход позволяет поддерживать небольшое количество серверных соединений между менеджером подключений и хостами PostgreSQL при большом количестве клиентских соединений.
Транзакционный режим обеспечивает высокую производительность и позволяет максимально эффективно нагрузить СУБД, но в нем недоступно использование:
-
временных таблиц (temporary tables
), курсоров (cursors ) и рекомендательных блокировок (advisory locks ), которые существуют дольше одной транзакции; -
подготовленных выражений (prepared statements
).
Настройка режима производится в параметре pool_mode в конфигурации роутера. По умолчанию включен транзакционный режим.
Как получить статистику и состояние подключений?
Роутер предоставляет административную консоль по протоколу PostgreSQL. В консоли доступны команды SHOW для получения статистики, например:
SHOW clients WHERE dbname = <имя_базы_данных>;— отображает список клиентов, маршрут, адрес роутера и состояние соединения.SHOW shards— выводит список шардов.SHOW backend_connections— выводит список подключений к хостам шардов.
Как настроить подключение приложения к Sharded PostgreSQL?
Для подключения из приложений используйте стандартные PostgreSQL-драйверы (например, pgx). В конфигурации укажите все роутеры кластера. Убедитесь, что группы безопасности кластера разрешают подключение к нему.
Для сложных запросов (например, с CTE) используйте виртуальный параметр /* __spqr__engine_v2: true */. Виртуальные параметры можно задавать комментариями в SQL или через SET. Подробнее о виртуальных параметрах читайте в документации SPQR
Какие опции есть для управления маршрутизацией соединений?
Управлять можно только типом запроса к хосту. Для этого используйте виртуальный параметр /*__spqr__target_session_attrs */ или параметр target_session_attrs и укажите в нем желаемый тип запроса: read-write, smart-read-write, read-only, prefer-standby или any.
Тип запроса влияет на поведение кластера при обработке запроса. Например, read-only позволяет подключаться только к репликам, prefer-standby выбирает реплику и переключается на мастер при отсутствии реплик. Это полезно при наличии нескольких серверов и автоматическом переключении мастера. Подробнее о типах запросов в документации SPQR
Виртуальные параметры можно задавать комментариями в SQL или через SET.