0Pricing
SQL Academy · Aula

Replicação lógica para fragmentação

Use a replicação lógica PUBLICATION/SUBSCRIPTION para mover tabelas entre clusters e viabilizar atualizações de versões principais.

Replicação lógica para fragmentação é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 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.

Replicação lógica versus física

A replicação física replica BYTES do WAL — o cluster inteiro, na mesma versão. A replicação lógica replica ROWS — tabelas selecionadas, possivelmente entre versões diferentes do PG:

  • Assinar tabelas específicas
  • Replicar do PG 14 → PG 16 (para atualizações!)
  • Comunicação em duas vias ou vários primários, com cuidado
  • Permitir esquemas diferentes

Configuração: publicador

Marque o primário como publicador:

-- postgresql.conf
wal_level = logical

-- Create a publication:
CREATE PUBLICATION pub_orders FOR TABLE orders, order_items;

-- Or all tables in the database:
CREATE PUBLICATION pub_all FOR ALL TABLES;

Configuração: assinante

No banco de dados de destino:

CREATE SUBSCRIPTION sub_orders
  CONNECTION 'host=primary port=5432 user=repl dbname=mydb'
  PUBLICATION pub_orders;

Sincronização inicial

A assinatura faz uma cópia inicial de todas as tabelas correspondentes e, depois, transmite as alterações. O esquema de destino precisa corresponder ao esquema de origem.

Caso de uso: atualização de versão principal

A replicação lógica é a forma moderna de atualizar o PostgreSQL com tempo de indisponibilidade mínimo:

  1. Crie um cluster PG16
  2. Faça a replicação lógica do PG14 para o PG16
  3. Transfira as aplicações quando o PG16 estiver atualizado
  4. Desligue o PG14

Caso de uso: dividir um banco de dados

Para dividir um banco de dados enorme em bancos menores:

  1. Publique apenas as tabelas de que um novo serviço precisa
  2. Faça a assinatura no novo banco de dados
  3. Migre as escritas depois da sincronização

Caso de uso: réplicas heterogêneas

Faça a replicação para uma réplica de leitura com índices diferentes ou para um PostgreSQL usado como armazém de dados, com colunas adicionais para relatórios.

Conflitos

A replicação lógica não resolve conflitos automaticamente. Se a mesma linha for atualizada nos dois lados, o assinante será interrompido com um erro. Evite isso:

  • Escrevendo em apenas um dos lados
  • Usando REPLICA IDENTITY FULL para obter diagnósticos melhores
  • Resolvendo os conflitos manualmente e reiniciando a assinatura

Alterações de esquema

DDL NÃO é replicado. Aplique as alterações de esquema manualmente nos dois lados — normalmente primeiro no assinante e depois no publicador. Ou use a extensão pglogical, que pode replicar DDL.

Replicação parcial

O PG moderno permite filtros de linhas e listas de colunas por publicação:

CREATE PUBLICATION us_only FOR TABLE customers
  WHERE (country = 'US');

CREATE PUBLICATION compact FOR TABLE users (id, email);

Fragmentação com replicação lógica

Mova os locatários para um fragmento dedicado:

  1. Publicação na origem filtrada para um locatário
  2. Faça a assinatura a partir do destino
  3. Redirecione a aplicação para o novo fragmento
  4. Exclua os dados do locatário na origem

Desempenho e atraso

A replicação lógica usa uma única linha de execução por assinatura, em sua maior parte. Fontes de alto volume podem se beneficiar de várias publicações e assinaturas ou de ferramentas de terceiros, como pglogical e Debezium.

Recapitulação

A replicação lógica permite o fluxo de dados em nível de linha.

  • Entre versões diferentes e com tabelas parciais
  • Atualizações principais com tempo de indisponibilidade mínimo
  • A resolução de conflitos é problema de YOUR
  • DDL não é replicado

Verificação rápida

Você precisa atualizar do PostgreSQL 14 para o 16 com tempo de indisponibilidade mínimo. Qual replicação ajuda?

Perguntas Frequentes

A aula “Replicação lógica para fragmentação” é grátis?

Sim — o texto completo de “Replicação lógica para fragmentação” é 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 lógica para fragmentação”?

Use a replicação lógica PUBLICATION/SUBSCRIPTION para mover tabelas entre clusters e viabilizar atualizações de versões principais. 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 2 de 4.

Quanto tempo leva a aula “Replicação lógica para fragmentação”?

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