0Pricing
SQL Academy · Aula

Réplicas de leitura e roteamento de conexões

Direcione o tráfego somente de leitura para réplicas com PgBouncer ou um driver inteligente e aceite o compromisso da defasagem dos dados.

Réplicas de leitura e roteamento de conexões é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Por que usar réplicas de leitura?

Cargas de trabalho com muitas leituras podem transferir as consultas de leitura para as réplicas:

  • O primário lida com as escritas
  • As réplicas lidam com a maior parte das leituras
  • Escalonamento horizontal de leitura sem fragmentação

Ressalva da consistência eventual

As réplicas ficam atrás do primário. Um usuário que acabou de fazer um pedido talvez ainda não o veja na réplica. Nesse caso:

  • Direcione as leituras posteriores às escritas para o primário
  • Aguarde a réplica alcançar o primário
  • Armazene em cache o estado após a escrita na aplicação

Estratégias de roteamento

  1. Roteamento no nível da aplicação — o código da aplicação escolhe entre primário e réplica
  2. Roteamento no nível do controlador — JDBC, pgjdbc e pgxpool mantêm um conjunto de conexões com consciência de primário e réplica
  3. Roteamento no nível do proxy — pgpool, pgbouncer e HAProxy detectam leituras e escritas

Roteamento da aplicação

Dois conjuntos de conexões, um para cada função:

const primary = new Pool({ host: 'primary', ... });
const replica = new Pool({ host: 'replica', ... });

// reads go to replica:
await replica.query('SELECT ...');

// writes (and read-your-writes) go to primary:
await primary.query('INSERT ...');

PgPool-II

Proxy que analisa SQL e encaminha SELECT para réplicas e gravações para primary. Oferece balanceamento de carga e gerenciamento de conexões:

# pgpool.conf
backend_hostname0 = 'primary'
backend_hostname1 = 'replica1'
load_balance_mode = on

HAProxy com verificações pg_isready

O HAProxy não entende SQL, mas pode encaminhar por porta — uma interface de entrada para gravações (para primary) e outra para leituras (para réplicas, com verificações de integridade):

frontend writes
  bind *:5432
  default_backend primary_pool

frontend reads
  bind *:5433
  default_backend replicas_pool
  balance roundrobin

Endpoints do AWS RDS

O RDS oferece um endpoint único para gravação e um endpoint para leitura que distribui a carga entre todas as réplicas — a opção mais simples na nuvem.

Considerações sobre o atraso da replicação

Acompanhe o atraso e evite encaminhar para réplicas que estejam muito defasadas:

-- On primary:
SELECT client_addr, replay_lag FROM pg_stat_replication;

-- HAProxy / pgpool can use a custom health check that fails if replay_lag > threshold.

Padrão de sessão persistente

Para "ler as próprias gravações": fixe a sessão do usuário em primary por N segundos após uma gravação. Ou registre o LSN da gravação e aguarde a reprodução na réplica antes de responder.

Espera baseada em LSN

Depois de uma gravação, capture o LSN; antes de ler em uma réplica, aguarde até que ela tenha reproduzido o conteúdo até esse LSN:

-- After write on primary:
SELECT pg_current_wal_lsn();        -- save this

-- Before read on replica:
SELECT pg_last_wal_replay_lsn() >= $saved_lsn;
-- spin or wait until true

Cache como réplica

Às vezes, Redis / Memcache funciona como uma "réplica" para escalar as leituras — é muito mais rápido do que outra instância do PostgreSQL para chaves muito acessadas.

Quando NÃO usar réplicas

Se sua carga de trabalho for intensa em gravações, as réplicas geralmente apenas aumentam o custo, sem oferecer mais velocidade. Se as leituras já forem rápidas em primary, talvez você não precise delas.

Recuperação de desastres versus escalabilidade de leitura

As réplicas de failover de HA têm uma finalidade diferente das réplicas usadas para escalar leituras. Frequentemente, você terá os dois tipos.

Recapitulação

As réplicas de leitura escalam as leituras, mas acumulam atraso.

  • Roteamento pela aplicação, pelo driver ou pelo proxy
  • Atraso da replicação = consistência eventual
  • Fixação em primary ou espera pelo LSN para ler as próprias gravações
  • Monitore o atraso e volte para primary se ele ficar grande demais

Verificação rápida

Um usuário publica um comentário e atualiza a página imediatamente. A página lê de uma réplica e não mostra o comentário. Qual é o problema e uma possível solução?

Perguntas Frequentes

A aula “Réplicas de leitura e roteamento de conexões” é grátis?

Sim — o texto completo de “Réplicas de leitura e roteamento de conexões” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Réplicas de leitura e roteamento de conexões”?

Direcione o tráfego somente de leitura para réplicas com PgBouncer ou um driver inteligente e aceite o compromisso da defasagem dos dados. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Réplicas de leitura e roteamento de conexões”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Replicação em fluxo e WAL
  2. Replicação lógica para fragmentação
  3. Failover e eleição do líder (Patroni, Stolon)
  4. Réplicas de leitura e roteamento de conexões
← Voltar para SQL Academy