

# Exemplo: usar a replicação lógica com clusters de banco de dados do Aurora PostgreSQL
<a name="AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example"></a>

O procedimento a seguir mostra como iniciar a replicação lógica entre dois clusters de banco de dados do Aurora PostgreSQL. Tanto o editor quanto o assinante devem ser configurados para replicação lógica, conforme detalhado em [Configurar a replicação lógica para seu cluster de banco de dados do Aurora PostgreSQL](AuroraPostgreSQL.Replication.Logical.Configure.md).

O cluster de banco de dados do Aurora PostgreSQL que é o editor designado também deve permitir o acesso ao slot de replicação. Para fazer isso, modifique o grupo de segurança associado à nuvem pública virtual (VPC) do cluster de banco de dados do Aurora PostgreSQL com base no serviço da Amazon VPC. Permita o acesso de entrada adicionando o grupo de segurança associado à VPC do assinante ao grupo de segurança do editor. Para obter mais informações, consulte [Controle o tráfego para recursos usando grupos de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) no *Guia do usuário da Amazon VPC*. 

Com essas etapas preliminares concluídas, você pode usar os comandos do PostgreSQL `CREATE PUBLICATION` no editor e `CREATE SUBSCRIPTION` no assinante, conforme detalhado no procedimento a seguir. 

**Como iniciar o processo de replicação lógica entre dois clusters de banco de dados do Aurora PostgreSQL.**

Essas etapas pressupõem que seus clusters de banco de dados do Aurora PostgreSQL tenham uma instância do gravador com um banco de dados para criar as tabelas de exemplo.

1. **No cluster de banco de dados do Aurora PostgreSQL do editor**

   1. Crie uma tabela usando a declaração SQL a seguir.

      ```
      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
      ```

   1. Insira dados no banco de dados publisher usando a seguinte instrução SQL.

      ```
      INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
      ```

   1. Verifique se os dados existem na tabela usando a declaração SQL a seguir.

      ```
      SELECT count(*) FROM LogicalReplicationTest;
      ```

   1. Crie uma publicação para essa tabela usando a declaração `CREATE PUBLICATION`, conforme explicado a seguir.

      ```
      CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
      ```

1. **No cluster de banco de dados do Aurora PostgreSQL do assinante**

   1. Crie a mesma tabela `LogicalReplicationTest` no assinante que você criou no editor, da forma a seguir.

      ```
      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
      ```

   1. Verifique se essa tabela está vazia.

      ```
      SELECT count(*) FROM LogicalReplicationTest;
      ```

   1. Crie uma assinatura para receber as alterações do editor. Você precisa usar os detalhes a seguir sobre o cluster de banco de dados do Aurora PostgreSQL do editor.
      + **host**: a instância de banco de dados do gravador do cluster de banco de dados do Aurora PostgreSQL do editor.
      + **port**: a porta na qual a instância de banco de dados do gravador está escutando. O padrão do PostgreSQL é 5432.
      + **dbname**: o nome do banco de dados.

      ```
      CREATE SUBSCRIPTION testsub CONNECTION 
         'host=publisher-cluster-writer-endpoint port=5432 dbname=db-name user=user password=password' 
         PUBLICATION testpub;
      ```
**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

      Depois da criação da assinatura, um slot da replicação lógica é criado no publisher.

   1. Para verificar neste exemplo se os dados iniciais são replicados no assinante, use a seguinte instrução SQL no banco de dados assinante.

      ```
      SELECT count(*) FROM LogicalReplicationTest;
      ```

Todas as alterações adicionais no publisher são replicadas para o assinante.

A replicação lógica afeta a performance. Recomendamos que você desative a replicação lógica após a conclusão das tarefas de replicação. 