

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

# Transporte bancos de dados PostgreSQL entre duas instâncias de banco de dados Amazon RDS usando pg\_transport
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport"></a>

*Raunak Rishabh e Jitender Kumar, Amazon Web Services*

## Resumo
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-summary"></a>

Esse padrão descreve as etapas para migrar bancos de dados extremamente grandes entre duas instâncias de banco de dados Amazon Relational Database Service (Amazon RDS) para PostgreSQL usando a extensão **pg\_transport**. Esta extensão fornece um mecanismo de transporte físico para mover cada banco de dados. Ao fazer streaming dos arquivos do banco de dados com o mínimo de processamento, ele fornece um método extremamente rápido para migrar grandes bancos de dados entre instâncias de banco de dados com o mínimo de tempo de inatividade. Essa extensão usa um modelo pull, em que a instância do banco de dados de destino importa o banco de dados da instância de banco de dados de origem.

## Pré-requisitos e limitações
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-prereqs"></a>

**Pré-requisitos **
+ Ambas as instâncias de banco de dados devem executar a mesma versão principal do PostgreSQL.
+ O banco de dados não deve existir no destino. Caso contrário, ocorrerá uma falha no transporte.
+ Nenhuma extensão diferente de **pg\_transport** deve ser habilitada no banco de dados de origem.
+ Todos os objetos do banco de dados de origem devem estar no espaço de tabela padrão **pg\_default**.
+ O grupo de segurança da instância de banco de dados de origem deveria permitir tráfego da instância de banco de dados de destino.
+ Instale um cliente PostgreSQL, [como](https://www.postgresql.org/docs/11/app-psql.html) o psql, [PgAdmin](https://www.pgadmin.org/)ou para trabalhar com a instância de banco de dados PostgreSQL do Amazon RDS. Você pode instalar o cliente em seu sistema local ou usar uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Nesse padrão, usamos psql em uma EC2 instância.

**Limitações**
+ Você não pode transportar bancos de dados entre diferentes versões principais do Amazon RDS para PostgreSQL.
+ Os privilégios de acesso e a propriedade do banco de dados de origem não são transferidos para o banco de dados de destino.
+ Não é possível transportar bancos de dados em réplicas de leitura nem em instâncias pai de réplicas de leitura.
+ Não é possível usar os tipos de dados **reg** em nenhuma tabela de banco de dados que você planeja transportar com esse método.
+ É possível executar até 32 transportes totais ao mesmo tempo (inclusive importações e exportações) em uma instância de banco de dados.
+ Você não pode renomear nossas include/exclude tabelas. Tudo é migrado como está.

**Cuidado**
+ Faça backups antes de remover a extensão, pois a remoção da extensão também remove objetos dependentes e alguns dados essenciais para a operação do banco de dados.
+ Considere a classe da instância e os processos em execução em outros bancos de dados na instância de origem ao determinar o número de operadores e os valores `work_mem` para **pg\_transport**.
+ Quando o transporte é iniciado, todas as conexões no banco de dados de origem são encerradas e o banco de dados é colocado no modo somente leitura.

**nota**  
Quando o transporte está em execução em um banco de dados, ele não afeta os outros bancos de dados no mesmo servidor.** **

**Versões do produto**
+ Amazon RDS para PostgreSQL 10.10 e posterior e Amazon RDS para PostgreSQL 11.5 e posterior. Para obter as informações sobre a versão mais recente, consulte [Transporte de bancos de dados PostgreSQL entre instâncias de banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html) na documentação do Amazon RDS.

## Arquitetura
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-architecture"></a>

![Transporte de bancos de dados PostgreSQL entre instâncias de banco de dados Amazon RDS](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/d5fb7ea3-32b7-4602-b382-3cf5c075c7c9/images/aec4d8d2-37a8-4136-9042-f9667ac4aebb.png)


## Ferramentas
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-tools"></a>
+ **pg\_transport** fornece um mecanismo de transporte físico para mover cada banco de dados. Ao fazer streaming dos arquivos do banco de dados com o mínimo de processamento, o transporte físico move os dados muito mais rapidamente que os processos tradicionais de despejo e carregamento e leva um tempo de inatividade mínimo. Os bancos de dados PostgreSQL transportáveis usam um modelo pull, em que a instância do banco de dados de destino importa o banco de dados da instância de banco de dados de origem. Você instala essa extensão em suas instâncias de banco de dados ao preparar os ambientes de origem e de destino, conforme explicado nesse padrão.
+ O [psql](https://www.postgresql.org/docs/11/app-psql.html) permite que você se conecte e trabalhe com suas instâncias de banco de dados PostgreSQL. Para instalar o **psql** em seu sistema, consulte a página de downloads do [PostgreSQL.](https://www.postgresql.org/download/)

## Épicos
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-epics"></a>

### Crie o grupo de parâmetros de destino
<a name="create-the-target-parameter-group"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um grupo de parâmetros para o sistema de destino. | Especifique um nome de grupo que o identifique como um grupo de parâmetros de destino; por exemplo, `pgtarget-param-group`. Para obter instruções, consulte a documentação do [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating). | DBA | 
| Modificar os parâmetros no grupo de parâmetros. | Defina os seguintes parâmetros:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)<br />Para obter mais informações sobre estes parâmetros, consulte a [documentação do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html). | DBA | 

### Criar o grupo de parâmetros de origem
<a name="create-the-source-parameter-group"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um grupo de parâmetros para o sistema de origem. | Especifique um nome de grupo que o identifique como um grupo de parâmetros de origem; por exemplo, `pgsource-param-group`. Para obter instruções, consulte a documentação do [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating). | DBA | 
| Modificar os parâmetros no grupo de parâmetros. | Defina os seguintes parâmetros:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)<br />Para obter mais informações sobre estes parâmetros, consulte a [documentação do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html). | DBA | 

