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 comando pg_dump tiene muchas opciones y se recomienda consulte la documentación oficial y referencia de comando para una visión más completa de sus capacidades.
El uso de pg_dumpall causará problemas de permisos, ya que intenta incluir tablas del sistema en la operación, lo cual no está soportado. Como se ha documentado, utilice pg_dump y especifique las tablas que son específicas del usuario.
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 mediante 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