Transportar um banco de dados PostgreSQL para o destino a partir da origem - Amazon Relational Database Service

Transportar um banco de dados PostgreSQL para o destino a partir da origem

Depois de concluir o processo descrito em Configurar o transporte de um banco de dados PostgreSQL, você pode iniciar o transporte. Para fazer isso, execute a função transport.import_from_server na instância de banco de dados de destino. Na sintaxe a seguir, você pode encontrar os parâmetros da função.

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);

O valor false mostrado no exemplo diz à função que esta não é uma simulação. Para testar sua configuração de transporte, você pode especificar true para dry_run quando você chama a função, conforme mostrado a seguir:

postgres=> SELECT transport.import_from_server( 'docs-lab-source-db.666666666666aws-region.rds.amazonaws.com', 5432, 'postgres', '********', 'labdb', '******', true); INFO: Starting dry-run of import of database "labdb". INFO: Created connections to remote database (took 0.03 seconds). INFO: Checked remote cluster compatibility (took 0.05 seconds). INFO: Dry-run complete (took 0.08 seconds total). import_from_server -------------------- (1 row)

As linhas INFO são emitidas porque o parâmetro pg_transport.timing está definido como seu valor padrão, true. Defina dry_run para false quando você executa o comando e o banco de dados de origem é importado para o destino, conforme mostrado a seguir:

INFO: Starting import of database "labdb". INFO: Created connections to remote database (took 0.02 seconds). INFO: Marked remote database as read only (took 0.13 seconds). INFO: Checked remote cluster compatibility (took 0.03 seconds). INFO: Signaled creation of PITR blackout window (took 2.01 seconds). INFO: Applied remote database schema pre-data (took 0.50 seconds). INFO: Created connections to local cluster (took 0.01 seconds). INFO: Locked down destination database (took 0.00 seconds). INFO: Completed transfer of database files (took 0.24 seconds). INFO: Completed clean up (took 1.02 seconds). INFO: Physical transport complete (took 3.97 seconds total). import_from_server -------------------- (1 row)

Esta função requer que você forneça senhas de usuário do banco de dados. Portanto, recomendamos que você altere as senhas das funções de usuário usadas após a conclusão do transporte. Ou você pode usar variáveis de ligação do SQL para criar funções de usuário temporárias. Use essas funções temporárias para o transporte e descarte as funções posteriormente.

Quando o transporte não for bem-sucedido, talvez você veja uma mensagem de erro semelhante à seguinte:

pg_transport.num_workers=8 25% of files transported failed to download file data

A mensagem de erro “falha ao baixar dados do arquivo” indica que o número de processos de trabalho não está definido corretamente para o tamanho do banco de dados. Talvez seja necessário aumentar ou diminuir o valor definido para pg_transport.num_workers. Cada falha informa a porcentagem de conclusão, para que você possa ver o impacto de suas alterações. Por exemplo, alterar a configuração de 8 para 4 em um caso resultou no seguinte:

pg_transport.num_workers=4 75% of files transported failed to download file data

Lembre-se de que o parâmetro max_worker_processes também é levado em consideração durante o processo de transporte. Em outras palavras, talvez seja necessário modificar pg_transport.num_workers e max_worker_processes para transportar o banco de dados com êxito. O exemplo mostrado finalmente funcionou quando pg_transport.num_workers foi definido como 2:

pg_transport.num_workers=2 100% of files transported

Para obter mais informações sobre a função transport.import_from_server seus respectivos parâmetros de configuração, consulte Referência de funções de bancos de dados transportáveis.