For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/databases/postgresql-tuto-migrate-ecdb.md.

Migrer une base de données on-premises vers Public Cloud Databases for PostgreSQL

Voir en Markdown

Découvrez comment migrer une instance de base de données PostgreSQL on-premises vers Public Cloud Databases for PostgreSQL

Objectif

Ce guide détaille une procédure permettant de migrer une instance PostgreSQL exécutée on-premises vers OVHcloud Public Cloud Databases for PostgreSQL.

Prérequis

  • Un projet Public Cloud dans votre compte OVHcloud
  • Une base de données PostgreSQL exécutée on-premises (l'instance "source")
  • Une base de données PostgreSQL exécutée sur OVHcloud Public Cloud Databases (l'instance "cible")
  • Un client PostgreSQL capable de se connecter aux deux instances de base de données, source et cible.
  • Un accès à l'

Ces guides peuvent vous aider à répondre à ces prérequis :

Éléments à prendre en compte

  • Ce document décrit un chemin de migration hors ligne pour votre base de données, ce qui signifie que vous devrez suspendre toutes les écritures de votre application pendant toute la durée de la migration. Assurez-vous de planifier une interruption de service suffisante pour réaliser l'ensemble des tâches de migration.
  • Assurez-vous que les versions de PostgreSQL source et destination correspondent.
  • Assurez-vous de disposer d'une bande passante suffisante entre la machine cliente et les bases de données source et destination.
  • Assurez-vous de choisir un plan de base de données offrant des ressources de calcul, de stockage et de mémoire adaptées.

Procédure

Étape 1 : arrêter les écritures sur la base de données source

Assurez-vous que les applications clientes arrêtent toute activité d'écriture côté base de données source. Selon votre système, cela peut impliquer d'informer vos clients à l'avance d'une indisponibilité, d'arrêter d'autres applications en amont, ou d'autres tâches administratives, opérationnelles ou de développement.

Étape 2 : exporter le schéma

Utilisez la commande pg_dump pour exporter le schéma de la base de données vers la machine cliente, sous forme de fichier SQL en texte brut :

$ pg_dump --file "path/to/dump.sql" --host "xxxxxxxxxxx.prm.clouddb.ovh.net" --port "<write port>" \
    --username "postgres" --verbose --format=p --schema-only "database-name"

Étape 3 : exporter les données

Utilisez la commande pg_dump pour exporter les données de la base de données vers la machine cliente, dans un fichier archive .tar :

$ pg_dump --file "path/to/dump.tar" --host "xxxxxxxxxxx.prm.clouddb.ovh.net" --port "<write port>" \
    --no-owner --username "postgres" --no-password --verbose --format=t --blobs --encoding "UTF8"

L'export de l'ensemble des données peut prendre du temps en fonction de la taille de la base de données et de la bande passante disponible.

Étape 4 : modifier le schéma

Comme vous n'aurez pas accès au privilège super-utilisateur (généralement nommé postgres) sur la base de données de destination, vous devez remplacer les références à ce rôle dans le fichier de dump du schéma par un autre rôle, soit avnadmin, l'utilisateur administrateur initial de votre base de données managée, soit un autre utilisateur que vous auriez créé au préalable.

Ouvrez le fichier de dump du schéma avec un éditeur de texte et recherchez des lignes telles que :

ALTER TABLE public.<table> OWNER TO postgres;

Modifiez-la pour qu'elle devienne :

ALTER TABLE public.<table> OWNER TO avnadmin;

Ensuite, recherchez dans le fichier de dump du schéma tout ce qui n'est pas compatible avec l'offre OVHcloud Public Cloud Databases. Consultez PostgreSQL - Fonctionnalités et limitations pour découvrir ce que prend en charge la base de données de destination.

Portez une attention particulière à tout ce qui concerne les extensions, les utilisateurs, les rôles et les schémas. Par exemple, si vous avez installé des extensions tierces, vous devrez les supprimer, car les extensions doivent désormais être gérées différemment (consultez la liste des extensions prises en charge ici : PostgreSQL - Extensions disponibles).

Étape 5 : importer le schéma

Utilisez la commande psql suivante pour restaurer le schéma sur la destination :

$ psql -v ON_ERROR_STOP=1 -h postgresql-xxxxxxxx.database.cloud.ovh.net -p <port> \
    -d defaultdb -U avnadmin < path/to/the/dump.sql

Cette étape devrait se terminer rapidement.

Étape 6 : vérifier l'import du schéma

Connectez-vous à votre service de base de données pour vérifier que la restauration du schéma s'est terminée avec succès :

$ psql "postgres://`<username>`:<password>@<hostname>:<port>/defaultdb?sslmode=require"

Vérifiez la ou les tables :

defaultdb=> \dt

Vérifiez le schéma :

defaultdb=> \d <tablename>
defaultdb=> select * from information_schema.columns;

Étape 7 : importer les données

Utilisez la commande pg_restore pour restaurer les données :

$ pg_restore -d defaultdb -h <postgresql-xxxxxxxxx.database.cloud.ovh.net> -p <port> \
     --no-owner -U avnadmin --data-only path/to/the/dump.tar -v

Comme pour l'étape d'export des données et selon la taille du jeu de données et la bande passante disponible, cette opération peut prendre un certain temps.
Vous pouvez surveiller l'activité disque et réseau depuis la section Métriques de la page du service de base de données dans votre :

Onglet Métriques

Voyez, par exemple, l'utilisation du disque :

Métriques - Disque

ou le réseau entrant :

Métriques - Réseau

Étape 8 : vérifier l'import des données

Vous pouvez vérifier que les données ont été migrées avec succès en interrogeant la base de données de destination, par exemple :

defaultdb=> select pg_size_pretty(pg_total_relation_size('<tablename>'));
defaultdb=> select count(*) from <tablename>;

Étape 9 : reprendre les opérations avec la base de données de destination

Une fois que vous avez vérifié que la migration de la base de données s'est déroulée avec succès, mettez à jour les applications clientes pour qu'elles se connectent à la base de données de destination. Vous pouvez maintenant reprendre vos opérations normales.

Aller plus loin

Visitez notre chaîne Discord dédiée : https://discord.gg/ovhcloud. Posez vos questions, faites-nous part de vos commentaires et interagissez directement avec l’équipe qui développe nos services de bases de données.

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Rejoignez notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?