PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Principaux outils Open Source pour les migrations PostgreSQL

La migration de bases de données est le processus de migration de données d'une ou plusieurs bases de données sources vers une ou plusieurs bases de données cibles à l'aide d'un service ou d'un outil. Il existe différents types de migration. Vous pouvez migrer d'une technologie vers une autre, vers un autre datacenter ou vers le cloud, ou même au même endroit et même technologie vers une autre machine. Le meilleur outil pour une migration PostgreSQL dépend du type de migration et des exigences telles que la disponibilité ou la tolérance aux temps d'arrêt, et il est parfois difficile de trouver le meilleur outil pour faire le travail.

Dans ce blog, nous mentionnerons quelques outils open-source pour les migrations PostgreSQL avec un bref aperçu de chaque option.

Outils de migration de sauvegarde et de restauration

Cela pourrait être le moyen le plus simple d'effectuer une migration de données, mais aussi le plus lent en termes d'objectif de temps de récupération (RTO). L'utilisation de cette méthode signifie que vous effectuerez une sauvegarde de votre base de données actuelle, très probablement une sauvegarde logique si vous souhaitez la restaurer dans une version ou une infrastructure différente, copier le vidage et le restaurer sur le nouveau serveur. Selon la quantité de données, cela peut prendre beaucoup de temps, mais c'est la méthode de base pour migrer votre base de données. Voyons quelques outils pour cela.

pgdump/pgdumpall

pg_dump est un utilitaire pour sauvegarder une seule base de données PostgreSQL. Il effectue des sauvegardes cohérentes même si la base de données est utilisée simultanément, car il ne bloque pas les autres utilisateurs. Pour sauvegarder un cluster entier ou pour sauvegarder des objets globaux communs à toutes les bases de données d'un cluster (tels que des rôles et des espaces de table), vous devez utiliser pg_dumpall à la place.

Les vidages peuvent être produits dans des formats de script ou de fichier d'archive. Les vidages de script sont des fichiers en texte brut contenant les commandes SQL requises pour reconstruire la base de données dans l'état dans lequel elle se trouvait au moment de son enregistrement. Il peut être utilisé pour reconstruire la base de données sur d'autres machines, d'autres architectures ou même sur d'autres produits de base de données SQL.

pg_basebackup

pg_basebackup est utilisé pour effectuer une sauvegarde de base d'un cluster de bases de données PostgreSQL en cours d'exécution. La sauvegarde est effectuée sans affecter les autres clients de base de données et peut être utilisée à la fois pour PITR (Point-In-Time-Recovery) et comme point de départ d'un serveur de secours Streaming Replication. Il fait une copie exacte des fichiers du cluster de bases de données tout en s'assurant que le serveur est automatiquement mis en et hors mode de sauvegarde. Les sauvegardes sont toujours effectuées sur l'ensemble du cluster de bases de données ; il n'est pas possible de sauvegarder des bases de données individuelles ou des objets de base de données.

pgBackRest

pgBackRest est un outil de sauvegarde open source qui crée des sauvegardes physiques avec quelques améliorations par rapport à l'outil classique pg_basebackup. Vous pouvez utiliser pgBackRest pour effectuer une copie initiale de la base de données pour la réplication en continu en utilisant une sauvegarde existante, ou vous pouvez utiliser l'option delta pour reconstruire un ancien serveur de secours.

Certaines des fonctionnalités les plus importantes de pgBackRest sont :

  • Sauvegarde et restauration parallèles
  • Opération locale ou à distance
  • Sauvegardes complètes, incrémentielles et différentielles
  • Rotation des sauvegardes et expiration des archives
  • Vérification de l'intégrité de la sauvegarde
  • Reprendre la sauvegarde
  • Restauration delta
  • Chiffrement

Outils de migration PostgreSQL

Au lieu d'utiliser un outil de sauvegarde, il existe différents utilitaires pour effectuer cette migration plus rapidement, avec différentes méthodes. Il peut utiliser une approche ETL, ou même configurer la réplication entre différentes technologies de base de données en utilisant le même concept d'extraction - transformation - chargement. Voyons quelques-uns de ces outils.

pg_chameleon

pg_chameleon est un système de réplique MySQL vers PostgreSQL. Il peut se connecter au protocole de réplication MySQL et répliquer les modifications de données dans PostgreSQL. Que l'utilisateur ait besoin de configurer une réplique permanente entre MySQL et PostgreSQL, ou d'effectuer une migration de moteur, pg_chameleon est une bonne option pour la tâche.

Les principales fonctionnalités sont :

  • Lire à partir de plusieurs schémas MySQL et les restaurer dans une base de données PostgreSQL cible
  • Configurer PostgreSQL pour qu'il agisse en tant qu'esclave MySQL
  • Support DDL de base (CREATE/DROP/ALTER TABLE, DROP PRIMARY KEY/TRUNCATE, RENAME)
  • Les tables qui génèrent des erreurs sont automatiquement exclues du réplica
  • Possibilité d'actualiser des tables ou des schémas uniques
  • Détacher le réplica de MySQL pour la prise en charge de la migration
  • Remplacer le type de données
  • Processus init_replica démonisé
  • Processus de réplique démonisé avec deux sous-processus distincts, un pour la lecture et un pour la relecture

pgloader

