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 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:

  1. Você tira um instantâneo dos dados no banco de dados do editor e copia esses dados para o banco de dados do assinante.

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

  3. 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ÉPLICA 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 comofull. 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_levelDefinido comological.

  • max_replication_slotsDefina 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 seu número de réplicas físicas.

As seguintes configurações são necessárias para as configurações do assinante:

  • max_replication_slotsDefina 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_workersDefina para acomodar pelo menos o número de assinaturas e alguns trabalhadores de reserva para a sincronização da tabela.

  • max_worker_processesDefina 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:

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

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

  3. O carregamento inicial de dados começa automaticamente do banco de dados de origem para o 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 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 AWS.

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