Migration vers Databases for PostgreSQL
Il existe diverses options pour faire migrer les données des bases de données PostgreSQL existantes vers IBM Cloud® Databases for PostgreSQL. Nous nous concentrons sur les options les plus simples et les plus efficaces. Avant de commencer, vous
devez installer PostgreSQL localement de manière à disposer des outils psql
et pg_dump
. Et bien que cela ne soit pas strictement nécessaire, l'interface de ligne de commande Cloud Databases facilite la connexion et
la restauration sur un nouveau déploiement Databases for PostgreSQL.
pg_dump
Sur votre base de données source, exécutez pg_dump
pour créer un fichier SQL, qui peut être utilisé pour recréer la base de données. Au minimum, pg_dump
utilise un nom d'hôte (option -h
), un numéro de port
(option -p
), un nom de base de données (option -d
), un nom d'utilisateur (option -U
) et un fichier (ou un nom de répertoire) (option -f
) dans lequel écrire le cliché.
Par exemple, la commande ci-après vide la base de données PostgreSQL "compose" qui est hébergée sur sl-eu-lon-2-portal.4.dblayer.com, port 17980, à l'aide de l'administrateur, et sauvegarde les résultats dans dump.sql
.
pg_dump -h sl-eu-lon-2-portal.4.dblayer.com -p 17980 -d compose -U admin -f dump.sql
La commande pg_dump
dispose de nombreuses options et il est recommandé de consulter la documentation officielle et la référence de la commande pour obtenir une vue plus complète de ses capacités.
Restauration de la sortie de pg_dump
La sortie de la commande pg_dump
peut ensuite être téléchargée dans un nouveau déploiement Databases for PostgreSQL. Comme la sortie est SQL, elle peut simplement être envoyée à la base de données via la commande psql
.
Nous vous recommandons d'effectuer les importations en tant qu'administrateur.
Voir la section Connexion avec psql
pour plus de détails sur la façon de se connecter en tant qu'administrateur en utilisant psql
.
Pour vous connecter à l'aide de la commande psql
, vous avez besoin de la chaîne de connexion de l'administrateur et du certificat TLS. Le certificat doit être décodé à partir de base64 et stocké en tant que fichier local arbitraire.
Pour importer le fichier dump.sql
précédemment créé dans un déploiement de base de données nommé example-psql
, la commande psql
peut être appelée avec -f dump.sql
en tant que paramètre. Le
paramètre indique à psql
de lire et d'exécuter les instructions SQL dans le fichier. La commande se présente comme suit :
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
Comme indiqué dans la rubrique Connexion avec psql
, le plug-in d'interface de ligne de commande Cloud Databases simplifie la connexion.
L'importation psql
précédente peut être effectuée comme suit :
ibmcloud cdb deployment-connections example-psql -s -- -f dump.sql
La commande utilise automatiquement le nom d'administrateur, si aucun utilisateur n'est spécifié. Elle vous demande également d'entrer le mot de passe. Le certificat TLS est automatiquement extrait et utilisé. Le paramètre -s
permet
de démarrer psql
(ou la commande qui a été configurée) une fois les détails établis à partir de l'API. Tout ce qui est indiqué après le paramètre --
est transmis à la commande.
Durant son exécution, le processus de restauration émet un certain nombre de messages décrivant les modifications qu'il apporte au déploiement de base de données.
Option de migration supplémentaire en utilisant pg_restore
Pour les utilisateurs qui se servent d'un fichier tar contenant les instructions SQL et les données de manière séparée, la commande pg_restore
peut être utilisée pour faire migrer vos données en plus des commandes psql
précédemment mentionnées. Vous trouverez un exemple de la commande 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