IBM Cloud Docs
Migrando para Databases for PostgreSQL

Migrando para Databases for PostgreSQL

Existem várias opções para migrar dados de bancos de dados existentes do PostgreSQL para o IBM Cloud® Databases for PostgreSQL. Focamos no método mais simples e mais efetivo. Para começar, é necessário que o PostgreSQL esteja instalado localmente para que você tenha as ferramentas psql e pg_dump. E, embora não estritamente necessário, a CLI do Cloud Databases facilita a conexão e a restauração para uma nova implementação do Databases for PostgreSQL.

pg_dump

No banco de dados de origem, execute pg_dump para criar um arquivo SQL, que pode ser usado para recriar o banco de dados. No mínimo, pg_dump usa um nome do host (sinalização -h), um número da porta (sinalização -p), um nome do banco de dados (sinalização -d), um nome do usuário (sinalização -U) e um arquivo (ou um nome de diretório) no qual gravar o dump (sinalização -f).

Por exemplo, o comando a seguir faz dump do banco de dados "compose" do PostgreSQL hospedado em sl-eu-lon-2-portal.4.dblayer.com, porta 17980, usando o usuário administrativo e salvando os resultados em dump.sql.

pg_dump -h sl-eu-lon-2-portal.4.dblayer.com -p 17980 -d compose -U admin -f dump.sql

O comando pg_dump tem muitas opções e é recomendável que você consulte a documentação oficial e a referência do comando para obter uma visão mais completa de seus recursos.

Restaurando a saída do pg_dump

A saída resultante de pg_dump pode, então, ser transferida por upload para uma nova implementação do Databases for PostgreSQL. Por ser SQL, a saída pode ser simplesmente enviada para o banco de dados por meio do comando psql. Recomendamos que as importações sejam executadas com o usuário administrativo.

Consulte Conectando-se ao psql para obter detalhes sobre como se conectar como administrador usando o psql. Para se conectar ao comando psql, são necessários a sequência de conexões do usuário administrativo e o certificado TLS. O certificado precisa ser decodificado por meio de Base64 e armazenado como um arquivo local arbitrário. Para importar o dump.sql criado anteriormente para uma implementação de banco de dados chamada example-psql, é possível chamar o comando psql usando -f dump.sql como parâmetro. O parâmetro informa ao psql que leia e execute as instruções SQL contidas no arquivo. O comando é semelhante ao seguinte:

PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt psql 'host=c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud port=32484 dbname=ibmclouddb user=admin sslmode=verify-full' -f dump.sql

Conforme observado nessa documentação de Conectando-se ao psql, o plug-in da CLI do Cloud Databases simplifica a conexão. A importação anterior de psql pode ser executada como:

ibmcloud cdb deployment-connections example-psql -s -- -f dump.sql

O comando usará o usuário administrativo automaticamente, se nenhum usuário for especificado. Ele também solicitará a senha de forma interativa. O certificado TLS é recuperado e usado automaticamente. O -s inicia o psql (ou seja qual for o comando configurado), uma vez que os detalhes são estabelecidos por meio da API. Qualquer coisa depois de -- é transmitido para o comando.

Embora o processo de restauração esteja em execução, ele emite várias mensagens sobre as mudanças que está fazendo na implementação do banco de dados.

Opção adicional de migração usando o pg_restore

Para os usuários com um arquivo tar contendo sql e dados separadamente, o comando pg_restore pode ser usado para migrar seus dados, além dos comandos psql observados anteriormente. Um exemplo do comando pg_restore é:

 PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt pg_restore -h c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud -p 32484 -U admin -F t -d ibmclouddb tarfile.tar