### Prepare o ambiente de destino
<a name="prepare-the-target-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma nova instância de banco de dados Amazon RDS para PostgreSQL para a qual transportar seu banco de dados de origem. | Determine a classe da instância e a versão do PostgreSQL com base nos requisitos da sua empresa. | DBA, administrador de sistemas, arquiteto de banco de dados | 
| Modifique o grupo de segurança do destino para permitir conexões na porta da instância de banco de dados a partir da EC2 instância. | A porta padrão para a instância PostgreSQL é 5432. Se você estiver usando outra porta, as conexões com essa porta devem estar abertas para a EC2 instância. | DBA, administrador de sistemas | 
| Modifique a instância e atribua o novo grupo de parâmetros de destino. | Por exemplo, .`pgtarget-param-group` | DBA | 
| Reiniciar a instância de banco de dados do Amazon RDS.  | Os parâmetros `shared_preload_libraries` e `max_worker_processes` são parâmetros estáticos e exigem a reinicialização da instância. | DBA, administrador de sistemas | 
| Conecte-se ao banco de dados a partir da EC2 instância usando psql. | Use o comando: <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | DBA | 
| Crie a extensão pg\_transport. | Execute a consulta a seguir como usuário com a função `rds_superuser`:<pre>create extension pg_transport;</pre> | DBA | 

### Prepare o ambiente de destino
<a name="prepare-the-source-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Modifique o grupo de segurança da origem para permitir conexões na porta da instância de banco de dados da instância Amazon e da EC2 instância de banco de dados de destino | A porta padrão para a instância PostgreSQL é 5432. Se você estiver usando outra porta, as conexões com essa porta devem estar abertas para a EC2 instância. | DBA, administrador de sistemas | 
| Modifique a instância e atribua o novo grupo de parâmetros de origem. | Por exemplo, .`pgsource-param-group` | DBA | 
| Reinicie a origem de banco de dados do Amazon RDS.  | Os parâmetros `shared_preload_libraries` e `max_worker_processes` são parâmetros estáticos e exigem a reinicialização da instância. | DBA | 
| Conecte-se ao banco de dados a partir da EC2 instância usando psql. | Use o comando: <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | DBA | 
| Crie a extensão pg\_transport e remova todas as outras extensões dos bancos de dados a serem transportados. | O transporte falhará se houver alguma extensão diferente de **pg\_transport** instalada no banco de dados de origem. Esse comando deve ser executado por um usuário com a função `rds_superuser`. | DBA | 

### Execute o transporte
<a name="perform-the-transport"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute uma simulação. | Use a função `transport.import_from_server` para executar uma simulação primeiro:<pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', 'true');</pre><br />O último parâmetro dessa função (determinado como `true`) define a operação a seco. <br />Essa função exibe todos os erros que você veria ao executar o transporte principal. Resolva os erros antes de executar o transporte principal.  | DBA | 
| Se a execução a seco for bem-sucedida, inicie o transporte do banco de dados. | Execute a função `transport.import_from_server` para realizar o transporte. Ele se conecta à fonte e importa os dados. <pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', false);</pre><br />O último parâmetro dessa função (definido como `false`) indica que isso não é um ensaio. | DBA | 
| Execute as etapas pós-transporte. | Depois que o transporte do banco de dados estiver concluído:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html) | DBA | 

## Recursos relacionados
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-resources"></a>
+ [Documentação do Amazon RDS](https://docs.aws.amazon.com/rds/)
+ [documentação pg\_transport](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#PostgreSQL.TransportableDB.Setup)
+ [Migração de bancos de dados usando bancos de dados transportáveis PostgreSQL do RDS](https://aws.amazon.com/blogs/database/migrating-databases-using-rds-postgresql-transportable-databases/) (postagem do blog)
+ [Downloads do PostgreSQL](https://www.postgresql.org/download/linux/redhat/)
+ [utilitário psql](https://www.postgresql.org/docs/11/app-psql.html)
+ [Criação de um parameter group de banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Creating)
+ [Modificar parâmetros em um grupo de parâmetros de banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Modifying)
+ [Downloads do PostgreSQL](https://www.postgresql.org/download/)