Replicação em fluxo e WAL
Configure a replicação física em fluxo baseada em WAL, monitore o atraso e configure réplicas síncronas para escritas sem perda de dados.
Replicação em fluxo e WAL é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 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 replicar?
A replicação atende a vários objetivos ao mesmo tempo:
- HA — sobreviver à falha do primário
- Escalonamento de leitura — transferir consultas de leitura para as réplicas
- Backup / PITR — arquivamento contínuo
- Distribuição geográfica — réplicas próximas dos usuários
WAL: registro de escrita antecipada
Cada escrita vai primeiro para o WAL. O WAL garante a durabilidade e é a base da replicação: transmitir o WAL para uma réplica → a réplica reproduz o WAL → a réplica fica atualizada.
Replicação física por fluxo
Fluxo de WAL byte a byte do primário para a réplica:
- A réplica é uma cópia binária do primário
- Mesma versão do PostgreSQL
- Cluster inteiro replicado (todos os bancos de dados e todas as tabelas)
- Somente leitura
Configuração: primário
Configure o primário em postgresql.conf:
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
-- pg_hba.conf: allow replication connections
host replication replicator 10.0.0.0/24 md5Configuração: réplica
Crie o backup base e inicie com primary_conninfo:
pg_basebackup -h primary -D /var/lib/postgresql/data -U replicator -W -X stream -P
-- postgresql.conf on replica:
primary_conninfo = 'host=primary port=5432 user=replicator password=...'
-- Touch standby.signal file and start:
touch /var/lib/postgresql/data/standby.signalSíncrona versus assíncrona
- Assíncrona (padrão) — o primário confirma a transação sem esperar; a réplica pode ficar atrasada
- Síncrona — o primário espera a confirmação da réplica antes de COMMIT; não há perda de dados, mas a operação é mais lenta
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'Atraso da replicação
As réplicas assíncronas ficam atrás do primário. Monitore:
SELECT client_addr, state, sent_lsn, write_lsn, replay_lsn,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS replay_lag_bytes
FROM pg_stat_replication;Slots de replicação
Os slots garantem que o primário retenha o WAL até que a réplica o tenha consumido:
SELECT pg_create_physical_replication_slot('replica1');
-- On replica:
primary_slot_name = 'replica1'Armadilha dos slots
Se uma réplica se desconectar e nunca voltar a se conectar, o slot impedirá a limpeza do WAL — o disco ficará cheio. Exclua os slots não utilizados:
SELECT pg_drop_replication_slot('replica1');Réplicas em cascata
Uma réplica também pode transmitir o WAL para outras réplicas — reduzindo a carga no primário.
Standby de leitura
Por padrão, as réplicas aceitam consultas somente de leitura (hot_standby = on). Consultas de leitura longas na réplica podem atrasar a reprodução do WAL; ajuste max_standby_streaming_delay.
Promoção
Para transformar uma réplica no novo primário:
pg_ctl promote -D /var/lib/postgresql/data
-- Or in SQL:
SELECT pg_promote();Recapitulação
Replicação por fluxo = envio e reprodução do WAL.
- Física e idêntica em nível binário
- Assíncrona por padrão; síncrona para não perder dados
- Os slots retêm o WAL, mas exigem cuidado
- A promoção transforma uma réplica em primário
Verificação rápida
Qual é o principal risco de NÃO usar um slot de replicação para uma réplica por fluxo?
Perguntas Frequentes
A aula “Replicação em fluxo e WAL” é grátis?
Sim — o texto completo de “Replicação em fluxo e WAL” é 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 “Replicação em fluxo e WAL”?
Configure a replicação física em fluxo baseada em WAL, monitore o atraso e configure réplicas síncronas para escritas sem perda de 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 1 de 4.
Quanto tempo leva a aula “Replicação em fluxo e WAL”?
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
- Replicação em fluxo e WAL
- Replicação lógica para fragmentação
- Failover e eleição do líder (Patroni, Stolon)
- Réplicas de leitura e roteamento de conexões