pgloader charge les données de diverses sources dans PostgreSQL. Il peut transformer les données qu'il lit à la volée et soumettre du SQL brut avant et après le chargement. Il utilise le protocole COPY PostgreSQL pour diffuser les données sur le serveur et gère les erreurs en remplissant une paire de fichiers rejet.dat et rejet.log.

Grâce à la possibilité de charger des données directement à partir d'une source de base de données, pgloader prend également en charge les migrations d'autres produits vers PostgreSQL. Dans ce mode de fonctionnement, pgloader gère à la fois les parties schéma et données de la migration, en une seule commande sans pilote, permettant d'implémenter la migration continue.

Les principales fonctionnalités sont :

  • De nombreux formats source pris en charge, tels que les fichiers CSV, db3 et IBM IXF
  • Transformation de données à la volée
  • Projections plein champ
  • Lecture à partir de fichiers compressés (zip, tar et gzip)
  • Prise en charge HTTP(S)
  • Découverte du schéma cible
  • En cas d'erreur, arrêter/reprendre les options suivantes
  • Commandes pré/post SQL
  • Migration en une seule commande
  • Découverte de schéma
  • Règles de casting définies par l'utilisateur
  • Migrations partielles incluant/excluant des tables
  • Schéma ou données uniquement
  • Vues matérialisées ou réécriture de schéma à la volée
  • Migration continue

Ora2Pg

Ora2Pg est un outil gratuit utilisé pour migrer une base de données Oracle ou MySQL vers un schéma compatible PostgreSQL. Il connecte votre base de données actuelle, l'analyse et extrait sa structure ou ses données, puis génère des scripts SQL que vous pouvez charger dans votre base de données PostgreSQL.

Les principales fonctionnalités sont :

  • Exporter le schéma complet de la base de données (tables, vues, séquences, index), avec des contraintes uniques, primaires, de clé étrangère et de vérification
  • Exporter les autorisations/privilèges pour les utilisateurs et les groupes
  • Exporter la plage/liste des partitions et sous-partitions
  • Exporter une sélection de table (en spécifiant les noms de table).
  • Exporter des fonctions prédéfinies, des déclencheurs, des procédures, des packages et des corps de package
  • Exporter des données complètes ou suivre une clause WHERE
  • Prise en charge complète de l'objet Oracle BLOB en tant que PG BYTEA
  • Exporter des vues Oracle sous forme de tables PG
  • Exporter des types définis par l'utilisateur Oracle
  • Fournir une conversion automatique de base du code PLSQL vers PLPGSQL
  • Exporter des tables Oracle en tant que tables de wrapper de données étrangères
  • Exporter la vue matérialisée
  • Afficher un rapport détaillé du contenu d'une base de données Oracle
  • Estimation des coûts de migration d'une base de données Oracle
  • Évaluation du niveau de difficulté de migration d'une base de données Oracle
  • Évaluation des coûts de migration du code PL/SQL à partir d'un fichier
  • Évaluation des coûts de migration des requêtes Oracle SQL stockées dans un fichier
  • Générer des fichiers XML ktr à utiliser avec Penthalo Data Integrator (Kettle)
  • Exporter le localisateur Oracle et les géométries spatiales dans PostGis
  • Exporter DBLINK en tant que Oracle FDW
  • Exporter des SYNONYMES sous forme de vues
  • Exporter DIRECTORY en tant que table ou répertoire externe pour l'extension external_file
  • Exportation MySQL complète comme la base de données Oracle

Il y a plus d'options ETL disponibles, comme Pentaho ou Talen, mais celles-ci sont plus orientées vers l'intégration ou la gestion des données que la migration, nous ne les décrirons donc pas ici pour éviter un long article de blog. Vous pouvez trouver plus d'informations ici.

Réplication logique PostgreSQL pour les migrations

La réplication logique est une méthode de réplication des objets de données et de leurs modifications, basée sur leur identité de réplication (généralement une clé primaire). Il est basé sur un mode de publication et d'abonnement, où un ou plusieurs abonnés s'abonnent à une ou plusieurs publications sur un nœud d'éditeur.

Une publication est un ensemble de modifications générées à partir d'une table ou d'un groupe de tables (également appelé ensemble de réplication). Le nœud où une publication est définie est appelé éditeur. Un abonnement est le côté aval de la réplication logique. Le nœud où un abonnement est défini est appelé l'abonné, et il définit la connexion à une autre base de données et un ensemble de publications (une ou plusieurs) auxquelles il souhaite s'abonner. Les abonnés extraient les données des publications auxquelles ils sont abonnés.

Cette méthode peut être utilisée pour migrer ou mettre à niveau votre base de données PostgreSQL.

Pour plus d'informations, vous pouvez vous référer au billet de blog correspondant sur la mise à niveau de PostgreSQL sans aucun temps d'arrêt.

Conclusion

Les migrations sont une tâche difficile et risquée, car vous déplacez ou transformez des données d'une (ou plusieurs) source vers une cible (ou plusieurs), et c'est encore pire si votre cible est un moteur différent. Il vous faudra donc un bon plan, avec des étapes détaillées, et bien sûr, un environnement de test pour tester toutes les étapes de la migration. Dans ce blog, nous avons mentionné quelques outils pour vous aider dans cette tâche, et le meilleur choix dépendra de vos exigences concernant la disponibilité de votre système.