DBAtlas · Atlas de operações de banco de dados

Pool de conexões com PgBouncer

PostgreSQLNível: IntermediárioDuração: 30–45 min

Instalação do PgBouncer a partir do repositório PGDG: modo de pool transaction ou session, autenticação scram-sha-256 via auth_query (função SECURITY DEFINER) ou userlist.txt, tamanhos de pool calculados a partir do max_connections e do número de CPUs do banco, systemd e, opcionalmente, vários processos com so_reuseport. Termina com o console de administração (SHOW POOLS/STATS), a string de conexão da aplicação e um checklist de compatibilidade com o modo transaction.

Quando usar: as aplicações abrem centenas ou milhares de conexões, aparece sorry, too many clients already ou abrir conexões é caro. O PgBouncer não é solução de HA nem de backup: para failover é preciso streaming replication ou Patroni; para backup, pgBackRest.

Topologia: PgBouncer no servidor do banco ou em servidor separado; com Patroni, na frente do HAProxy/VIP

Antes de começar

  • O PostgreSQL está instalado com o guia pg-install e em execução; o banco … e o usuário … (com senha scram-sha-256) existem.
  • PostgreSQL: …o cluster Patroni (pg-patroni) está em execução e … é o Leader no momento…o primary (pg-streaming) está em execução…instalado com o guia pg-install e em execução…; o banco … e o usuário … (com senha scram-sha-256) existem.
  • O cluster Patroni … está saudável: um Leader, réplicas em streaming; a porta de escrita do HAProxy (…:…) encaminha só para o leader.
  • A senha do usuário da aplicação está armazenada como SCRAM-SHA-256 (usuários com hashes md5 antigos precisam ter a senha redefinida com password_encryption = scram-sha-256).
  • Os valores de max_connections (…) e CPU (…) do formulário são iguais aos valores reais do servidor do banco (os tamanhos de pool são calculados a partir deles).
  • O servidor PgBouncer alcança o banco (…HAProxy/VIP ……:…); os servidores de aplicação alcançam o PgBouncer (…:…).
  • A porta … está livre.
  • O modo de pool foi combinado com a equipe da aplicação: no modo transaction, recursos que dependem de estado de sessão (checklist abaixo) não são usados.
  • Há acesso scp (root ou usuário com sudo) para copiar os hashes de senha do servidor do banco para o servidor PgBouncer, ou você vai levar o arquivo por outro meio seguro.

Fases do guia

  • Instalação do PgBouncer — Adicionar o repositório PGDG · Adicionar o repositório PGDG · Instalar o PgBouncer
  • Lado do banco — Verificar o papel: este servidor é o …Leader…primary…? · Criar os usuários de administração e de autenticação · Criar os usuários de administração e de autenticação · Definir as senhas · Definir as senhas · Adicionar o servidor PgBouncer ao pg_hba.conf …
  • Configuração do PgBouncer — Adicionar a senha do auth_user · Escrever o pgbouncer.ini · Definir o limite de descritores de arquivo · Iniciar o PgBouncer
  • Vários processos (so_reuseport) — Arquivos de configuração por processo · Serviço template do systemd · Parar o serviço de processo único e iniciar os processos
  • Verificação — Conectar com o usuário da aplicação · Verificar que as conexões chegam ao leader · Verificar o console de administração · Abrir a porta do PgBouncer no firewall
  • Lado da aplicação e pós-instalação — String de conexão da aplicação · Checklist de compatibilidade do modo transaction · Monitorar o pool · Alteração de configurações e reload
Abrir o plano passo a passo para o seu ambiente →