Replicação lógica - AWS Orientação prescritiva

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:

  1. Você obtém um snapshot dos dados no banco de dados do publicador e copia esses dados para o banco de dados do assinante.

  2. As alterações nos bancos de dados do publicador são enviadas ao assinante em tempo real.

  3. 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 IDENTITY configurada para replicar as operações UPDATE e DELETE para que as linhas apropriadas a serem atualizadas ou excluídas possam ser identificadas no lado do assinante. Na maioria dos casos, a identidade da réplica é determinada por uma chave primária ou por uma chave exclusiva. Se uma chave primária não estiver presente e você não puder criar uma, defina a identidade da réplica como full. 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_level como logical.

  • Defina max_replication_slots 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 acomodar max_replication_slots e 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_slots para 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_workers para acomodar pelo menos o número de assinaturas e alguns operadores de reserva para a sincronização da tabela.

  • Defina max_worker_processes como pelo menos (max_logical_replication_workers1).

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:

  1. 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.

  2. Crie um assinante usando o comando CREATE SUBSCRIPTION e forneça os detalhes da publicação ao criar o assinante.

  3. O carregamento de dados inicial começa automaticamente do banco de dados de origem ao banco de dados de destino.

  4. Os dados de alteração capturados pelos slots de replicação são replicados no banco de dados de destino.

  5. 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 no blog AWS Database.

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 na documentação do PostgreSQL.