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