Управление и использование
В Pangolin Pooler существует специальная «виртуальная» база данных, так называемая административная база данных, которая может использоваться для мониторинга и управления компонентом. Подключиться к ней можно через консоль, которая доступна при обычном подключении к базе pgbouncer
:
$ psql -p 6544 pgbouncer
Подключаться к этой консоли разрешено только пользователям, перечисленным в параметрах конфигурации admin_users
или stats_users
(за исключением режима auth_mode = any
, когда в качестве stats_user
может подключиться любой пользователь).
Сам интерфейс администрирования Pangolin Pooler состоит из нескольких команд SHOW
, а также команд управления процессами, доступных при подключении к административной базе данных pgbouncer
. Их описание приведено в подразделах далее.
Вывод команды SHOW HELP
Вывод команды SHOW HELP
в консоли администрирования:
pgbouncer=# SHOW HELP;
NOTICE: Console usage
DETAIL:
SHOW [HELP|CONFIG|DATABASES|FDS|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION|...]
SET key = arg
RELOAD
PAUSE
SUSPEND
RESUME
SHUTDOWN
[...]
Для приложения Pangolin Pooler также доступен синтаксис опций из командной строки.
Вывод команды pangolin-pooler --help
$ pangolin-pooler --help
pangolin-pooler is a connection pooler for Pangolin DBMS.
Usage:
pangolin-pooler [OPTION]... CONFIG_FILE
Options:
-d, --daemon run in background (as a daemon)
-q, --quiet run quietly
-R, --reboot do an online reboot
-u, --user=USERNAME assume identity of USERNAME
-v, --verbose increase verbosity
-V, --version show version, then exit
-h, --help show this help, then exit
-l, --log=FILENAME write (or append) server log to FILENAME
Pangolin product version information:
--product_version prints product name and version
--product_build_info prints product build number, date and hash
--product_component_hash prints component hash string
Команды SHOW
Интерфейс администрирования Pangolin Pooler состоит из нескольких новых команд SHOW
, доступных при подключении к административной базе данных pgbouncer
. Команды SHOW
выводят различную информацию.
Команда | Описание |
---|---|
SHOW STATS | Статистика. В этой и связанных с ней командах общие показатели отсчитываются с момента запуска процесса, промежуточные значения обновляются раз в период, заданный в stats_period |
SHOW STATS_TOTALS | Подмножество SHOW STATS , показывающее общие значения (total_ ) |
SHOW STATS_AVERAGES | Подмножество SHOW STATS , показывающее средние значения (avg_ ) |
SHOW TOTALS | Как SHOW STATS , но агрегированное по всем базам данных |
SHOW SERVERS | Информация о серверных подключениях |
SHOW CLIENTS | Информация о клиентских подключениях |
SHOW POOLS | Для каждой пары (база данных, пользователь) создается новая запись в пул. Данная команда выводит эту информацию |
SHOW PEER_POOLS | Для каждого настроенного узла создается новая запись peer_pool . Данная команда выводит эту информацию |
SHOW LISTS | Список количества БД, пользователей, пулов и другой информации в виде столбцов |
SHOW USERS | Показывает информацию о пользовательских настройках и количестве подключений |
SHOW DATABASES | Информация о реализуемых подключениях к базам данных и их состоянии |
SHOW PEERS | Показывает информацию о пирах |
SHOW FDS | Внутренняя команда. Показывает список используемых файловых дескрипторов с прикрепленным к ним внутренним состоянием |
SHOW SOCKETS, SHOW ACTIVE_SOCKETS | Показывает низкоуровневую информацию о сокетах или только об активных сокетах. Сюда входит информация, отображаемая в разделах SHOW CLIENTS и SHOW SERVERS , а также другая низкоуровневая информация |
SHOW CONFIG | Отображаются текущие параметры конфигурации, по одному на строку |
SHOW MEM | Показывает низкоуровневую информацию о текущих размерах различных разделов внутренней памяти. Представленная информация может быть изменена |
SHOW DNS_HOSTS | Показывает имена хостов в кеше DNS |
SHOW DNS_ZONES | Показывает зоны DNS в кеше |
SHOW VERSION | Показывает версию ядра компонента Pangolin Pooler - PgBouncer |
SHOW STATE | Показывает настройки состояния компонента (активное, приостановленное и ожидающее) |
Команды SHOW
для просмотра информации о статусе или результатах работы сквозной аутентификации:
Команда | Описание |
---|---|
SHOW AUTHSERVERS | Показывает информацию по соединениям с сервером аутентификации |
SHOW AUTHPOOLS | Показывает информацию по пулам аутентификации |
SHOW AUTHUSERS | Показывает информацию о пользователях |
SHOW LAST | Показывает информацию об аутентификации последних N пользователей |
SHOW LOCKED_USERS | Показывает информацию о временно заблокированных пользователях |
Описание полей, возвращаемых командами, приведено в последующих подразделах.
SHOW STATS
Команда SHOW STATS
показывает статистику. В этой и связанных с ней командах общие показатели отсчитываются с момента запуска процесса, промежуточные значения обновляются раз в период, заданный stats_period
.
Название поля | Описание поля |
---|---|
database | Статистика представлена по каждой базе данных |
total_xact_count | Общее количество SQL-транзакций, объединенных в пул Pangolin Pooler |
total_query_count | Общее количество SQL-команд, объединенных в пул Pangolin Pooler |
total_server_assignment_count | Общее количество раз, когда сервер был назначен клиенту |
total_received | Общий объем сетевого трафика в байтах, полученный Pangolin Pooler |
total_sent | Общий объем сетевого трафика в байтах, отправленный Pangolin Pooler |
total_xact_time | Общее количество времени в микросекундах, затраченных Pangolin Pooler при подключении к СУБД в рамках транзакции, либо при простое в рамках транзакции, либо при выполнении запросов |
total_query_time | Общее количество времени в микросекундах, затраченных Pangolin Pooler на активное подключение к СУБД и выполнение запросов |
total_wait_time | Время, которое клиенты проводят в ожидании ответа сервера, в микросекундах. Обновляется, когда клиентскому соединению назначается внутреннее соединение |
total_client_parse_count | Общее количество подготовленных запросов, созданных клиентами. Применимо только в режиме отслеживания именованных подготовленных запросов |
total_server_parse_count | Общее количество подготовленных операторов, созданных Pangolin Pooler на сервере. Применимо только в режиме отслеживания именованных подготовленных запросов |
total_bind_count | Общее количество подготовленных операторов, подготовленных для выполнения клиентами и отправленных в СУБД с помощью Pangolin Pooler. Применимо только в режиме отслеживания именованных подготовленных запросов |
avg_xact_count | Среднее количество транзакций в секунду за последний период статистики |
avg_query_count | Среднее количество запросов в секунду за последний период статистики |
avg_server_assignment_count | Среднее количество обращений к серверу за секунду в течение последнего периода сбора статистики |
avg_recv | Среднее количество полученных (от клиентов) байт в секунду |
avg_sent | Среднее количество отправленных (клиентам) байт в секунду |
avg_xact_time | Средняя продолжительность транзакции в микросекундах |
avg_query_time | Средняя продолжительность запроса в микросекундах |
avg_wait_time | Время, которое клиенты проводят в ожидании сервера в микросекундах (среднее время ожидания клиентов, которым был назначен сервер, в течение текущего stats_period ) |
avg_client_parse_count | Среднее количество операторов, созданных клиентами. Применимо только в режиме отслеживания именованных подготовленных запросов |
avg_server_parse_count | Среднее количество операторов, созданных Pangolin Pooler на сервере. Применимо только в режиме отслеживания именованных подготовленных запросов |
avg_bind_count | Среднее количество операторов, подготовленных для выполнения клиентами и переданных в СУБД с помощью Pangolin Pooler. Применимо только в режиме отслеживания именованных подготовленных запросов |
SHOW SERVERS
В таблице ниже приведены поля вывода команды SHOW SERVERS
.
Название поля | Описание поля |
---|---|
type | Тип соединения, «S» для сервера |
user | Имя пользователя, используемое Pangolin Pooler для подключения к серверу |
database | Имя базы данных |
replication | Если для подключения к серверу используется репликация. Значение none , logical или physical |
state | Состояние подключения к серверу Pangolin Pooler. Значения: active , idle , used , tested , new , active_cancel , being_canceled |
addr | IP-адрес сервера СУБД |
port | Порт сервера СУБД |
local_addr | Локальный адрес начала подключения |
local_port | Локальный порт начала подключения |
connect_time | Когда было установлено соединение |
loged_in_time | Время подключения |
loged_in | Длительность поднятия соединения в секундах |
loged_in_us | Дробная часть длительности поднятия соединения в микросекундах |
request_time | Время отправки последнего запроса |
wait | Не используется для подключений к серверу |
wait_us | Не используется для подключений к серверу |
close_needed | Флаг закрытия: 1 если соединение будет закрыто как можно скорее, потому что идет перезагрузка файла конфигурации / обновление DNS изменило информацию о соединении / был получен RECONNECT |
ptr | Адрес внутреннего объекта подключения |
link | Адрес клиентского соединения, с которым сопряжен сервер |
remote_pid | PID процесса серверной стороны |
tls | Информация о TLS-соединении или пустая строка, если TLS не используется |
application_name | Имя приложения, ассоциированное со связанным клиентским соединением, или пустая строка, если приложение не установлено / нет соединения |
prepared_statements | Количество подготовленных запросов на сервере, ограниченное значением max_prepared_statements |
id | Уникальный идентификатор для сервера |
SHOW CLIENTS
В таблице ниже приведены поля вывода команды SHOW CLIENTS
.
Название поля | Описание поля |
---|---|
type | Тип соединения, «C» для клиента |
user | Пользователь, подключенный к клиенту |
database | Имя базы данных |
replication | Использование репликации. Значения: none , logical или physical |
state | Состояние клиентского подключения (active , waiting , active_cancel_req или waiting_cancel_req ) |
addr | IP-адрес клиента |
port | Исходный порт клиента |
local_addr | Адрес конечного подключения на локальном компьютере |
local_port | Конечный порт подключения на локальном компьютере |
connect_time | Временная метка подключения |
request_time | Временная метка последнего запроса клиента |
wait | Текущее время ожидания в секундах |
wait_us | Дробная часть текущей времени ожидания в микросекундах |
close_needed | Не используется для клиентов |
ptr | Внутренний адрес объекта для этого подключения |
link | Адрес подключения к серверу, с которым связан клиент |
remote_pid | Идентификатор процесса, если клиент подключается через сокет Unix и ОС поддерживает его получение |
tls | Информация о TLS-подключении или пустая строка, если TLS не используется |
application_name | Имя приложения, ассоциированное со связанным клиентским соединением, или пустая строка, если приложение не установлено / нет соединения |
prepared_statements | Количество подготовленных запросов, подготовленных клиентом |
id | Уникальный идентификатор клиента |
SHOW POOLS
В таблице ниже приведены поля вывода команды SHOW POOLS
.
Название поля | Описание поля |
---|---|
database | Имя базы данных |
user | Имя пользователя |
cl_active | Клиентские подключения, которые либо связаны с серверными подключениями, либо находятся в режиме ожидания без запросов на обработку |
cl_waiting | Клиентские соединения, которые отправили запросы, но еще не получили подключения к серверу |
cl_active_cancel_req | Клиентские подключения, которые передали запросы на отмену на сервер и ожидают ответа сервера |
cl_waiting_cancel_req | Клиентские соединения, которые еще не отправили на сервер отмены запроса |
sv_active | Соединения с сервером, которые связаны с клиентом |
sv_active_cancel | Подключения к серверу, которые в данный момент пересылают запрос на отмену |
sv_being_canceled | Серверы, которые обычно могут простаивать, но не делают этого до тех пор, пока не будут выполнены все запросы на отмену в процессе выполнения, отправленные для отмены запроса на этом сервере |
sv_idle | Соединения с сервером, которые не используются и могут быть немедленно использованы для клиентских запросов |
sv_used | Подключения к серверу, которые простаивали более server_check_delay секунд, поэтому перед повторным использованием им требуется server_check_query секунд |
sv_tested | Подключения к серверу, в которых выполняются server_reset_query или server_check_query |
sv_login | Подключения к серверу в данный момент находятся в процессе входа в систему |
maxwait | Время ожидания клиента в очереди. Если это значение начинает расти, значит, текущий пул серверов не обрабатывает запросы достаточно быстро. Причиной может быть либо перегрузка сервера, либо слишком маленький размер пула |
maxwait_us | Дробная часть максимального времени ожидания в микросекундах |
avg_time | Среднее время поднятия пула с учетом аутентификации в секундах |
avg_time_us | Дробная часть среднего времени поднятия пула в микросекундах |
max_time | Максимальное время поднятия пула с учетом аутентификации в секундах |
max_time_us | Максимальное время поднятия пула в микросекундах |
pool_mode | Используемый режим пула |
load_balance_hosts | Если хост пула содержит список, разделенный запятыми, используется load_balance_hosts |
SHOW PEER_POOLS
В таблице ниже приведены поля вывода команды SHOW PEER_POOLS
.
Название поля | Описание поля |
---|---|
database | Идентификатор настроенной записи |
cl_active_cancel_req | Клиентские подключения, ожидающие ответа сервера на запрос отмены |
cl_waiting_cancel_req | Клиентские соединения, еще не отправившие запрос отмены на сервер |
sv_active_cancel | Подключения к серверу, выполняющие передачу запроса на отмену |
sv_login | Подключения к серверу, находящиеся в процессе входа в систему |
SHOW LISTS
В таблице ниже приведены поля вывода команды SHOW LISTS
.
Название поля | Описание поля |
---|---|
databases | Количество баз данных |
users | Количество пользователей |
pools | Количество пулов |
free_clients | Количество свободных клиентов, которые отключились, но Pangolin Pooler сохраняет выделенную для них память |
used_clients | Количество использованных клиентов |
login_clients | Количество клиентов в состоянии входа в систему |
free_servers | Количество свободных серверов, которые отключены, но Pangolin Pooler сохраняет выделенную для них память |
used_servers | Количество использованных серверов |
auth_pools | Количество пулов аутентификации |
free_auth_servers | Количество свободных серверов аутентификации |
used_auth_servers | Количество задействованных серверов аутентификации |
dns_names | Количество DNS-имен в кеше |
dns_zones | Количество DNS-зон в кеше |
dns_queries | Количество выполняемых DNS-запросов в настоящее время |
dns_pending | Не используется |
SHOW USERS
В таблице ниже приведены поля вывода команды SHOW USERS
.
Название поля | Описание поля |
---|---|
name | Имя пользователя |
pool_size | Пользовательское значение pool_size или NULL , если не задано |
reserve_pool_size | Пользовательское переопределение reserve_pool_size или NULL , если не задано |
pool_mode | Переопределение пользователем pool_mode или NULL , если не задано |
max_user_connections | Параметр max_user_connections для пользователя. Если не задан, отображается значение по умолчанию |
current_connections | Текущее количество подключений к серверу, открытых этим пользователем ко всем серверам |
max_user_client_connections | Параметр max_user_client_connections для пользователя. Если не задан, отображается значение по умолчанию |
current_client_connections | Текущее количество клиентских подключений, открытых для Pangolin Pooler у этого пользователя |
SHOW DATABASES
В таблице ниже приведены поля вывода команды SHOW DATABASES
.
Название поля | Описание поля |
---|---|
name | Имя настроенной записи базы данных |
host | IP-адрес, к которому подключается Pangolin Pooler |
port | Порт, к которому подключается Pangolin Pooler |
database | Фактическое имя базы данных, к которой подключается Pangolin Pooler |
force_user | Если имя пользователя указано в строке подключения, то соединение между Pangolin Pooler и СУБД устанавливается с указанным пользователем, независимо от того, кто является клиентом |
pool_size | Максимальное количество подключений к серверу |
min_pool_size | Минимальное количество подключений к серверу |
reserve_pool_size | Максимальное количество дополнительных подключений к этой базе данных |
server_lifetime | Максимальное время жизни подключения к серверу для этой базы данных |
pool_mode | Переопределить режим пула базы данных или оставить значение NULL , если будет использоваться значение по умолчанию |
load_balance_hosts | Если хост содержит список, разделенный запятыми, то в load_balance_hosts базы данных он будет указан как хост |
max_connections | Максимальное количество допустимых подключений к серверу для этой базы данных, заданное параметром max_db_connections , глобально или для каждой базы данных |
current_connections | Текущее количество подключений к серверу для этой базы данных |
max_client_connections | Максимальное количество допустимых клиентских подключений для этого экземпляра Pangolin Pooler, заданное параметром max_db_client_connections для каждой базы данных |
current_client_connections | Текущее количество клиентских подключений к этой базе данных |
paused | 1 , если эта база данных в данный момент приостановлена, иначе 0 |
disabled | 1 , если эта база данных в данный момент отключена, иначе 0 |
SHOW PEERS
В таблице ниже приведены поля вывода команды SHOW PEERS
.
Название поля | Описание поля |
---|---|
peer_id | Идентификатор настроенной записи |
host | IP-адрес, к которому подключается Pangolin Pooler |
port | Порт, к которому подключается Pangolin Pooler |
pool_size | Максимальное количество подключений к серверу, которые могут быть осуществлены к этому узлу |
SHOW FDS
Эта команда блокирует внутренний цикл обработки событий, поэтому ее не следует использовать во время работы Pangolin Pooler.
В таблице ниже приведены поля вывода команды SHOW FDS
.
Название поля | Описание поля |
---|---|
fd | Числовое значение файлового дескриптора (FD) |
task | Предназначение. Принимает одно из значений: pooler , client или server |
user | Пользователь соединения, использующий FD |
database | База данных соединения, использующего FD |
addr | IP-адрес соединения, использующего FD. Принимает значение unix , если используется сокет Unix |
port | Порт, используемый соединением с использованием FD |
cancel | Клавиша отмены для этого подключения |
link | fd для соответствующего сервера/клиента. NULL , если неактивен |
SHOW CONFIG
В таблице ниже приведены поля вывода команды SHOW CONFIG
.
Название поля | Описание поля |
---|---|
key | Имя переменной конфигурации |
value | Значение конфигурации |
default | Значение конфигурации по умолчанию |
changeable | Значения yes или no . Показывает, можно ли изменить переменную во время работы. Если no , переменную можно изменить только при загрузке. Используйте SET , чтобы изменить переменную во время работы |
SHOW DNS_HOSTS
В таблице ниже приведены поля вывода команды SHOW DNS_HOSTS
.
Название поля | Описание поля |
---|---|
hostname | Имя хоста |
ttl | Время в секундах до следующего поиска |
addrs | Список адресов, разделенных запятыми |
SHOW DNS_ZONES
В таблице ниже приведены поля вывода команды SHOW DNS_ZONES
.
Название поля | Описание поля |
---|---|
zonename | Название зоны |
serial | Текущий серийный номер |
count | Имена хостов, принадлежащих этой зоне |
SHOW AUTHSERVERS
В таблице ниже приведены поля вывода команды SHOW AUTHSERVERS
.
Название поля | Описание поля |
---|---|
type | Тип соединения, «A» для серверов аутентификации |
database | Имя базы данных |
state | Состояние подключения к серверу Pangolin Pooler. Значения: active , used или idle |
addr | IP-адрес сервера СУБД |
port | Порт сервера СУБД |
local_addr | Исходный адрес подключения на локальной машине |
local_port | Исходный порт подключения на локальной машине |
connect_time | Время установления подключения |
loged_in_time | Время подключения (время, когда получен ответ на handshake запрос) |
request_time | Время выдачи последнего запроса |
ptr | Адрес внутреннего объекта для данного подключения. Используется как уникальный идентификатор |
tls | Информация о TLS-подключении. Пустая строка, если TLS не используется |
SHOW AUTHPOOLS
В таблице ниже приведены поля вывода команды SHOW AUTHPOOLS
.
Название поля | Описание поля |
---|---|
database | Имя базы данных |
cl_auth | Количество клиентских подключений, которые выполняют запрос аутентификации к серверу аутентификации |
sv_active | Подключения к серверу, которые используются в данный момент |
sv_idle | Подключения к серверу, которые не используются в данный момент |
sv_used | Подключения к серверу, который простаивали более server_check_delay секунд, поэтому перед повторным использованием для подключения потребуется server_check_query секунд |
sv_tested | Подключения к серверу, в которых выполняются server_reset_query или server_check_query |
sv_login | Подключения к серверу, находящиеся в процессе входа в систему |
maxwait | Время ожидания в очереди самого первого клиента в секундах. Если это число начинает увеличиваться, значит текущий пул серверов не справляется с запросами достаточно быстро |
maxwait_us | Дробная часть максимального времени ожидания в микросекундах |
SHOW AUTHUSERS
В таблице ниже приведены поля вывода команды SHOW AUTHUSERS
.
Название поля | Описание поля |
---|---|
name | Имя пользователя |
addr | IP-адрес клиента |
port | Порт клиента |
database | Имя базы данных |
pool_mode | Переопределить режим пула базы данных или оставить значение NULL , если будет использоваться значение по умолчанию |
SHOW LAST
В таблице ниже приведены поля вывода команды SHOW LAST
.
Название поля | Описание поля |
---|---|
user | Имя пользователя |
addr | IP-адрес клиента |
port | Порт клиента |
tls | Информация о TLS-подключении. Пустая строка, если TLS не используется |
method | Метод аутентификации (например, md5 , scram-sha-256 , ldap , cert ). Отображается только для аутентифицированных пользователей |
place | Место выполнения аутентификации (Pangolin Pooler, Pangolin DBMS) |
status | Статус аутентификации (ok , failed , expired ) |
connect_time | Время установления подключения |
wait | Время ожидания клиента в очереди до аутентификации в секундах |
wait_us | Дробная часть времени ожидания в микросекундах |
auth_time | Время выполнения аутентификации (получения статуса аутентификации) |
auth | Время выполнения аутентификация (в секундах). Если это число начинает увеличиваться, значит текущий сервер аутентификации не справляется с запросами достаточно быстро. Причиной может быть перегруженный сервер, а в случае внешних аутентификаций (GSS, LDAP, RADIUS) перегруженный сервер аутентификации |
auth_us | Дробная часть времени выполнения аутентификации в микросекундах |
SHOW LOCKED_USERS
В таблице ниже приведены поля вывода команды SHOW LOCKED_USERS
.
Название поля | Описание поля |
---|---|
user | Имя пользователя |
addr | IP-адрес клиента |
port | Порт клиента |
database | Имя базы данных |
begin | Время начала блокировки |
end | Время окончания блокировки |
Команды управления процессом
В таблице ниже приведены команды, отвечающие за управление процессами.
Команда | Описание |
PAUSE <database_name> | Pangolin Pooler пытается отключиться от всех серверов. При отключении от каждого сервера ожидается, что это подключение к серверу будет освобождено в соответствии с режимом объединения в пул (в режиме пула транзакций конкретная транзакция должна завершиться, в режиме пула операторов — конкретный оператор должен завершиться, а в режиме пула сеансов – должен отключиться клиент). Команда не будет выполнена до тех пор, пока все подключения к серверам не будут отключены. Команда используется во время перезапуска базы данных. Если указано имя базы данных, то она будет приостановлена. Новые подключения клиентов к приостановленной базе данных будут ожидать вызова команды RESUME |
DISABLE <database_name> | Отклоняет все новые клиентские подключения к данной базе данных |
ENABLE <database_name> | Разрешает новые клиентские подключения после команды DISABLE |
RECONNECT <database_name> | Закрывает каждое открытое соединение с сервером для данной базы данных (или для всех баз данных) после его освобождения, в соответствии с режимом пула, даже если срок его действия еще не истек. Новые соединения с сервером могут быть установлены немедленно и реализовывать подключение по мере необходимости, в соответствии с настройками размера пула. Эта команда полезна, если настройки подключения к серверу изменились, например, для постепенного перехода на новый сервер. Эту команду не нужно выполнять, если строка подключения в pangolin-pooler.ini была изменена и перезагружена (RELOAD ) или если изменилось разрешение DNS, потому что в этом случае аналогичное действие будет выполнено автоматически. Эта команда нужна только в том случае, если что-то, находящееся «ниже» (по потоку данных) Pangolin Pooler, перенаправляет подключения. После выполнения этой команды может пройти некоторое время, в течение которого некоторые серверные подключения будут направляться к старому месту назначения, а некоторые — к новому. Это имеет смысл при переключении трафика для чтения между репликами только для чтения или при переключении между узлами в конфигурации репликации с несколькими ведущими узлами. Если необходимо одновременно переключить все подключения, рекомендуется использовать PAUSE . Чтобы закрыть серверные подключения без ожидания (например, при аварийном переключении, а не при постепенном переключении), также рассмотрите KILL |
KILL <database_name> | Немедленно завершает все клиентские и серверные подключения к данной базе данных. Новые подключения клиентов к отключенной базе данных будут ожидать вызова RESUME |
KILL_CLIENT <id> | Немедленно разрывает указанное клиентское соединение вместе со всеми серверными соединениями для данного клиента. Клиент, соединение с которым необходимо «разорвать», определяется по значению id , которое можно получить с помощью команды SHOW CLIENTS |
SUSPEND | Очищает все буферы сокетов, и Pangolin Pooler перестает прослушивать данные в них. Команда не будет выполнена, пока все буферы не будут очищены. Используется во время «быстрой» перезагрузки Pangolin Pooler. Новые подключения клиентов к приостановленной базе данных будут ожидать вызова RESUME |
RESUME <database_name> | Восстанавливает работу после предыдущей команды KILL , PAUSE или SUSPEND |
SHUTDOWN | Завершает процесс Pangolin Pooler |
SHUTDOWN WAIT_FOR_SERVERS | Прекращает прием новых подключений и завершает работу после отключения всех серверов. Работает аналогично командам PAUSE и SHUTDOWN с той разницей, что в данном случае команда прекращает прием новых подключений в ожидании PAUSE , а также принудительно отключает клиентов, ожидающих подключения к серверу |
SHUTDOWN WAIT_FOR_CLIENTS | Прекращает принимать новые подключения и завершает процесс после того, как все существующие клиенты отключатся. Эту команду можно использовать для перезапуска двух процессов Pangolin Pooler с нулевым временем простоя по следующей процедуре: 1. Запустите два или более процессов Pangolin Pooler на одном и том же порту с помощью so_reuseport (рекомендуется настроить секцию [peers] ). Чтобы добиться нулевого времени простоя при перезапуске, перезапускайте эти процессы по очереди, оставляя остальные запущенными для приема соединений во время перезапуска одного из них. 2. Выберите процесс для перезапуска, например, с названием A . 3. Запустите SHUTDOWN WAIT_FOR_CLIENTS (или отправьте SIGTERM ) процессу A . 4. Реализуйте повторное подключение всех клиентов. Возможно, потребуется подождать некоторое время, пока пул на стороне клиента не вызовет повторное подключение в соответствии с server_idle_timeout (или аналогичной) конфигурацией. Или, если пул на стороне клиента не используется, потребуется перезапустить клиентов. Как только все клиенты повторно подключатся, процесс A завершится автоматически, так как к нему больше не будут подключаться клиенты. 5. Запустите процесс A снова. 6. Повторите шаги 3, 4 и 5 для каждого из оставшихся процессов, пока все процессы не будут перезапущены. |
RELOAD | Задает процессу Pangolin Pooler перезагрузку файлов конфигурации и обновление изменяемых параметров. Это касается основного файла конфигурации (pangolin-pooler.ini ), а также файлов, указанных в параметрах auth_file (userlist.txt ) и auth_hba_file Pangolin Pooler уведомит, что при перезагрузке файла конфигурации изменяются параметры подключения к базе данных. Существующее подключение к серверу по старому адресу будет закрыто при следующем освобождении подключения к серверу (в соответствии с режимом пула), а новые подключения к серверу сразу будут использовать обновленные параметры подключения |
WAIT_CLOSE | Ожидает, пока все серверные подключения к указанной базе данных или ко всем базам данных не выйдут из состояния close_needed (SHOW SERVERS ). Это можно сделать после RECONNECT или RELOAD , чтобы дождаться полной активации соответствующего изменения конфигурации, например, в сценариях переключения |
Другие команды
В таблице ниже приведены команды, не вошедшие в таблицу выше.
:
Команда | Описание |
SET <key = arg> | Изменяет параметр конфигурации (рассмотрите также команду
|
- admonition
:class: attention
Данная команда запускается в консоли администрирования и устанавливает настройки компонента. Команда
SET
, запущенная в другой базе данных, будет передана серверу СУБД как любая другая команда SQL. - :: ::::
Дополнительно реализованные команды
В таблице ниже приведены команды, которые были реализованы в процессе доработки компонента.
Команда | Описание |
RESET_AUTH | Сбрасывает сквозную аутентификацию пользователей в состояние по умолчанию. В качестве аргумента передается строка, содержащая параметры для выборки пользователей, для которых будет сброшен (приведен в состояние по умолчанию) контекст сквозной аутентификации. Параметры выборки пользователя передаются в формате: "[<user>[|<db>[|<addr>[|ssl]]]]" , где: - <user> – имя пользователя; - <db> – наименование базы данных; - <addr> – адрес хоста, с которого аутентифицировался пользователь; - ssl – признак того, что пользователь аутентифицировался по защищенному соединению; - * в качестве значения параметра выборки обозначает, что в выборку попадут пользователи с любым значением данного параметра. |
NDC_KEEPALIVE | Переходит в режим NDC_ALLOWED (если до этого он был в другом режиме) и возобновляет прием новых клиентских соединений, а также их обработку. При этом Pangolin Pooler сохраняет момент времени получения этой команды и использует его в дальнейшем при автоматическом переключении в режим приостановки приема клиентских соединений. |
NDC_SUSPEND | Прерывает все существующие соединения к базам данных, а также все клиентские соединения, кроме соединений с административной консолью (для обеспечения связи с базой pgbouncer ). Получив эту команду, Pangolin Pooler переходит в режим NDC_DISALLOWED и прекращает обработку входящих клиентских соединений. Поведение аналогично вызову команды KILL <database_name> для всех баз данных, с которыми были установлены соединения, за исключением того, что базы данных не переходят в режим выключения. |
Сигналы
В таблице ниже приведены команды, отвечающие за сигналы.
Команда | Описание |
SIGHUP | Перезагрузка конфигурации. Равнозначно выполнению команды RELOAD в консоли |
SIGTERM | Завершение работы только при отключении всех существующих клиентов, без приема новых подключений. Равнозначно выполнению команды SHUTDOWN WAIT_FOR_CLIENTS в консоли. Если этот сигнал получен во время завершения работы, то происходит немедленное завершение работы |
SIGINT | Безопасное завершение работы. Равнозначно выполнению командыSHUTDOWN WAIT_FOR_SERVERS в консоли. Если этот сигнал получен во время завершения работы, то вместо «безопасного завершения работы» запускается «немедленное завершение работы» |
SIGQUIT | Немедленное завершение работы. Равнозначно выполнению команды SHUTDOWN в консоли |
SIGUSR1 | Равнозначно выполнению команды PAUSE в консоли |
SIGUSR2 | Равнозначно выполнению команды RESUME в консоли |
Опции командной строки
Ниже приведено описание опций компонента при работе в командной строке.
-d
,--daemon
- Запуск в фоновом режиме. Без этого указания процесс будет выполняться на переднем плане.
В фоновом режиме требуется указание
pidfile
иlogfile
илиsyslog
. После перехода в фоновый режим сообщения журнала не будут записываться вstderr
.
-R
,--reboot
- Выполнение перезапуска в режиме онлайн. Это означает подключение к работающему процессу, загрузку открытых сокетов из него и последующее их использование. Если активного процесса нет, будет осуществлен запуск в обычном режиме.Внимание!
Опция устарела. Вместо этой опции используйте последовательный перезапуск с несколькими процессами, прослушивающими один и тот же порт с помощью
so_reuseport
.примечаниеРаботает только в том случае, если ОС поддерживает сокеты Unix и
unix_socket_dir
не отключена в конфигурации. Не работает с TLS-соединениями, они прерываются.
-u <username>
,--user=<username>
- Переключение на данного пользователя при запуске.
-v
,--verbose
- Увеличение детализации сообщений. Может использоваться несколько раз.
-q
,--quiet
- Не выводить сообщения в
stderr
. Это не влияет на уровень детализации сообщений, ноstderr
использовать нельзя. Для использования в скриптахinit.d
.
-V
,--version
- Вывод версии.
-h
,--help
- Вывод краткой справки.
Сценарии использования
Доступ в БД через Pangolin Pooler
-
Подключитесь в psql консоль пользователем postgres через Pangolin Pooler:
$ psql -p 6544
Результат: Вход успешный.
-
Зайдите в консоль администрирования Pooler и проверьте количество подключенных к базе пользователей:
$ psql -p 6544 -U pgbouncer -d pgbouncer
SHOW CLIENTS;
Результат: Вернулся список пользователей, подключенных к базе данных через Pooler. Пример вывода:
-[ RECORD 4 ]-------+------------------------
type | C
user | postgres
database | postgres
state | active
addr | {IP-Address}
port | {port}
local_addr | {IP-Address}
local_port | {local_port}
connect_time | 2024-07-29 16:40:55 MSK
loged_in_time | 2024-07-29 17:05:30 MSK
request_time | 2024-07-29 16:55:41 MSK
wait | 0
wait_us | 0
loged_in | 0
loged_in_us | 0
close_needed | 0
ptr | 0x259cf70
link |
remote_pid | 0
tls |
application_name | psql
prepared_statements | 0
Вывод версии компонента
Для вывода версии компонента Pangolin Pooler, а также ядра компонента (PgBouncer) выполните команду:
pangolin-pooler -V
Пример вывода:
Pangolin Pooler 1.5.0
PgBouncer 1.24.0
libevent 2.1.8-stable
adns: evdns2
tls: OpenSSL 1.1.1k FIPS 25 Mar 2021
authproxy: yes
2fa: yes
Проверка работы двухфакторной аутентификации при подключении к Pangolin через Pangolin Pooler
-
Настройте двухфакторную аутентификацию для реализации подключения к СУБД через Pangolin Pooler с включенной или выключенной сквозной аутентификацией.
-
Создайте пользователя и задайте ему пароль:
postgres=#CREATE ROLE test_user;
CREATE ROLE
postgres=#ALTER user test_user WITH LOGIN;
ALTER ROLE
postgres=#ALTER user test_user WITH PASSWORD '<password>';
ALTER ROLE -
Подключитесь к Pangolin, выполните команду:
psql 'host=clustername port=5433 user=user1 sslmode=verify-ca sslcert=client-user1.crt sslkey=client-user1.key sslrootcert=root.crt'
Введите на запрос пароля корректный пароль. В случае успеха psql перейдет в режим ожидания ввода запросов:
Password for user test_user:
Ожидаемый результат:
psql (17.5)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=> -
Проверьте, что выполняется запрос к БД, например:
test_user@postgres=# SELECT now();
+-------------------------------+
| now |
+-------------------------------+
| 2025-06-27 17:18:22.813347+03 |
+-------------------------------+
(1 row)
Сброс контекста сквозной аутентификация
Пример работы команды сброса состояния аутентификация для всех пользователей:
-
Выполните запрос списка пользователей:
PGPASSWORD='<password3>' psql -p 6544 -d pgbouncer -U pgbouncer -c "SHOW AUTHUSERS"
Ожидаемый результат: Запрос выполнен успешно. Все значения колонки
auth_state
равныdone
. Пример вывода:name | addr | port | database | pool_mode | tls | auth_state
------+--------------+-------+----------+-----------+-----+------------
u1 | <IP-Address> | 44246 | d1 | | yes | done
u1 | <IP-Address> | 44260 | d2 | | yes | done
u2 | <IP-Address> | 43228 | d2 | | yes | done
(3 rows) -
Выполните сброс состояния аутентификация для всех пользователей:
PGPASSWORD='<password3>' psql -p 6544 -d pgbouncer -U pgbouncer -c "RESET_AUTH"
Результат: Запрос выполнен успешно:
RESET_AUTH
-
Повторно выполните запрос списка пользователей:
PGPASSWORD='<password3>' psql -p 6544 -d pgbouncer -U pgbouncer -c "SHOW AUTHUSERS"
Ожидаемый результат: Запрос выполнен успешно. Все значения колонки
auth_state
равныnone
. Пример вывода:name | addr | port | database | pool_mode | tls | auth_state
------+--------------+-------+----------+-----------+-----+------------
u1 | <IP-Address> | 44246 | d1 | | yes | none
u1 | <IP-Address> | 44260 | d2 | | yes | none
u2 | <IP-Address> | 43228 | d2 | | yes | none
(3 rows)
Исправление попытки неудачной аутентификации
-
Выполните подключение к БД:
psql "host=<IP-Address> port=<port> user=testuser dbname=testdb sslmode=require"
-
Аутентификация завершена ошибкой:
psql: error: FATAL
-
Проверьте лог-файл Pangolin Pooler на наличие записи типа:
2025-07-18 14:31:02.104 MSK [2102] FATAL testdb/testuser@<IP-Address>:<port> PgBouncer does not allow to use weak authentication type: "trust"
-
Исправьте метод аутентификации в
pg_hba
на стороне СУБД, заменивtrust
на безопасный метод, напримерscram-sha-256
:# Было:
host all all <IP-Address>/32 trust
# Стало:
host all all <IP-Address>/32 scram-sha-256 -
Перечитайте конфигурацию:
sudo systemctl reload postgresql
-
Повторите попытку подключения:
psql "host=<IP-Address> port=<port> user=testuser dbname=testdb sslmode=require"
-
Успешная аутентификация подтверждается сообщениями в логе:
2025-07-18 14:34:44.412 MSK AUDIT testdb/testuser@<IP-Address>:<port> login attempt tls=yes
2025-07-18 14:34:44.416 MSK AUDIT testdb/testuser@<IP-Address>:<port> send auth startup packet
2025-07-18 14:34:44.491 MSK AUDIT testdb/testuser@<IP-Address>:<port> auth server login ok
Определение клиентского IP адреса, подключенного к СУБД через Pangolin Pooler
Вне зависимости от использования сквозной аутентификации, определить клиентский IP-адрес можно следующим образом:
-
Выполните запрос для поиска целевого подключения и его параметров. Пример:
postgres=# SELECT * FROM pg_stat_activity WHERE datname = 'tst1'\gx
-[ RECORD 1 ]----+-------------------------------------------------------------------
datid | 16734
datname | tst1
pid | 2366
usesysid | 10
usename | postgres
application_name | pgAdmin 4 - CONN:9435271
client_addr |
client_hostname |
client_port |
backend_start | 2023-11-13 11:57:06.347595+03
xact_start | 2023-11-13 11:57:58.16217+03
query_start | 2023-11-13 11:57:58.16217+03
state_change | 2023-11-13 11:57:58.162323+03
wait_event_type | Client
wait_event | ClientRead
state | idle in transaction
query | begin;
| select 1;
backend_type | client backendЗначения
pid
иclient_port
будут использоваться далее:pid = 2366
,client_port = 54406
. -
Подключитесь к административной БД
pgbouncer
:$ psql -p 6544 -U pgbouncer -d pgbouncer
-
Выполните команду
SHOW SERVERS
и по значениямremote_pid
иlocal_port
найдите нужную запись:pgbouncer=# SHOW SERVERS\gx
-[ RECORD 3 ]-+------------------------
type | S
user | postgres
database | tst1
state | active
addr | <IP-Address>
port | <port>
local_addr | <IP-Address>
local_port | <port>
connect_time | 2023-11-13 11:57:06 MSK
loged_in_time | 2023-11-13 11:57:06 MSK
request_time | 2023-11-13 11:57:58 MSK
remote_pid | 2366
link | 0x179d6b0Значение
link
равное0x179d6b0
потребуется на следующем шаге. -
Выполните
SHOW CLIENTS
и найдите запись, гдеptr
совпадает сlink
из предыдущего шага:pgbouncer=# SHOW CLIENTS\gx
-[ RECORD 3 ]-+------------------------
type | C
user | postgres
database | tst1
state | active
addr | <IP-Address_client>
port | <port>
local_addr | <IP-Address>
local_port | <port>
connect_time | 2023-11-13 11:57:28 MSK
loged_in_time | 2023-11-13 13:30:22 MSK
request_time | 2023-11-13 11:57:58 MSK
ptr | 0x179d6b0В поле
addr
указано значение IP-адреса клиента, а вport
— клиентский порт подключения кpgbouncer
. -
Дополнительно можно включить расширенное логирование, чтобы видеть IP-адрес клиента и его порт в логах. Для этого в конфигурационный файл
pangolin-pooler.ini
добавьте параметрlog_audit
в значении1
:log_audit = 1