As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Replicação lógica
A replicação lógica é um método de replicação de objetos de dados e suas alterações com base na identidade de replicação dos objetos e suas alterações. A replicação lógica usa um modelo de publicação e assinatura em que um ou mais assinantes assinam uma ou mais publicações em um nó do publicador. Os assinantes obtêm os dados das publicações que assinam.
A replicação lógica oferece controle refinado sobre a replicação e a segurança dos dados. Você pode usar a replicação lógica nos seguintes casos de uso:
Replicação entre diferentes versões principais do PostgreSQL
Replicação entre instâncias do PostgreSQL em plataformas diferentes (por exemplo, Linux para Windows)
Arquitetura
As etapas do fluxo de trabalho abaixo mostram como uma arquitetura de replicação lógica funciona:
Você obtém um snapshot dos dados no banco de dados do publicador e copia esses dados para o banco de dados do assinante.
As alterações nos bancos de dados do publicador são enviadas ao assinante em tempo real.
O assinante aplica os dados na mesma ordem do publicador para que a consistência transacional seja garantida para publicações em uma única assinatura.
Uma publicação pode ser definida em uma instância primária (publicador). Uma publicação é um conjunto de alterações geradas em uma tabela ou em um grupo de tabelas. Você pode escolher as alterações de uma combinação de operações INSERT, UPDATE, DELETE e TRUNCATE. Por padrão, todas essas alterações são replicadas para o banco de dados do assinante. Isso contrasta com a replicação física, em que endereços de bloco exatos são usados para uma replicação byte por byte.
Uma tabela publicada deve ter uma REPLICA IDENTITYfull. Isso significa que a linha inteira passa a ser a chave. Recomendamos que você defina a identidade da réplica como full como último recurso, pois essa configuração é ineficiente.
Uma assinatura é o lado downstream da replicação lógica. O nó em que uma assinatura é definida é chamado de assinante. Uma assinatura define a conexão com outro banco de dados e o conjunto de publicações (uma ou mais) às quais ela deseja se inscrever.
Definições de configuração
As seguintes configurações são necessárias para as configurações do publicador:
Definir
wal_levelcomological.Defina
max_replication_slotspara acomodar pelo menos o número de assinaturas que se espera que se conectem e alguns slots de reserva para sincronização de tabelas.Configure
max_wal_senderspara acomodarmax_replication_slotse seu número de réplicas físicas.
As seguintes configurações são necessárias para as configurações do assinante:
Defina
max_replication_slotspara acomodar o menor número de assinaturas que você planeja adicionar ao assinante e algumas assinaturas de reserva para a sincronização de tabelas.Defina
max_logical_replication_workerspara acomodar pelo menos o número de assinaturas e alguns operadores de reserva para a sincronização da tabela.Defina
max_worker_processescomo pelo menos (max_logical_replication_workers+1).
Cada assinatura recebe alterações por meio de um slot de replicação.
As etapas a seguir mostram como realizar a replicação lógica:
Crie um publicador usando o comando CREATE PUBLICATION
para um grupo de tabelas (que farão parte da replicação) no banco de dados de origem. Crie um assinante usando o comando CREATE SUBSCRIPTION
e forneça os detalhes da publicação ao criar o assinante. O carregamento de dados inicial começa automaticamente do banco de dados de origem ao banco de dados de destino.
Os dados de alteração capturados pelos slots de replicação são replicados no banco de dados de destino.
Use pg_stat_replication
(uma tabela de catálogo) para verificar o status da replicação. Use pg_stat_replication_slots para verificar o slot de replicação.
Para obter mais informações, consulte a publicação Using logical replication to replicate managed Amazon RDS for PostgreSQL and Amazon Aurora to self-managed PostgreSQL
Limitações
Recomendamos considerar as seguintes limitações do método de replicação lógica antes de iniciar a migração:
Atualmente, a replicação lógica tem a maioria das restrições e lacunas de funcionalidade.
A replicação lógica não pode replicar a linguagem de definição de dados (DDL), a sequência e as operações de objetos grandes. Uma ação truncada (que se aplica a uma tabela com uma chave estrangeira) deve incluir tabelas relacionadas na mesma assinatura.
Para obter mais informações sobre as limitações de replicação lógica, consulte 31.6. Restrictions