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 replicar 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 editor. Os assinantes obtêm 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 a seguir mostram como uma arquitetura de replicação lógica funciona:
Você tira um instantâneo dos dados no banco de dados do editor e copia esses dados para o banco de dados do assinante.
As alterações nos bancos de dados do editor são enviadas ao assinante em tempo real.
O assinante aplica os dados na mesma ordem do editor 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 (editor). Uma publicação é um conjunto de alterações geradas a partir de uma tabela ou grupo de tabelas. Você pode escolher alterações a partir de uma combinação das operações INSERT, UPDATE, DELETE e TRUNCATE. Por padrão, todas essas alterações são replicadas no banco de dados do assinante. Isso contrasta com a replicação física, na qual endereços de bloco exatos são usados para uma byte-by-byte replicação.
Uma tabela publicada deve ter uma IDENTIDADE DE RÉPLICAfull
. Isso significa que a linha inteira se torna a chave. Recomendamos que você defina a identidade da réplica full
como último recurso, pois essa configuração é ineficiente.
Uma assinatura é o lado posterior 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 conjunto de publicações (uma ou mais) nas quais deseja se inscrever.
Definições de configuração
As seguintes configurações são necessárias para as configurações do editor:
wal_level
Definido comological
.max_replication_slots
Defina para 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_senders
para acomodarmax_replication_slots
seu número de réplicas físicas.
As seguintes configurações são necessárias para as configurações do assinante:
max_replication_slots
Defina para acomodar o menor número de assinaturas que você planeja adicionar ao assinante e algumas assinaturas de reserva para sincronização de tabelas.max_logical_replication_workers
Defina para acomodar pelo menos o número de assinaturas e alguns trabalhadores de reserva para a sincronização da tabela.max_worker_processes
Defina pelo menos como (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 editor 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 inicial de dados começa automaticamente do banco de dados de origem para o 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 Usando a replicação lógica para replicar o Amazon RDS gerenciado para PostgreSQL e o Amazon Aurora para PostgreSQL autogerenciado no blog do banco de dados da
Limitações
Recomendamos que você considere 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 da replicação lógica, consulte 31.6. Restrições