

# Usar o utilitário de carregamento de dados do Aurora PostgreSQL Limitless Database
<a name="limitless-load.utility"></a>

O Aurora fornece um utilitário para carregar dados diretamente no Limitless Database a partir de um cluster de banco de dados do Aurora PostgreSQL ou de uma instância de banco de dados do RDS para PostgreSQL.

Execute as seguintes etapas para usar o utilitário de carregamento de dados:

1. [Pré-requisitos](#limitless-load.prereqs)

1. [Preparar o banco de dados de origem](#limitless-load.source)

1. [Preparar o banco de dados de destino](#limitless-load.destination)

1. [Criar as credenciais do banco de dados](#limitless-load.users)

1. Um dos seguintes:
   + [Configurar a autenticação do banco de dados e o acesso a recursos usando um script](limitless-load.script.md) (recomendado)
   + [Configurar a autenticação do banco de dados e o acesso a recursos manualmente](limitless-load.manual.md)

1. [Carregar dados de um cluster de banco de dados do Aurora PostgreSQL ou de uma instância de banco de dados do RDS para PostgreSQL](limitless-load.data.md)

## Limitações
<a name="limitless-load.limitations"></a>

O utilitário de carregamento de dados tem as seguintes limitações:
+ Os seguintes tipos de dados não são compatíveis: `enum`, `ARRAY`, `BOX`, `CIRCLE`, `LINE`, `LSEG`, `PATH`, `PG_LSN`, `PG_SNAPSHOT`, `POLYGON`, `TSQUERY`, `TSVECTOR` e `TXID_SNAPSHOT`.
+ Os zeros à esquerda (`0`) são removidos do tipo de dados `VARBIT` durante o carregamento.
+ A migração de dados falha quando há chaves estrangeiras nas tabelas de destino.
+ O utilitário Limitless Data permite as seguintes configurações de origem para clusters de banco de dados multi-AZ do Amazon RDS para PostgreSQL:
  + Instância principal
    + Modos permitidos: snapshot, snapshot\$1then\$1cdc.
  + Instância de réplica
    + Modo permitido: somente snapshot.
      + Requisito: hot\$1standby\$1feedback deve estar habilitado.
    + Não permitido: snapshot\$1then\$1cdc.

## Pré-requisitos
<a name="limitless-load.prereqs"></a>

O utilitário de carregamento de dados tem os seguintes pré-requisitos:
+ O banco de dados de origem usa o Aurora PostgreSQL ou o RDS para PostgreSQL versão 11.x e superior.
+ O banco de dados de origem está na mesma Conta da AWS e Região da AWS que o grupo de fragmentos de banco de dados de destino.
+ O cluster de banco de dados ou a instância de banco de dados de origem está no estado `available`.
+ As tabelas no banco de dados de origem e no banco de dados ilimitado têm os mesmos nomes de tabela, nomes de colunas e tipos de dados de coluna.
+ As tabelas de origem e destino têm chaves primárias que usam as mesmas colunas e ordens de colunas.
+ Você deve ter um ambiente para se conectar a um banco de dados ilimitado para executar comandos de carregamento de dados. Os comandos disponíveis são os seguintes:
  + `rds_aurora.limitless_data_load_start`
  + `rds_aurora.limitless_data_load_cancel`
+ Para CDC:
  + Tanto o banco de dados de origem quanto o grupo de fragmentos de banco de dados de destino devem usar o mesmo grupo de sub-rede de banco de dados, grupo de segurança de VPC e porta de banco de dados. Essas configurações são para conexões de rede com o banco de dados de origem e os roteadores no grupo de fragmentos de banco de dados.
  + Você deve habilitar a replicação lógica no banco de dados de origem. O usuário do banco de dados de origem deve ter privilégios para ler a replicação lógica.

## Preparar o banco de dados de origem
<a name="limitless-load.source"></a>

Para acessar o banco de dados de origem para carregamento de dados, você deve permitir o tráfego de rede de entrada para ele. Siga as etapas a seguir.

**Como permitir o tráfego de rede para o banco de dados de origem**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Navegue até a página **Grupos de segurança**.

1. Escolha o **ID do grupo de segurança** usado pelo cluster ou instância de banco de dados de origem.

   Por exemplo, o ID do grupo de segurança é `sg-056a84f1712b77926`.

1. Na guia **Regras de entrada**:

   1. Escolha **Editar regras de entrada**.

   1. Adicione uma nova regra de entrada para o cluster ou instância de banco de dados de origem:
      + Intervalo de portas: porta de banco de dados para o banco de dados de origem, geralmente `5432`
      + ID do grupo de segurança: `sg-056a84f1712b77926` neste exemplo  
![\[Adicione uma regra de entrada para o banco de dados de origem.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_inbound_rule.png)

1. Na guia **Regras de saída**:

   1. Escolha **Editar regras de saída**.

   1. Adicione uma nova regra de saída para o cluster ou instância de banco de dados de origem:
      + Porta do banco de dados: `All traffic` (inclui portas `0-65535`)
      + ID do grupo de segurança: `sg-056a84f1712b77926` neste exemplo  
![\[Adicione uma regra de saída para o banco de dados de origem.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_outbound_rule.png)

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon VPC em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Navegue até a página **ACLs de rede**.

1. Adicione a configuração padrão da ACL de rede conforme descrito em [ACL de rede padrão](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#default-network-acl).

## Preparar o banco de dados de destino
<a name="limitless-load.destination"></a>

Siga os procedimentos em [Criação de tabelas do Aurora PostgreSQL Limitless Database](limitless-creating.md) para criar as tabelas de destino no grupo de fragmentos de banco de dados.

Suas tabelas de destino devem ter os mesmos esquemas, nomes de tabela e chaves primárias das tabelas de origem.

## Criar as credenciais do banco de dados
<a name="limitless-load.users"></a>

É necessário criar usuários de banco de dados nos bancos de dados de origem e destino e conceder os privilégios necessários aos usuários. Para obter mais informações, consulte [CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html) e [GRANT](https://www.postgresql.org/docs/current/sql-grant.html) na documentação do PostgreSQL.

### Criar as credenciais do banco de dados de origem
<a name="limitless-load.users.source"></a>

O usuário do banco de dados de origem é passado no comando para iniciar o carregamento. Esse usuário deve ter privilégios para executar a replicação do banco de dados de origem.

1. Use o usuário principal do banco de dados (ou outro usuário com a função `rds_superuser`) para criar um usuário do banco de dados de origem com privilégios `LOGIN`.

   ```
   CREATE USER source_db_username WITH PASSWORD 'source_db_user_password';
   ```

1. Conceda a função `rds_superuser` ao usuário do banco de dados de origem.

   ```
   GRANT rds_superuser to source_db_username;
   ```

1. Se você estiver usando o modo `full_load_and_cdc`, conceda a função `rds_replication` ao usuário do banco de dados de origem. O perfil `rds_replication` concede permissões para gerenciar slots lógicos e transmitir dados utilizando slots lógicos.

   ```
   GRANT rds_replication to source_db_username;
   ```

### Criar as credenciais do banco de dados de destino
<a name="limitless-load.users.destination"></a>

O usuário do banco de dados de destino deve ter permissão para gravar nas tabelas de destino no grupo de fragmentos de banco de dados.

1. Use o usuário principal do banco de dados (ou outro usuário com a função `rds_superuser`) para criar um usuário do banco de dados de destino com privilégios `LOGIN`.

   ```
   CREATE USER destination_db_username WITH PASSWORD 'destination_db_user_password';
   ```

1. Conceda a função `rds_superuser` ao usuário do banco de dados de destino.

   ```
   GRANT rds_superuser to destination_db_username;
   ```