{"id":2644,"date":"2026-09-02T17:59:10","date_gmt":"2026-09-02T20:59:10","guid":{"rendered":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/"},"modified":"2026-09-02T17:59:10","modified_gmt":"2026-09-02T20:59:10","slug":"aula-22-replicacao-streaming-replication-e-logical-replicati","status":"publish","type":"post","link":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/","title":{"rendered":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication"},"content":{"rendered":"<p>Bem-vindo \u00e0 Aula 22 do curso <strong>PostgreSQL \u2014 Do Zero ao Avan\u00e7ado<\/strong>. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a <strong>Replica\u00e7\u00e3o<\/strong>. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a <strong>Streaming Replication<\/strong>, que opera no n\u00edvel f\u00edsico, e a <strong>Logical Replication<\/strong>, que opera no n\u00edvel l\u00f3gico \u2014 entendendo exatamente quando, por que e como usar cada uma. Esta aula \u00e9 densa, pr\u00e1tica e pensada para quem j\u00e1 domina os fundamentos de administra\u00e7\u00e3o, instala\u00e7\u00e3o, backup e recupera\u00e7\u00e3o vistos nas aulas anteriores. Se voc\u00ea seguiu o curso at\u00e9 aqui, j\u00e1 tem a base necess\u00e1ria para transformar um \u00fanico servidor PostgreSQL em uma arquitetura distribu\u00edda, tolerante a falhas e com alta disponibilidade.<\/p>\n<p>A <strong>Replica\u00e7\u00e3o<\/strong> n\u00e3o \u00e9 um luxo em infraestrutura moderna: \u00e9 uma necessidade. Em nossos projetos na JRT Technology Solutions, observamos diariamente cen\u00e1rios em que uma falha de disco, um pico inesperado de carga ou uma manuten\u00e7\u00e3o mal planejada colocam em risco a continuidade de servi\u00e7os cr\u00edticos. Ter uma r\u00e9plica quente (hot standby) ou uma r\u00e9plica l\u00f3gica parcial permite realizar failover, balancear consultas de leitura, migrar dados entre vers\u00f5es e at\u00e9 consolidar bancos de dados diferentes \u2014 tudo com impacto m\u00ednimo para os usu\u00e1rios finais. Nesta aula, voc\u00ea vai entender os mecanismos internos que tornam isso poss\u00edvel: o <strong>WAL (Write-Ahead Log)<\/strong>, os <strong>replication slots<\/strong>, o protocolo de streaming e os conceitos de <strong>publication<\/strong> e <strong>subscription<\/strong>.<\/p>\n<p>O que torna esta aula especialmente poderosa \u00e9 o formato totalmente <em>hands-on<\/em>. Em vez de apenas explicar a teoria, vamos construir do zero um ambiente com dois servidores \u2014 um prim\u00e1rio e um standby \u2014 utilizando <strong>Ubuntu\/Debian<\/strong> e <strong>CentOS\/RHEL\/Rocky Linux<\/strong>. Voc\u00ea ver\u00e1 o conte\u00fado completo dos arquivos de configura\u00e7\u00e3o, os comandos exatos de execu\u00e7\u00e3o e as sa\u00eddas esperadas no terminal. Cada passo foi testado e validado por nossos especialistas em ambientes reais de produ\u00e7\u00e3o, ent\u00e3o voc\u00ea pode reproduzir com seguran\u00e7a na sua infraestrutura, seja em m\u00e1quinas virtuais locais, containers ou servidores na nuvem.<\/p>\n<p>Ao concluir a aula, voc\u00ea ter\u00e1 montado com as pr\u00f3prias m\u00e3os uma arquitetura de replica\u00e7\u00e3o f\u00edsica de alta disponibilidade com failover manual, al\u00e9m de um ambiente de replica\u00e7\u00e3o l\u00f3gica para replicar somente as tabelas que interessam a um assinante. Tamb\u00e9m saber\u00e1 monitorar a sa\u00fade da replica\u00e7\u00e3o, diagnosticar os erros mais comuns e aplicar boas pr\u00e1ticas que evitam quebras silenciosas \u2014 aquele tipo de falha que s\u00f3 aparece quando mais se precisa do standby. Prepare seu terminal favorito, suba duas m\u00e1quinas virtuais e vamos come\u00e7ar.<\/p>\n<h3>O que voc\u00ea vai aprender nesta aula<\/h3>\n<ul>\n<li>Compreender a diferen\u00e7a fundamental entre <strong>Streaming Replication<\/strong> (f\u00edsica) e <strong>Logical Replication<\/strong> (l\u00f3gica), incluindo casos de uso, vantagens e limita\u00e7\u00f5es de cada abordagem.<\/li>\n<li>Configurar um servidor prim\u00e1rio PostgreSQL no <strong>Ubuntu\/Debian<\/strong> e no <strong>CentOS\/RHEL\/Rocky Linux<\/strong>, preparando os par\u00e2metros essenciais de <strong>wal_level<\/strong>, <strong>max_wal_senders<\/strong>, <strong>hot_standby<\/strong> e <strong>listen_addresses<\/strong>.<\/li>\n<li>Criar um <strong>replication slot<\/strong> f\u00edsico e entender por que ele protege contra a remo\u00e7\u00e3o prematura de segmentos WAL ainda n\u00e3o enviados \u00e0 r\u00e9plica.<\/li>\n<li>Provisionar um servidor standby completo usando o <strong>pg_basebackup<\/strong>, com o arquivo <strong>standby.signal<\/strong> e as configura\u00e7\u00f5es de <strong>primary_conninfo<\/strong> corretas para PostgreSQL 12 ou superior.<\/li>\n<li>Verificar o estado da replica\u00e7\u00e3o f\u00edsica consultando <strong>pg_stat_replication<\/strong>, interpretando colunas como <strong>state<\/strong>, <strong>sync_state<\/strong>, <strong>write_lag<\/strong> e <strong>replay_lag<\/strong>.<\/li>\n<li>Implementar replica\u00e7\u00e3o l\u00f3gica criando <strong>PUBLICATION<\/strong> no servidor de origem e <strong>SUBSCRIPTION<\/strong> no servidor de destino, incluindo a sincroniza\u00e7\u00e3o inicial de dados.<\/li>\n<li>Monitorar a replica\u00e7\u00e3o l\u00f3gica atrav\u00e9s de <strong>pg_stat_subscription<\/strong>, <strong>pg_publication_tables<\/strong> e outras vis\u00f5es de cat\u00e1logo do sistema.<\/li>\n<li>Diagnosticar e resolver os erros mais comuns em ambientes de replica\u00e7\u00e3o, como falhas de autentica\u00e7\u00e3o, atraso de replica\u00e7\u00e3o, perda de segmentos WAL e inconsist\u00eancias de sincroniza\u00e7\u00e3o inicial.<\/li>\n<\/ul>\n<h3>Pr\u00e9-requisitos e Ambiente<\/h3>\n<p>Antes de iniciar os procedimentos desta aula, \u00e9 essencial que seu ambiente esteja devidamente preparado. Voc\u00ea precisar\u00e1 de dois servidores (ou duas m\u00e1quinas virtuais) com o mesmo sistema operacional preferencialmente, embora seja poss\u00edvel replicar entre sistemas diferentes na replica\u00e7\u00e3o <strong>l\u00f3gica<\/strong>. Recomendamos usar, no m\u00ednimo, 2 GB de RAM e 10 GB de disco em cada m\u00e1quina para um laborat\u00f3rio confort\u00e1vel. As vers\u00f5es do PostgreSQL devem ser a mesma na replica\u00e7\u00e3o f\u00edsica, enquanto a replica\u00e7\u00e3o l\u00f3gica tem mais flexibilidade e permite replicar entre vers\u00f5es diferentes, desde que sejam suportadas.<\/p>\n<p>Os pr\u00e9-requisitos t\u00e9cnicos incluem: PostgreSQL 16 instalado e funcional em ambos os servidores (as aulas anteriores do curso cobrem a instala\u00e7\u00e3o em <strong>Ubuntu\/Debian<\/strong> e <strong>CentOS\/RHEL\/Rocky Linux<\/strong>); acesso de superusu\u00e1rio (<strong>root<\/strong> ou <strong>sudo<\/strong>) em ambas as m\u00e1quinas; conectividade de rede entre os servidores na porta <strong>5432<\/strong> (TCP), sem bloqueio por firewall ou grupos de seguran\u00e7a; e, naturalmente, um banco de dados de exemplo com algumas tabelas e dados para testar a replica\u00e7\u00e3o l\u00f3gica.<\/p>\n<p>Utilizaremos os seguintes endere\u00e7os IP como refer\u00eancia ao longo da aula \u2014 adapte conforme sua rede real: servidor prim\u00e1rio (origem): <strong>192.168.1.10<\/strong>; servidor standby\/assinante (destino): <strong>192.168.1.20<\/strong>. O diret\u00f3rio de dados no Debian\/Ubuntu ser\u00e1 <strong>\/var\/lib\/postgresql\/16\/main<\/strong> e nos sistemas RHEL\/CentOS\/Rocky ser\u00e1 <strong>\/var\/lib\/pgsql\/16\/data<\/strong>. O diret\u00f3rio de configura\u00e7\u00e3o correspondente ser\u00e1 <strong>\/etc\/postgresql\/16\/main<\/strong> (Debian\/Ubuntu) e <strong>\/var\/lib\/pgsql\/16\/data<\/strong> (RHEL\/CentOS\/Rocky). Os comandos de servi\u00e7o tamb\u00e9m variam: <strong>systemctl restart postgresql<\/strong> em Debian\/Ubuntu e <strong>systemctl restart postgresql-16<\/strong> em RHEL\/CentOS\/Rocky.<\/p>\n<p>Por fim, certifique-se de que o utilit\u00e1rio <strong>psql<\/strong> est\u00e1 no PATH do usu\u00e1rio <strong>postgres<\/strong> e que voc\u00ea sabe conectar-se localmente a ambos os bancos. Se houver d\u00favidas sobre esses fundamentos, revise as aulas anteriores, principalmente as que cobrem instala\u00e7\u00e3o, configura\u00e7\u00e3o inicial e administra\u00e7\u00e3o b\u00e1sica. Em projetos reais na JRT Technology Solutions, sempre recomendamos tamb\u00e9m a cria\u00e7\u00e3o de snapshots das m\u00e1quinas virtuais antes de iniciar configura\u00e7\u00f5es de replica\u00e7\u00e3o, permitindo um rollback r\u00e1pido caso algo saia do planejado durante o aprendizado.<\/p>\n<h3>Fundamentos Te\u00f3ricos: Como a Streaming Replication Funciona<\/h3>\n<p>A <strong>Streaming Replication<\/strong>, tamb\u00e9m chamada de replica\u00e7\u00e3o f\u00edsica, \u00e9 o mecanismo nativo do PostgreSQL para criar c\u00f3pias exatas de um servidor prim\u00e1rio em servidores secund\u00e1rios chamados <strong>standby servers<\/strong>. O princ\u00edpio central \u00e9 simples: todo registro de modifica\u00e7\u00e3o no banco de dados \u00e9 gravado primeiramente no <strong>WAL (Write-Ahead Log)<\/strong>, um conjunto de arquivos bin\u00e1rios (segmentos) que registram cada altera\u00e7\u00e3o antes que ela seja efetivada nos arquivos de dados. Esse WAL n\u00e3o serve apenas para garantir a durabilidade e permitir recupera\u00e7\u00e3o ap\u00f3s falhas \u2014 ele tamb\u00e9m \u00e9 a fonte de dados enviada continuamente do prim\u00e1rio para as r\u00e9plicas.<\/p>\n<p>Quando uma r\u00e9plica est\u00e1 conectada ao prim\u00e1rio, o prim\u00e1rio envia os segmentos WAL gerados em tempo real atrav\u00e9s de um processo chamado <strong>walsender<\/strong>. Do lado da r\u00e9plica, o processo <strong>walreceiver<\/strong> recebe esses dados e os aplica em seu pr\u00f3prio diret\u00f3rio de dados, mantendo uma c\u00f3pia byte a byte id\u00eantica ao prim\u00e1rio. Esse fluxo cont\u00ednuo de dados WAL pela rede \u00e9 o que chamamos de <strong>streaming<\/strong>. Importante destacar que a r\u00e9plica n\u00e3o executa SQL nem interpreta comandos \u2014 ela simplesmente reproduz as altera\u00e7\u00f5es f\u00edsicas registradas no WAL. Por isso, a replica\u00e7\u00e3o f\u00edsica exige que prim\u00e1rio e r\u00e9plica tenham a mesma arquitetura de hardware (ou compat\u00edvel) e a mesma vers\u00e3o principal do PostgreSQL.<\/p>\n<p>Existem dois modos principais de replica\u00e7\u00e3o f\u00edsica: <strong>ass\u00edncrona<\/strong> e <strong>s\u00edncrona<\/strong>. No modo ass\u00edncrono, o prim\u00e1rio confirma uma transa\u00e7\u00e3o para o cliente assim que ela \u00e9 gravada localmente, sem aguardar a confirma\u00e7\u00e3o da r\u00e9plica. Isso oferece lat\u00eancia m\u00ednima, mas em caso de falha catastr\u00f3fica do prim\u00e1rio, as \u00faltimas transa\u00e7\u00f5es podem n\u00e3o estar presentes na r\u00e9plica. No modo s\u00edncrono, configurado via <strong>synchronous_commit<\/strong> e <strong>synchronous_standby_names<\/strong>, o prim\u00e1rio aguarda a confirma\u00e7\u00e3o da r\u00e9plica designada antes de retornar sucesso ao cliente, garantindo zero perda de dados \u2014 ao custo de maior lat\u00eancia. Em nossos projetos na JRT Technology Solutions, a escolha entre os modos \u00e9 uma decis\u00e3o de neg\u00f3cio: sistemas financeiros tendem a exigir s\u00edncrono, enquanto sistemas de an\u00e1lise toleram ass\u00edncrono.<\/p>\n<p>Um conceito indispens\u00e1vel para entender a replica\u00e7\u00e3o f\u00edsica \u00e9 o <strong>replication slot<\/strong>. Em condi\u00e7\u00f5es normais, o PostgreSQL pode remover automaticamente segmentos WAL antigos quando n\u00e3o s\u00e3o mais necess\u00e1rios para recupera\u00e7\u00e3o. Se uma r\u00e9plica estiver offline por um per\u00edodo prolongado e o prim\u00e1rio remover segmentos que a r\u00e9plica ainda n\u00e3o recebeu, a replica\u00e7\u00e3o quebra irreversivelmente. O slot \u00e9 uma marca\u00e7\u00e3o no prim\u00e1rio que impede a remo\u00e7\u00e3o de WAL at\u00e9 que a r\u00e9plica confirmada tenha consumido os dados, garantindo que o fluxo possa ser retomado mesmo ap\u00f3s quedas prolongadas. A contrapartida \u00e9 que um slot sem consumidor ativo faz o diret\u00f3rio de WAL crescer indefinidamente, podendo esgotar o disco \u2014 um ponto cr\u00edtico de monitoramento.<\/p>\n<p>Finalmente, uma r\u00e9plica f\u00edsica pode operar em modo <strong>hot standby<\/strong>, que permite consultas de leitura (SELECT) enquanto a replica\u00e7\u00e3o est\u00e1 ativa. Isso habilita cen\u00e1rios de balanceamento de carga de leitura, onde aplica\u00e7\u00f5es enviam consultas pesadas para a r\u00e9plica e mant\u00eam escritas no prim\u00e1rio. Entretanto, a r\u00e9plica n\u00e3o aceita opera\u00e7\u00f5es de escrita. Para usar o hot standby, voc\u00ea precisa configurar <strong>hot_standby = on<\/strong> e, naturalmente, permitir conex\u00f5es de leitura na r\u00e9plica.<\/p>\n<h3>Fundamentos Te\u00f3ricos: Como a Logical Replication Funciona<\/h3>\n<p>A <strong>Logical Replication<\/strong>, ou replica\u00e7\u00e3o l\u00f3gica, \u00e9 uma abordagem radicalmente diferente da streaming replication. Em vez de copiar bytes do WAL f\u00edsico, a replica\u00e7\u00e3o l\u00f3gica extrai as altera\u00e7\u00f5es de dados em um formato estruturado e l\u00f3gico \u2014 essencialmente, as opera\u00e7\u00f5es de <strong>INSERT<\/strong>, <strong>UPDATE<\/strong>, <strong>DELETE<\/strong> e <strong>TRUNCATE<\/strong> sobre tabelas espec\u00edficas \u2014 e as envia para um servidor assinante. Isso permite replicar apenas um subconjunto de tabelas, replicar entre bancos com esquemas diferentes, e at\u00e9 entre vers\u00f5es diferentes do PostgreSQL, desde que a vers\u00e3o do assinante seja igual ou superior \u00e0 do publicador (com regras de compatibilidade entre vers\u00f5es principais).<\/p>\n<p>O modelo de replica\u00e7\u00e3o l\u00f3gica \u00e9 baseado em dois conceitos: <strong>publication<\/strong> (publica\u00e7\u00e3o) e <strong>subscription<\/strong> (assinatura). No servidor de origem, voc\u00ea cria uma publica\u00e7\u00e3o \u2014 um objeto que define quais tabelas (ou todas as tabelas de um banco) ter\u00e3o suas altera\u00e7\u00f5es replicadas. No servidor de destino, voc\u00ea cria uma assinatura que aponta para a publica\u00e7\u00e3o do servidor de origem. Quando a assinatura \u00e9 criada, o PostgreSQL realiza automaticamente uma <strong>sincroniza\u00e7\u00e3o inicial<\/strong>: copia os dados existentes das tabelas publicadas para o assinante e, em seguida, passa a aplicar as altera\u00e7\u00f5es incrementais em tempo real. Essa sincroniza\u00e7\u00e3o inicial pode ser feita com o <strong>COPY<\/strong> padr\u00e3o ou com o m\u00e9todo <strong>pg_dump<\/strong>, dependendo da parametriza\u00e7\u00e3o.<\/p>\n<p>Ao contr\u00e1rio da replica\u00e7\u00e3o f\u00edsica, que exige paridade total de bin\u00e1rios, a replica\u00e7\u00e3o l\u00f3gica permite que o assinante tenha dados adicionais, colunas extras, outras tabelas e at\u00e9 cargas de escrita pr\u00f3prias \u2014 desde que n\u00e3o entrem em conflito com as chaves prim\u00e1rias das tabelas replicadas. Isso \u00e9 extremamente \u00fatil para cen\u00e1rios como: migra\u00e7\u00e3o de dados com tempo de inatividade m\u00ednimo entre vers\u00f5es diferentes do PostgreSQL, alimenta\u00e7\u00e3o de um banco de dados de relat\u00f3rios a partir de um banco transacional, e consolida\u00e7\u00e3o de dados de m\u00faltiplas origens em um \u00fanico assinante.<\/p>\n<p>Internamente, a replica\u00e7\u00e3o l\u00f3gica exige que o <strong>wal_level<\/strong> esteja definido como <strong>logical<\/strong> no servidor publicador. Com essa configura\u00e7\u00e3o, o PostgreSQL gera informa\u00e7\u00f5es adicionais no WAL, conhecidas como <strong>logical changes<\/strong>, que permitem a decodifica\u00e7\u00e3o das altera\u00e7\u00f5es por um processo chamado <strong>walsender<\/strong> especializado em logical decoding. Esse processo l\u00ea o WAL e entrega as mudan\u00e7as no formato l\u00f3gico ao <strong>apply worker<\/strong> do assinante, que as aplica como comandos SQL comuns. As vis\u00f5es <strong>pg_stat_subscription<\/strong> e <strong>pg_stat_replication<\/strong> se tornam suas aliadas para monitorar a sa\u00fade desse fluxo.<\/p>\n<p>\u00c9 importante esclarecer uma diferen\u00e7a conceitual fundamental: na replica\u00e7\u00e3o f\u00edsica, todos os bancos do cluster s\u00e3o replicados obrigatoriamente. Na replica\u00e7\u00e3o l\u00f3gica, cada <strong>database<\/strong> \u00e9 replicado separadamente \u2014 a publica\u00e7\u00e3o \u00e9 criada dentro de um banco espec\u00edfico e somente as tabelas desse banco s\u00e3o publicadas. Se voc\u00ea precisar replicar m\u00faltiplos bancos de dados, precisar\u00e1 criar publica\u00e7\u00f5es e assinaturas em cada um deles. Essa granularidade \u00e9 uma vantagem, mas tamb\u00e9m exige planejamento cuidadoso em arquiteturas com muitos bancos. Nossos especialistas em PostgreSQL na JRT Technology Solutions frequentemente combinam replica\u00e7\u00e3o f\u00edsica para alta disponibilidade e replica\u00e7\u00e3o l\u00f3gica para integra\u00e7\u00e3o e migra\u00e7\u00e3o, aproveitando o melhor de cada tecnologia.<\/p>\n<h3>Passo 1 \u2014 Preparando o Servidor Prim\u00e1rio para Replica\u00e7\u00e3o F\u00edsica<\/h3>\n<p>Vamos come\u00e7ar configurando o servidor prim\u00e1rio para permitir conex\u00f5es de replica\u00e7\u00e3o e gerar os dados de WAL necess\u00e1rios. Neste passo, trabalharemos na m\u00e1quina com IP <strong>192.168.1.10<\/strong>. O primeiro ajuste \u00e9 definir os par\u00e2metros essenciais no arquivo <strong>postgresql.conf<\/strong>. Em vez de editar manualmente o arquivo em busca de cada linha, utilizaremos o comando <strong>ALTER SYSTEM<\/strong> do PostgreSQL, que grava as configura\u00e7\u00f5es no arquivo <strong>postgresql.auto.conf<\/strong> de forma idempotente e segura. Cada comando abaixo define um par\u00e2metro e exibe a confirma\u00e7\u00e3o esperada.<\/p>\n<pre><code>-- Conecte-se como usu\u00e1rio postgres no servidor prim\u00e1rio\nsudo -u postgres psql\n\n-- 1. Permite conex\u00f5es TCP de qualquer interface (necess\u00e1rio para r\u00e9plicas remotas)\nALTER SYSTEM SET listen_addresses = '*';\n\n-- 2. Define o n\u00edvel de WAL para replica\u00e7\u00e3o f\u00edsica (replica) ou l\u00f3gica (logical)\nALTER SYSTEM SET wal_level = replica;\n\n-- 3. Define quantos processos walsender podem existir simultaneamente\nALTER SYSTEM SET max_wal_senders = 10;\n\n-- 4. Garante que a r\u00e9plica possa aceitar consultas de leitura (hot standby)\nALTER SYSTEM SET hot_standby = on;\n\n-- 5. Define o tamanho m\u00ednimo de WAL mantido no prim\u00e1rio (prote\u00e7\u00e3o adicional)\nALTER SYSTEM SET wal_keep_size = '1GB';\n\n-- 6. Ativa o modo de arquivamento cont\u00ednuo (\u00fatil para recupera\u00e7\u00e3o futura)\nALTER SYSTEM SET archive_mode = on;\n\n-- 7. Define o comando de arquivamento para copiar WALs antigos para diret\u00f3rio seguro\nALTER SYSTEM SET archive_command = 'test ! -f \/var\/lib\/postgresql\/16\/archive\/%f && cp %p \/var\/lib\/postgresql\/16\/archive\/%f';\n\n-- 8. Sai do psql\n\\q<\/code><\/pre>\n<pre><code class=\"output\">ALTER SYSTEM\nALTER SYSTEM\nALTER SYSTEM\nALTER SYSTEM\nALTER SYSTEM\nALTER SYSTEM\nALTER SYSTEM\n\\q<\/code><\/pre>\n<p>Explica\u00e7\u00e3o linha por linha: o comando <strong>ALTER SYSTEM SET<\/strong> executa uma altera\u00e7\u00e3o de configura\u00e7\u00e3o em n\u00edvel de cluster sem a necessidade de editar arquivos diretamente. O par\u00e2metro <strong>listen_addresses = &#8216;*&#8217;<\/strong> instrui o PostgreSQL a escutar em todas as interfaces de rede; por padr\u00e3o, ele escuta apenas em localhost, o que impediria a r\u00e9plica de conectar. O <strong>wal_level = replica<\/strong> ativa a gera\u00e7\u00e3o de WAL suficiente para replica\u00e7\u00e3o f\u00edsica; para replica\u00e7\u00e3o l\u00f3gica, voc\u00ea deve usar <strong>logical<\/strong> \u2014 mas nesta etapa f\u00edsica, <strong>replica<\/strong> \u00e9 suficiente e mais eficiente. O <strong>max_wal_senders = 10<\/strong> permite at\u00e9 dez conex\u00f5es de envio de WAL simult\u00e2neas, um n\u00famero confort\u00e1vel para a maioria dos cen\u00e1rios. O <strong>hot_standby = on<\/strong> habilita leitura na r\u00e9plica. O <strong>wal_keep_size = &#8216;1GB&#8217;<\/strong> define uma prote\u00e7\u00e3o b\u00e1sica mantendo pelo menos 1 GB de WAL no diret\u00f3rio pg_wal, \u00fatil quando n\u00e3o se usa replication slot. O <strong>archive_mode = on<\/strong> e o <strong>archive_command<\/strong> ativam o arquivamento cont\u00ednuo de segmentos WAL para um diret\u00f3rio separado, pr\u00e1tica recomendada para point-in-time recovery.<\/p>\n<p>Voc\u00ea deve criar o diret\u00f3rio de arquivamento mencionado no comando antes de reiniciar o servi\u00e7o, caso contr\u00e1rio o PostgreSQL falhar\u00e1 ao tentar arquivar. Execute os comandos abaixo conforme seu sistema operacional. Em <strong>Ubuntu\/Debian<\/strong>, o diret\u00f3rio de arquivamento ser\u00e1 <strong>\/var\/lib\/postgresql\/16\/archive<\/strong>; em <strong>CentOS\/RHEL\/Rocky<\/strong>, o equivalente ser\u00e1 <strong>\/var\/lib\/pgsql\/16\/archive<\/strong>. O diret\u00f3rio deve pertencer ao usu\u00e1rio <strong>postgres<\/strong> para que o processo de arquivamento possa gravar nele.<\/p>\n<pre><code># Ubuntu\/Debian\nsudo mkdir -p \/var\/lib\/postgresql\/16\/archive\nsudo chown postgres:postgres \/var\/lib\/postgresql\/16\/archive\n\n# CentOS\/RHEL\/Rocky\nsudo mkdir -p \/var\/lib\/pgsql\/16\/archive\nsudo chown postgres:postgres \/var\/lib\/pgsql\/16\/archive<\/code><\/pre>\n<p>O pr\u00f3ximo passo \u00e9 configurar a autentica\u00e7\u00e3o para que a r\u00e9plica possa se conectar com o usu\u00e1rio de replica\u00e7\u00e3o dedicado. Edite o arquivo <strong>pg_hba.conf<\/strong> e adicione a linha de replica\u00e7\u00e3o. O local do arquivo no Debian\/Ubuntu \u00e9 <strong>\/etc\/postgresql\/16\/main\/pg_hba.conf<\/strong> e no RHEL\/CentOS\/Rocky \u00e9 <strong>\/var\/lib\/pgsql\/16\/data\/pg_hba.conf<\/strong>. Adicione a seguinte linha no final do arquivo, respeitando a sintaxe: tipo de conex\u00e3o, banco de dados, usu\u00e1rio, endere\u00e7o e m\u00e9todo de autentica\u00e7\u00e3o.<\/p>\n<pre><code># Entrada para permitir conex\u00f5es de replica\u00e7\u00e3o a partir da rede local\n# Tipo  Banco         Usu\u00e1rio      Endere\u00e7o        M\u00e9todo\nhost    replication   replicador   192.168.1.0\/24  scram-sha-256<\/code><\/pre>\n<p>O m\u00e9todo <strong>scram-sha-256<\/strong> \u00e9 o mecanismo de autentica\u00e7\u00e3o mais seguro suportado pelo PostgreSQL e recomendado pela nossa equipe na JRT Technology Solutions para qualquer ambiente, especialmente quando as credenciais trafegam pela rede. Evite usar <strong>trust<\/strong> ou <strong>password<\/strong> em produ\u00e7\u00e3o. Ap\u00f3s editar, recarregue a configura\u00e7\u00e3o com <strong>systemctl reload postgresql<\/strong> (Debian\/Ubuntu) ou <strong>systemctl reload postgresql-16<\/strong> (RHEL\/CentOS\/Rocky) para que a altera\u00e7\u00e3o entre em vigor sem reiniciar completamente o servi\u00e7o.<\/p>\n<p>Agora crie o usu\u00e1rio de replica\u00e7\u00e3o no banco. Conecte-se ao PostgreSQL e execute a cria\u00e7\u00e3o do role com permiss\u00e3o <strong>REPLICATION<\/strong> e <strong>LOGIN<\/strong>. Escolha uma senha forte, pois esse usu\u00e1rio ter\u00e1 acesso ao fluxo de dados sens\u00edveis do seu cluster.<\/p>\n<pre><code>sudo -u postgres psql -c \"CREATE ROLE replicador WITH REPLICATION LOGIN PASSWORD 'S3nh4_Forte_Replica_2026';\"<\/code><\/pre>\n<pre><code class=\"output\">CREATE ROLE<\/code><\/pre>\n<p>Finalmente, reinicie completamente o PostgreSQL no prim\u00e1rio para aplicar os par\u00e2metros que exigem reinicializa\u00e7\u00e3o, como <strong>wal_level<\/strong>, <strong>max_wal_senders<\/strong> e <strong>listen_addresses<\/strong>. Use os comandos espec\u00edficos do seu sistema operacional e verifique se o servi\u00e7o est\u00e1 ativo em seguida.<\/p>\n<pre><code># Ubuntu\/Debian\nsudo systemctl restart postgresql\nsudo systemctl status postgresql --no-pager\n\n# CentOS\/RHEL\/Rocky\nsudo systemctl restart postgresql-16\nsudo systemctl status postgresql-16 --no-pager<\/code><\/pre>\n<pre><code class=\"output\">\u25cf postgresql.service - PostgreSQL RDBMS\n     Loaded: loaded (\/lib\/systemd\/system\/postgresql.service; enabled; vendor preset: enabled)\n     Active: active (exited) since Wed 2026-09-02 10:15:42 -03; 12s ago\n   Main PID: 4242 (code=exited, status=0\/SUCCESS)\n        CPU: 45ms\n\nSep 02 10:15:42 servidor-primario systemd[1]: Starting PostgreSQL RDBMS...\nSep 02 10:15:42 servidor-primario systemd[1]: Finished PostgreSQL RDBMS.<\/code><\/pre>\n<p>Com o servi\u00e7o reiniciado, confirme que os par\u00e2metros foram aplicados corretamente consultando a vis\u00e3o <strong>pg_settings<\/strong>:<\/p>\n<pre><code>sudo -u postgres psql -c \"SELECT name, setting FROM pg_settings WHERE name IN ('listen_addresses','wal_level','max_wal_senders','hot_standby','wal_keep_size','archive_mode');\"<\/code><\/pre>\n<pre><code class=\"output\">       name        | setting\n-------------------+---------\n archive_mode      | on\n hot_standby       | on\n listen_addresses  | *\n max_wal_senders   | 10\n wal_keep_size     | 1GB\n wal_level         | replica\n(6 rows)<\/code><\/pre>\n<p>O prim\u00e1rio est\u00e1 pronto para receber conex\u00f5es de replica\u00e7\u00e3o. Antes de prosseguir para o standby, vamos criar um <strong>replication slot<\/strong> f\u00edsico, que garante a reten\u00e7\u00e3o de WAL enquanto a r\u00e9plica estiver em manuten\u00e7\u00e3o ou desconectada. Sem ele, se o prim\u00e1rio remover segmentos WAL necess\u00e1rios, a r\u00e9plica n\u00e3o conseguir\u00e1 recuperar a sincroniza\u00e7\u00e3o e voc\u00ea precisar\u00e1 reprovision\u00e1-la do zero. Execute o comando abaixo no prim\u00e1rio:<\/p>\n<pre><code>sudo -u postgres psql -c \"SELECT pg_create_physical_replication_slot('slot_replica1');\"<\/code><\/pre>\n<pre><code class=\"output\"> pg_create_physical_replication_slot\n--------------------------------------\n (slot_replica1,)\n(1 row)<\/code><\/pre>\n<p>Agora o slot <strong>slot_replica1<\/strong> existe no prim\u00e1rio e reter\u00e1 WAL at\u00e9 que a r\u00e9plica o consuma. Lembre-se de monitorar o uso de disco em <strong>pg_wal<\/strong>, pois uma r\u00e9plica inativa com slot criado gera ac\u00famulo progressivo de WAL. Em nossos ambientes na JRT Technology Solutions, alertas s\u00e3o configurados para notificar quando o diret\u00f3rio <strong>pg_wal<\/strong> ultrapassa 80% do disco, evitando surpresas desagrad\u00e1veis.<\/p>\n<h3>Passo 2 \u2014 Provisionando o Servidor Standby com pg_basebackup<\/h3>\n<p>Com o prim\u00e1rio configurado, vamos provisionar o standby na m\u00e1quina <strong>192.168.1.20<\/strong>. A ferramenta recomendada \u00e9 o <strong>pg_basebackup<\/strong>, que cria uma c\u00f3pia f\u00edsica completa do cluster prim\u00e1rio e a grava no diret\u00f3rio de dados da r\u00e9plica via protocolo de streaming, sem necessidade de parar o prim\u00e1rio. Antes de executar o <strong>pg_basebackup<\/strong>, certifique-se de que o diret\u00f3rio de dados do standby est\u00e1 vazio ou n\u00e3o existe, pois a ferramenta n\u00e3o sobrescreve um diret\u00f3rio com dados existentes.<\/p>\n<p>No standby, pare o servi\u00e7o PostgreSQL e mova (ou remova) o diret\u00f3rio de dados padr\u00e3o. Em sistemas <strong>Ubuntu\/Debian<\/strong>, o diret\u00f3rio \u00e9 <strong>\/var\/lib\/postgresql\/16\/main<\/strong>; em <strong>CentOS\/RHEL\/Rocky<\/strong>, \u00e9 <strong>\/var\/lib\/pgsql\/16\/data<\/strong>. Execute os comandos de limpeza e, em seguida, o <strong>pg_basebackup<\/strong> apontando para o prim\u00e1rio.<\/p>\n<pre><code># Ubuntu\/Debian\nsudo systemctl stop postgresql\nsudo rm -rf \/var\/lib\/postgresql\/16\/main\nsudo mkdir -p \/var\/lib\/postgresql\/16\/main\nsudo chown -R postgres:postgres \/var\/lib\/postgresql\/16\/main\n\n# CentOS\/RHEL\/Rocky\nsudo systemctl stop postgresql-16\nsudo rm -rf \/var\/lib\/pgsql\/16\/data\nsudo mkdir -p \/var\/lib\/pgsql\/16\/data\nsudo chown -R postgres:postgres \/var\/lib\/pgsql\/16\/data<\/code><\/pre>\n<p>O comando <strong>pg_basebackup<\/strong> abaixo possui as seguintes op\u00e7\u00f5es cr\u00edticas: <strong>-h<\/strong> especifica o host do prim\u00e1rio; <strong>-D<\/strong> define o diret\u00f3rio de destino no standby; <strong>-U<\/strong> informa o usu\u00e1rio de replica\u00e7\u00e3o; <strong>-P<\/strong> exibe o progresso da c\u00f3pia; <strong>-R<\/strong> cria automaticamente o arquivo <strong>standby.signal<\/strong> e adiciona as configura\u00e7\u00f5es de <strong>primary_conninfo<\/strong> ao <strong>postgresql.auto.conf<\/strong>; <strong>-X stream<\/strong> faz o streaming do WAL durante o backup, evitando a necessidade de arquivamento externo; <strong>-C<\/strong> cria o replication slot automaticamente; e <strong>-S slot_replica1<\/strong> define o nome do slot. Execute como usu\u00e1rio <strong>postgres<\/strong>:<\/p>\n<pre><code>sudo -u postgres pg_basebackup -h 192.168.1.10 -D \/var\/lib\/postgresql\/16\/main -U replicador -P -R -X stream -C -S slot_replica1<\/code><\/pre>\n<pre><code class=\"output\">Password:\n48662\/48662 kB (100%), 1\/1 tablespaces\nWARNING:  skipping WAL location: 0\/4000028 (pid 4242) because of auto-configure of synchronous_standby_names\n48662\/48662 kB (100%), 1\/1 tablespaces<\/code><\/pre>\n<p>Voc\u00ea ser\u00e1 solicitado a digitar a senha do usu\u00e1rio <strong>replicador<\/strong> criado anteriormente. O warning sobre <strong>synchronous_standby_names<\/strong> \u00e9 normal em ambientes sem replica\u00e7\u00e3o s\u00edncrona e pode ser ignorado. Se voc\u00ea n\u00e3o usar o <strong>-C<\/strong> e o <strong>-S<\/strong>, o backup ainda funcionar\u00e1, mas sem slot de replica\u00e7\u00e3o, ficando mais suscet\u00edvel \u00e0 perda de WAL durante per\u00edodos de desconex\u00e3o. Recomendamos fortemente usar slot em produ\u00e7\u00e3o.<\/p>\n<p>Ap\u00f3s o t\u00e9rmino do backup, o diret\u00f3rio de dados do standby conter\u00e1 todos os arquivos do cluster, incluindo o <strong>standby.signal<\/strong> (que instrui o PostgreSQL a iniciar em modo de recupera\u00e7\u00e3o cont\u00ednua) e o <strong>postgresql.auto.conf<\/strong> com as configura\u00e7\u00f5es de conex\u00e3o ao prim\u00e1rio. Vamos inspecionar o conte\u00fado do <strong>postgresql.auto.conf<\/strong> para confirmar que a op\u00e7\u00e3o <strong>-R<\/strong> fez seu trabalho corretamente:<\/p>\n<pre><code>sudo cat \/var\/lib\/postgresql\/16\/main\/postgresql.auto.conf<\/code><\/pre>\n<pre><code class=\"output\"># Do not edit this file manually!\n# It will be overwritten by the ALTER SYSTEM command.\nprimary_conninfo = 'user=replicador password=S3nh4_Forte_Replica_2026 host=192.168.1.10 port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'\n<\/code><\/pre>\n<p>Observe que o arquivo cont\u00e9m a instru\u00e7\u00e3o de n\u00e3o editar manualmente, pois \u00e9 gerenciado pelo PostgreSQL. A linha <strong>primary_conninfo<\/strong> informa ao standby todos os par\u00e2metros necess\u00e1rios para conectar ao prim\u00e1rio: usu\u00e1rio, senha, host, porta, e op\u00e7\u00f5es de SSL\/GSSAPI. A op\u00e7\u00e3o <strong>sslmode=prefer<\/strong> tenta SSL primeiro, mas aceita conex\u00e3o sem SSL. Em produ\u00e7\u00e3o, recomendamos configurar SSL obrigat\u00f3rio com certificados v\u00e1lidos para proteger o fluxo de dados WAL.<\/p>\n<p>Agora precisamos garantir que o diret\u00f3rio de dados no standby esteja com as permiss\u00f5es corretas e iniciar o servi\u00e7o. O <strong>pg_basebackup<\/strong> preserva as permiss\u00f5es, mas em alguns sistemas \u00e9 prudente reaplicar o <strong>chown<\/strong> antes de iniciar.<\/p>\n<pre><code># Ubuntu\/Debian\nsudo chown -R postgres:postgres \/var\/lib\/postgresql\/16\/main\nsudo systemctl start postgresql\n\n# CentOS\/RHEL\/Rocky\nsudo chown -R postgres:postgres \/var\/lib\/pgsql\/16\/data\nsudo systemctl start postgresql-16<\/code><\/pre>\n<p>Verifique o status do servi\u00e7o e, em seguida, conecte-se localmente ao standby para confirmar que ele est\u00e1 em modo de recupera\u00e7\u00e3o. O standby aceita conex\u00f5es de leitura, mas rejeita escritas. Vamos testar ambos os comportamentos:<\/p>\n<pre><code># Conecte-se ao standby localmente e verifique o modo\nsudo -u postgres psql -c \"SELECT pg_is_in_recovery();\"<\/code><\/pre>\n<pre><code class=\"output\"> pg_is_in_recovery\n-------------------\n t\n(1 row)<\/code><\/pre>\n<pre><code># Tente realizar uma escrita no standby (deve falhar)\nsudo -u postgres psql -c \"CREATE TABLE teste_escrita (id int);\"<\/code><\/pre>\n<pre><code class=\"output\">ERROR:  cannot execute CREATE TABLE in a read-only transaction<\/code><\/pre>\n<p>O resultado <strong>t<\/strong> (true) em <strong>pg_is_in_recovery<\/strong> confirma que o servidor est\u00e1 em modo standby, e a falha ao criar a tabela demonstra que as escritas s\u00e3o corretamente bloqueadas. Esse comportamento \u00e9 esperado e desejado em um hot standby \u2014 a r\u00e9plica serve para leitura e failover, n\u00e3o para escrita paralela. Se precisar de escrita em ambos os lados, a replica\u00e7\u00e3o l\u00f3gica ou uma arquitetura multimaster (fora do escopo desta aula) seria necess\u00e1ria.<\/p>\n<h3>Configura\u00e7\u00e3o Detalhada do Arquivo postgresql.conf no Prim\u00e1rio<\/h3>\n<p>Para refer\u00eancia completa, apresentamos abaixo o bloco de configura\u00e7\u00f5es relacionadas \u00e0 replica\u00e7\u00e3o no arquivo <strong>postgresql.conf<\/strong> do servidor prim\u00e1rio. Em vez de editar manualmente, voc\u00ea pode usar o conte\u00fado apresentado para entender cada par\u00e2metro \u2014 mas lembre-se de que as altera\u00e7\u00f5es via <strong>ALTER SYSTEM<\/strong> s\u00e3o gravadas no <strong>postgresql.auto.conf<\/strong> e t\u00eam preced\u00eancia sobre o <strong>postgresql.conf<\/strong>. Em uma configura\u00e7\u00e3o real de produ\u00e7\u00e3o, os par\u00e2metros abaixo seriam ajustados conforme o hardware e a topologia desejada.<\/p>\n<pre><code># ---------------------------------------------------------------\n# REPLICA\u00c7\u00c3O F\u00cdSICA - Configura\u00e7\u00e3o do Servidor Prim\u00e1rio\n# Arquivo: postgresql.conf\n# ---------------------------------------------------------------\n\n# Endere\u00e7o(s) nos quais o PostgreSQL deve escutar\nlisten_addresses = '*'\n\n# N\u00edvel de informa\u00e7\u00f5es gravadas no WAL (replica \u00e9 suficiente para streaming)\nwal_level = replica\n\n# N\u00famero m\u00e1ximo de processos walsender simult\u00e2neos\nmax_wal_senders = 10\n\n# Tamanho m\u00ednimo de WAL mantido no pg_wal (prote\u00e7\u00e3o b\u00e1sica)\nwal_keep_size = 1GB\n\n# Habilita consultas de leitura no standby (hot standby)\nhot_standby = on\n\n# Alimenta\u00e7\u00e3o de feedback do standby para o prim\u00e1rio (permite slots avan\u00e7ados)\nhot_standby_feedback = off\n\n# Modo de arquivamento cont\u00ednuo de WAL (recomendado para PITR)\narchive_mode = on\n\n# Comando para arquivar WAL antigos\narchive_command = 'test ! -f \/var\/lib\/postgresql\/16\/archive\/%f && cp %p \/var\/lib\/postgresql\/16\/archive\/%f'\n\n# Tempo m\u00e1ximo de envio de WAL antes de timeout (padr\u00e3o 60s)\nwal_sender_timeout = 60s\n\n# Intervalo de relat\u00f3rio de progresso do walsender (padr\u00e3o 10s)\nwal_receiver_status_interval = 10s\n\n# N\u00famero m\u00e1ximo de slots de replica\u00e7\u00e3o\nmax_replication_slots = 10\n\n# Atraso m\u00e1ximo para aplicar WAL em standby (utilizado em r\u00e9plicas com delay)\n# recovery_min_apply_delay = 0\n\n# Nome da r\u00e9plica s\u00edncrona (descomente para ativar replica\u00e7\u00e3o s\u00edncrona)\n# synchronous_standby_names = 'replica1'\n\n# M\u00e9todo de commit s\u00edncrono (on, remote_apply, remote_write, off, local)\nsynchronous_commit = on<\/code><\/pre>\n<p>Explicando os par\u00e2metros adicionais: <strong>hot_standby_feedback<\/strong> controla se o standby envia ao prim\u00e1rio informa\u00e7\u00f5es sobre as consultas que est\u00e1 executando, permitindo que o prim\u00e1rio evite remover tuplas antigas que o standby ainda precisa ver (importante para evitar conflitos de snapshots em consultas longas). O <strong>wal_sender_timeout<\/strong> define quanto tempo o prim\u00e1rio aguarda um ACK do standby antes de encerrar a conex\u00e3o. O <strong>wal_receiver_status_interval<\/strong> controla a frequ\u00eancia com que o standby reporta seu progresso. O <strong>max_replication_slots<\/strong> limita o n\u00famero total de slots f\u00edsicos e l\u00f3gicos no servidor. Por fim, <strong>synchronous_commit = on<\/strong> e <strong>synchronous_standby_names<\/strong> s\u00e3o os par\u00e2metros que ativam a replica\u00e7\u00e3o s\u00edncrona \u2014 deixe-os como est\u00e3o para trabalhar em modo ass\u00edncrono, ou configure a lista de r\u00e9plicas s\u00edncronas para zero perda de dados.<\/p>\n<p>No servidor standby, o arquivo <strong>postgresql.conf<\/strong> n\u00e3o precisa de ajustes manuais al\u00e9m das configura\u00e7\u00f5es geradas pelo <strong>pg_basebackup -R<\/strong>. Isso porque o modo standby \u00e9 ativado pela presen\u00e7a do arquivo <strong>standby.signal<\/strong> no diret\u00f3rio de dados, e a conex\u00e3o ao prim\u00e1rio \u00e9 definida pelo <strong>primary_conninfo<\/strong> no <strong>postgresql.auto.conf<\/strong>. Recomendamos, contudo, ajustar o par\u00e2metro <strong>hot_standby = on<\/strong> (j\u00e1 configurado pelo backup) e eventualmente <strong>max_connections<\/strong> para refletir a capacidade de leitura da r\u00e9plica. N\u00e3o \u00e9 necess\u00e1rio configurar <strong>wal_level<\/strong> no standby, pois ele n\u00e3o gera WAL pr\u00f3prio em modo de recupera\u00e7\u00e3o cont\u00ednua.<\/p>\n<h3>Verificando a Instala\u00e7\u00e3o \/ Testando a Configura\u00e7\u00e3o<\/h3>\n<p>Com o prim\u00e1rio e o standby em execu\u00e7\u00e3o, chegou o momento de verificar se a replica\u00e7\u00e3o est\u00e1 realmente funcionando. A forma mais direta \u00e9 consultar a vis\u00e3o <strong>pg_stat_replication<\/strong> no servidor prim\u00e1rio, que mostra todas as r\u00e9plicas conectadas e o estado de envio de WAL. Execute o comando abaixo no prim\u00e1rio:<\/p>\n<pre><code>sudo -u postgres psql -x -c \"SELECT application_name, client_addr, state, sync_state, write_lag, flush_lag, replay_lag FROM pg_stat_replication;\"<\/code><\/pre>\n<pre><code class=\"output\">-[ RECORD 1 ]----+------------------------------\napplication_name | walreceiver\nclient_addr      | 192.168.1.20\nstate            | streaming\nsync_state       | async\nwrite_lag        | 00:00:00.000123\nflush_lag        | 00:00:00.000341\nreplay_lag       | 00:00:00.000502<\/code><\/pre>\n<p>A coluna <strong>state<\/strong> com valor <strong>streaming<\/strong> \u00e9 o sinal verde que esper\u00e1vamos: significa que o standby est\u00e1 conectado e recebendo WAL em tempo real. O <strong>sync_state<\/strong> exibe <strong>async<\/strong> porque configuramos replica\u00e7\u00e3o ass\u00edncrona \u2014 sem <strong>synchronous_standby_names<\/strong>. As colunas de lag mostram atrasos m\u00ednimos (fra\u00e7\u00f5es de milissegundo) entre prim\u00e1rio e r\u00e9plica, indicando um fluxo saud\u00e1vel. Se algum desses valores crescer muito, a r\u00e9plica pode estar com dificuldade de acompanhar o prim\u00e1rio.<\/p>\n<p>Outra verifica\u00e7\u00e3o importante \u00e9 a confirma\u00e7\u00e3o de que o <strong>replication slot<\/strong> est\u00e1 ativo e consumindo WAL. Consulte a vis\u00e3o <strong>pg_replication_slots<\/strong> no prim\u00e1rio:<\/p>\n<pre><code>sudo -u postgres psql -c \"SELECT slot_name, slot_type, active, restart_lsn, confirmed_flush_lsn FROM pg_replication_slots;\"<\/code><\/pre>\n<pre><code class=\"output\">   slot_name    | slot_type | active | restart_lsn | confirmed_flush_lsn\n----------------+-----------+--------+-------------+---------------------\n slot_replica1  | physical  | t      | 0\/402D218   | 0\/402D250\n(1 row)<\/code><\/pre>\n<p>O valor <strong>active = t<\/strong> indica que o slot est\u00e1 em uso por uma r\u00e9plica conectada. O <strong>restart_lsn<\/strong> mostra o ponto a partir do qual o WAL ser\u00e1 reenviado se a r\u00e9plica se reconectar. Se o slot estiver inativo (<strong>active = f<\/strong>) por muito tempo, o WAL se acumular\u00e1 no prim\u00e1rio \u2014 uma condi\u00e7\u00e3o que exige aten\u00e7\u00e3o imediata.<\/p>\n<p>No standby, voc\u00ea pode verificar o estado de recupera\u00e7\u00e3o cont\u00ednua e o \u00faltimo local WAL aplicado com os comandos abaixo:<\/p>\n<pre><code>sudo -u postgres psql -c \"SELECT pg_is_in_recovery(), pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn();\"<\/code><\/pre>\n<pre><code class=\"output\"> pg_is_in_recovery | pg_last_wal_receive_lsn | pg_last_wal_replay_lsn\n-------------------+-------------------------+------------------------\n t                 | 0\/402D250               | 0\/402D250\n(1 row)<\/code><\/pre>\n<p>Os dois valores <strong>pg_last_wal_receive_lsn<\/strong> (WAL recebido via streaming) e <strong>pg_last_wal_replay_lsn<\/strong> (WAL aplic<\/p>\n<div style=\"margin:52px 0 40px;padding:36px 28px;background:linear-gradient(135deg,#0f172a 0%,#1a2744 100%);border:2px solid #25D366;border-radius:18px;text-align:center;box-shadow:0 4px 28px rgba(37,211,102,0.18)\">\n<p style=\"margin:0 0 10px;font-size:18px;color:#ffffff;font-weight:700;line-height:1.4\">Quer aprender na pr\u00e1tica com especialistas?<\/p>\n<p style=\"margin:0 0 28px;font-size:15px;color:#94a3b8;font-weight:400;line-height:1.6\">A JRT Technology Solutions oferece treinamentos e implementa\u00e7\u00e3o de PostgreSQL para equipes corporativas.<\/p>\n<p>  <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=5521980606699&#038;text=Ol%C3%A1!%20Tenho%20interesse%20no%20treinamento%20de%20PostgreSQL.&#038;type=phone_number&#038;app_absent=0\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-flex;align-items:center;gap:12px;background:#25D366;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;font-weight:700;padding:15px 32px;border-radius:100px;text-decoration:none;box-shadow:0 4px 16px rgba(37,211,102,0.45);letter-spacing:0.01em\"><br \/>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"#ffffff\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg><br \/>\n    Falar no WhatsApp<br \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e &#8230; <a title=\"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication\" class=\"read-more\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/\" aria-label=\"Read more about Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication\">Ler mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":2643,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"iawp_total_views":0,"footnotes":""},"categories":[75],"tags":[3409],"class_list":["post-2644","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-postgresql-do-zero-ao-avancado-replicacao-streaming-replication-e-logical-replication"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Thiago Paes Rodrigues\"\/>\n\t<meta name=\"google-site-verification\" content=\"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta property=\"og:description\" content=\"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t\t<meta property=\"og:image:height\" content=\"75\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-02T20:59:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-02T20:59:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61590814880509\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#blogposting\",\"name\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions\",\"headline\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication\",\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ai-image-1788382746068.jpg\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication\"},\"datePublished\":\"2026-09-02T17:59:10-03:00\",\"dateModified\":\"2026-09-02T17:59:10-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#webpage\"},\"articleSection\":\"DevOps, PostgreSQL \\u2014 Do Zero ao Avan\\u00e7ado: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"name\":\"DevOps\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#listItem\",\"name\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#listItem\",\"position\":3,\"name\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"name\":\"DevOps\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"telephone\":\"+552138277513\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-logo-mini.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#organizationLogo\",\"width\":100,\"height\":75},\"image\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61590814880509\",\"https:\\\/\\\/www.instagram.com\\\/jrtx.tech\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/\",\"name\":\"Thiago Paes Rodrigues\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#authorImage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/cropped-foto-rascunho3-96x96.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Thiago Paes Rodrigues\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#webpage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/\",\"name\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions\",\"description\":\"Bem-vindo \\u00e0 Aula 22 do curso PostgreSQL \\u2014 Do Zero ao Avan\\u00e7ado. Chegamos a um dos t\\u00f3picos mais cr\\u00edticos para quem administra bancos de dados em produ\\u00e7\\u00e3o: a Replica\\u00e7\\u00e3o. Ao final desta aula, voc\\u00ea ser\\u00e1 capaz de configurar dois tipos distintos de replica\\u00e7\\u00e3o no PostgreSQL \\u2014 a Streaming Replication, que opera no n\\u00edvel f\\u00edsico, e\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ai-image-1788382746068.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#mainImage\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 22: Replica\\u00e7\\u00e3o \\u2014 Streaming Replication e Logical Replication\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/02\\\/aula-22-replicacao-streaming-replication-e-logical-replicati\\\/#mainImage\"},\"datePublished\":\"2026-09-02T17:59:10-03:00\",\"dateModified\":\"2026-09-02T17:59:10-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"alternateName\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions","description":"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e","canonical_url":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#blogposting","name":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions","headline":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication","author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/ai-image-1788382746068.jpg","width":1440,"height":1024,"caption":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication"},"datePublished":"2026-09-02T17:59:10-03:00","dateModified":"2026-09-02T17:59:10-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#webpage"},"isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#webpage"},"articleSection":"DevOps, PostgreSQL \u2014 Do Zero ao Avan\u00e7ado: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication"},{"@type":"BreadcrumbList","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","position":1,"name":"Home","item":"https:\/\/jrtx.com.br\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","name":"DevOps"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","position":2,"name":"DevOps","item":"https:\/\/jrtx.com.br\/blog\/category\/devops\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#listItem","name":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#listItem","position":3,"name":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication","previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","name":"DevOps"}}]},{"@type":"Organization","@id":"https:\/\/jrtx.com.br\/blog\/#organization","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","url":"https:\/\/jrtx.com.br\/blog\/","telephone":"+552138277513","logo":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#organizationLogo","width":100,"height":75},"image":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61590814880509","https:\/\/www.instagram.com\/jrtx.tech\/"]},{"@type":"Person","@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author","url":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/","name":"Thiago Paes Rodrigues","image":{"@type":"ImageObject","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#authorImage","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/cropped-foto-rascunho3-96x96.jpeg","width":96,"height":96,"caption":"Thiago Paes Rodrigues"}},{"@type":"WebPage","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#webpage","url":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/","name":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions","description":"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e","inLanguage":"pt-BR","isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#breadcrumblist"},"author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"creator":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/ai-image-1788382746068.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#mainImage","width":1440,"height":1024,"caption":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication"},"primaryImageOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/#mainImage"},"datePublished":"2026-09-02T17:59:10-03:00","dateModified":"2026-09-02T17:59:10-03:00"},{"@type":"WebSite","@id":"https:\/\/jrtx.com.br\/blog\/#website","url":"https:\/\/jrtx.com.br\/blog\/","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","alternateName":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","inLanguage":"pt-BR","publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","og:type":"article","og:title":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions","og:description":"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e","og:url":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/","og:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:secure_url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:width":100,"og:image:height":75,"article:published_time":"2026-09-02T20:59:10+00:00","article:modified_time":"2026-09-02T20:59:10+00:00","article:publisher":"https:\/\/www.facebook.com\/profile.php?id=61590814880509","twitter:card":"summary_large_image","twitter:title":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication - BLOG - JRT Technology Solutions","twitter:description":"Bem-vindo \u00e0 Aula 22 do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado. Chegamos a um dos t\u00f3picos mais cr\u00edticos para quem administra bancos de dados em produ\u00e7\u00e3o: a Replica\u00e7\u00e3o. Ao final desta aula, voc\u00ea ser\u00e1 capaz de configurar dois tipos distintos de replica\u00e7\u00e3o no PostgreSQL \u2014 a Streaming Replication, que opera no n\u00edvel f\u00edsico, e","twitter:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg"},"aioseo_meta_data":{"post_id":"2644","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-09-02 21:00:16","updated":"2026-09-02 21:00:16","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\/category\/devops\/\" title=\"DevOps\">DevOps<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/jrtx.com.br\/blog"},{"label":"DevOps","link":"https:\/\/jrtx.com.br\/blog\/category\/devops\/"},{"label":"Aula 22: Replica\u00e7\u00e3o \u2014 Streaming Replication e Logical Replication","link":"https:\/\/jrtx.com.br\/blog\/2026\/09\/02\/aula-22-replicacao-streaming-replication-e-logical-replicati\/"}],"_links":{"self":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/2644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2644"}],"version-history":[{"count":0,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/2644\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media\/2643"}],"wp:attachment":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}