IBM Cloud Docs
Migración a Databases for PostgreSQL

Migración a Databases for PostgreSQL

Existen diversas opciones para migrar datos de bases de datos PostgreSQL existentes a IBM Cloud® Databases for PostgreSQL. Nos centraremos en la más simple y efectiva. Para empezar, necesitará que PostgreSQL esté instalado localmente para disponer de las herramientas psql y pg_dump. Y, mientras no sea estrictamente necesario, la CLI de Cloud Databases facilitará la conexión y la restauración en un nuevo despliegue de Databases for PostgreSQL.

pg_dump

En la base de datos de origen, ejecute pg_dump para crear un archivo SQL que se puede utilizar para volver a crear la base de datos. Como mínimo, pg_dump toma un nombre de host (distintivo -h), número de puerto (distintivo -p), nombre de base de datos (distintivo -d), nombre de usuario (distintivo -U) y un archivo (o nombre de directorio) para escribir el volcado en (distintivo -f).

Por ejemplo, el mandato siguiente vuelca la base de datos "compose" de PostgreSQL que está alojada en sl-eu-lon-2-portal.4.dblayer.com, puerto 17980, utilizando el usuario admin, y guarda los resultados en dump.sql.

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

El mandato pg_dump tiene muchas opciones y se recomienda que consulte la documentación oficial y la referencia de mandatos para obtener una vista más completa de sus prestaciones.

Restauración de la salida de pg_dump

La salida resultante de pg_dump se puede cargar luego en un nuevo despliegue de Databases for PostgreSQL. Puesto que la salida es SQL, simplemente se puede enviar a la base de datos a través del mandato psql. Se recomienda que las importaciones las lleve a cabo el usuario administrador.

Consulte Conexión con psql para obtener detalles sobre cómo conectarse como administrador utilizando psql. Para conectarse con el mandato psql, necesitará la serie de conexión del usuario administrador y el certificado TLS. Es necesario decodificar el certificado de base64 y almacenarlo como un archivo local arbitrario. Para importar el dump.sql creado anteriormente en un despliegue de base de datos denominado example-psql, el mandato psql se puede llamar con -f dump.sql como parámetro. El parámetro indica a psql que lea y ejecute las sentencias de SQL en el archivo. El mandato tiene un aspecto similar al siguiente:

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

Tal como se indica en la documentación de Conexión con psql, el plugin de CLI de Cloud Databases simplifica la conexión. La importación de psql anterior se puede realizar como:

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

El mandato utiliza de forma automática el usuario admin, si no se especifica ningún usuario. También solicita la contraseña de forma interactiva. El certificado TLS se recupera y se utiliza automáticamente. El parámetro -s inicia psql (o el mandato que se haya configurado) una vez que se hayan establecido los detalles de la API. Se pasará al mandato cualquier cosa que haya tras el --.

Mientras se ejecuta el proceso de restauración, emite una serie de mensajes acerca de los cambios que se están realizando en el despliegue de la base de datos.

Opción de migración adicional utilizando pg_restore

Para los usuarios que tengan un archivo tar que contenga sql y datos de forma independiente, se puede utilizar el mandato pg_restore para migrar los datos además de los mandatos psql indicados anteriormente. Un ejemplo del mandato pg_restore es:

 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