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

Principaux outils Open Source pour les migrations MySQL et MariaDB

Les grandes organisations qui utilisent des plates-formes de base de données MySQL ou MariaDB sont souvent confrontées à la nécessité d'effectuer une migration de base de données d'un endroit à un autre. Quelle que soit la plate-forme, le type de logiciel de base de données (comme de RDBMS à NoSQL ou NoSQL retournant à RDBMS), ou s'il s'agit simplement d'une migration de données, effectuer une migration représente une énorme quantité de travail et de coûts.

Une migration de base de données impliquera toujours le processus de migration des données d'une ou plusieurs bases de données source vers une ou plusieurs bases de données cible. Cela peut impliquer un service de migration de base de données ou un ensemble d'outils composites que les ingénieurs ont construits pour créer un service et l'adapter à ce type de problème.

On s'attend à ce qu'une migration de base de données ne signifie pas que la plate-forme de base de données source finira par devenir sa plate-forme cible exactement comme la source d'origine. Une fois la migration terminée, le jeu de données des bases de données cibles pourrait éventuellement être restructuré. Le plus important, une fois la migration terminée, est que les clients accédant à la base de données soient redirigés vers les nouvelles bases de données source. La nouvelle base de données source doit fournir la copie exacte des données de la source, et sans impact sur les performances susceptible d'avoir un impact sur l'expérience utilisateur globale.

Déplacer vos données d'une plate-forme vers la plate-forme de destination cible est une tâche énorme à accomplir. C'est ce que couvre une migration de base de données lorsqu'une organisation ou une entreprise décide d'éteindre sa lumière sur la plate-forme actuelle pour de nombreuses raisons. Les raisons courantes de la migration des données sont liées à la rentabilité de la plate-forme de destination cible ou à sa flexibilité lors du déploiement et de l'évolutivité. Bien que la plate-forme actuelle hébergeant les données de production actuelles entraîne des coûts supplémentaires pour ses mises à niveau et son évolutivité, elle est tout simplement fastidieuse lors du déploiement de petites modifications qui peuvent en fait être déployées dans une plate-forme de microservices.

Dans ce blog, nous allons mettre l'accent sur les meilleurs outils open source que vous pouvez utiliser pour les migrations MySQL et MariaDB sur une migration de base de données plus homogène.

Outils de sauvegarde pour la migration des données

Le chemin le plus simple à utiliser lors de la migration consiste à utiliser des outils de sauvegarde de base de données. Nous verrons quels sont ces outils et comment vous pouvez les utiliser pendant la migration.

mysqldump/mysqlpump

Cet outil est l'un des utilitaires les plus connus pour MySQL ou MariaDB qu'un administrateur de base de données ou un administrateur système utilisera pour migrer une base de données complète ou une copie partielle de la base de données. Pour les administrateurs de base de données qui ne sont pas familiers avec MySQL/MariaDB, cet outil vous permettra de créer une copie de sauvegarde qui générera une copie logique des données que vous pourrez vider sur la base de données cible.

Une configuration courante avec l'utilisation de cet outil est que, chaque fois qu'une base de données cible est située ailleurs et est hébergée sur une plate-forme différente de la source, la cible agit comme un esclave ou une réplique. L'utilisation de mysqldump couramment invoquée avec --single-transaction sur un système occupé, et avec --master-data vous fournira les coordonnées pour configurer un esclave sur la base de données cible qui sera utilisée comme hôte pour la migration des données. Une alternative à mysqldump est également mysqlpump mais avec une fonctionnalité moindre mais peut faire un traitement parallèle des bases de données et des objets dans les bases de données, pour accélérer le processus de vidage. L'inconvénient est qu'avec mysqlpump, vous ne pouvez pas utiliser d'option telle que --master-data, ce qui est très utile si vous souhaitez créer une réplique qui sera utilisée comme destination cible pour la migration de la base de données.

mysqlpump est avantageux si vos données sont plutôt inactives ou sont mises en mode maintenance de sorte qu'aucune écriture traitée ou modification en cours dans la base de données source. Il est de plus en plus rapide par rapport à mysqldump.

mondumper/monchargeur 

mydumper/myloader est un outil très astucieux et efficace que vous pouvez utiliser pour la sauvegarde logique, en particulier pour importer des données en masse avec une vitesse de traitement plus rapide car il offre le parallélisme, la capacité d'envoyer des données par morceaux, prend en charge le seuil et le contrôle évaluer le nombre de threads, de lignes, la taille de l'instruction et compresser le résultat. Il génère ou inclut un fichier journal binaire et des positions de journal, ce qui est très utile si vous configurez la plate-forme de destination cible pour qu'elle agisse comme une réplique de l'environnement source et de production actuel.

Basiquement, mydumper est le binaire et la commande que vous devez invoquer via la ligne de commande pour créer la sauvegarde logique. Alors que myloader est le binaire et la commande que vous devez utiliser lors du chargement des données vers la destination cible souhaitée. Sa flexibilité vous permet de gérer le rythme souhaité lors du traitement des actions, qu'il s'agisse de créer une sauvegarde ou de charger les données. En utilisant mydumper, vous pouvez également créer une sauvegarde complète ou juste une copie de sauvegarde partielle de votre base de données source. Ceci est très utile si vous avez besoin de données ou d'un schéma volumineux que vous souhaitez éloigner de l'hôte de base de données actuel et le déplacer légèrement vers une autre destination cible tout en commençant à configurer de nouvelles partitions de base de données. Cela peut également être un moyen de migrer des données volumineuses en extrayant un énorme segment de l'ensemble de données, puis en le déplaçant, mais en tant que nouveau nœud de partition.

mydumper/myloader a aussi ses limites. Il a été arrêté des mises à jour des auteurs originaux mais enregistré par Max Bube, mais l'outil est toujours largement utilisé même pour les environnements de production.

Sauvegarde Percona XtraBackup/MariaDB

XtraBackup de Percona est un cadeau pour les administrateurs de bases de données qui ne veulent pas utiliser et dépenser de l'argent pour l'entreprise Oracle MySQL Enterprise Backup. Alors que MariaDB Backup est bifurqué et dérivé de Percona XtraBackup, ils ont également MariaDB Enterprise Backup.

Ces deux outils partagent les mêmes concepts lors de l'exécution ou de la prise d'une sauvegarde. Il s'agit d'une sauvegarde binaire qui offre une sauvegarde en ligne à chaud, PITR, une sauvegarde incrémentielle et complète, une sauvegarde partielle, également utile pour la récupération de données car elle comprend la récupération telle qu'elle produit un fichier journal et une position binaires, prend en charge les GTID, et bien plus encore. Bien que MariaDB Backup et Percona XtraBackup soient aujourd'hui deux types de logiciels différents, ils sont conçus pour prendre en charge la base de données axée sur la sauvegarde. MariaDB Backup est définitivement applicable si vous avez l'intention d'utiliser ou d'effectuer des sauvegardes à partir d'une source de base de données MariaDB. Considérant que, Percona XtraBackup est applicable sur Oracle MySQL et également sur Percona Server ou certains serveurs MySQL dérivés tels que Percona XtraDB Server ou la version Codership de Galera Cluster pour MySQL.

Les deux sauvegardes sont très bénéfiques pour les migrations de bases de données. L'exécution d'une sauvegarde en ligne à chaud est de plus en plus rapide et produit une sauvegarde que vous pouvez directement utiliser pour la charger dans votre base de données cible. Le plus souvent, la sauvegarde en continu est également pratique, car vous pouvez effectuer une sauvegarde en ligne et diffuser les données binaires vers la base de données cible à l'aide de socat ou de netcat. Cela vous permet de raccourcir le temps de migration puisque le déplacement des données vers la destination cible est diffusé directement.

L'approche la plus courante de migration de données lors de l'utilisation de cet outil consiste à copier les données de la source, puis à diffuser les données vers la destination cible. Une fois dans la destination de la base de données cible, vous pouvez simplement préparer la sauvegarde binaire avec l'option --prepare où elle applique les journaux qui ont été enregistrés au moment de la création de la sauvegarde afin de copier les données complètes telles quelles et exactement à partir du moment. où la sauvegarde a été effectuée. Définissez ensuite la destination de la base de données cible en tant que réplique pour agir en tant que réplique ou esclave du cluster source existant et répliquer toutes les modifications et transactions qui se sont produites à partir du cluster principal.

Bien sûr, l'utilisation de cet outil est également limitée, mais les administrateurs de base de données doivent savoir comment utiliser cet outil et également comment limiter et personnaliser l'utilisation en fonction de l'utilisation souhaitée. Vous ne voudrez peut-être pas enliser votre base de données source si votre source prend trop de trafic ou un traitement important à partir de ce moment. Sa limitation garantit également qu'il s'agit d'une configuration homogène où la source cible est un système compatible Linux et non sur un environnement de type Windows puisque Percona XtraBackup et MariaDB Backup fonctionnent uniquement dans l'environnement Linux.

Outils de migration de schéma de base de données

La migration de base de données ne se parle pas uniquement sur un outil spécifique et une tâche spécifique, alors la migration peut se produire. De nombreuses considérations et tâches ultérieures sous-jacentes doivent être effectuées pour effectuer une migration complète de la base de données. L'une d'entre elles est la migration de schéma ou la migration de base de données. Un schéma dans MySQL/MariaDB est une collection de données constituée d'un groupe de tables avec ses colonnes et ses lignes, des événements, des déclencheurs, des procédures stockées ou des routines et des fonctions. Il peut arriver que vous souhaitiez uniquement migrer un schéma ou uniquement une table. Supposons qu'une table spécifique sur un schéma nécessite une modification de sa structure de table et que cela nécessite une instruction DDL. Le problème est que l'exécution d'une instruction DDL directe telle que ALTER TABLE ...ENGINE=InnoDB bloque toutes les transactions ou connexions entrantes qui feront également référence ou utiliseront la table cible. Pour certaines tables volumineuses comprenant une longue définition de données et une structure de table, cela ajoute un véritable défi et complique davantage, en particulier si la table est une table active. Alors que dans une migration de base de données, il peut être difficile de copier la copie complète exacte de la table complète sans interruption de la source. Voyons donc de quoi il s'agit.

pt-online-schema-change

Cela fait partie de la célèbre boîte à outils Percona, dérivée à l'origine de Maatkit et Aspersa. Cet outil est très utile lors de la modification d'une définition de table, en particulier pour une table active composée d'une énorme quantité de données. Pour une approche courante mais naïve pour effectuer une modification de définition de table, l'exécution de ALTER TABLE peut faire l'affaire. Bien que cela suffise, ALTER TABLE sans utiliser ALGORITHM=INPLACE provoque une copie complète de la table qui acquiert un verrou de métadonnées complètes, ce qui signifie que votre base de données peut éventuellement s'empiler et se verrouiller pendant une longue période, surtout si la table est énorme. Dans ce cas, cet outil est conçu pour résoudre ce problème. Cet outil est très utile pour la migration de base de données de telle sorte qu'une copie incohérente détectée d'une table active avec des données très volumineuses à partir de votre destination de base de données cible déjà configurée. Au lieu d'effectuer une sauvegarde à l'aide d'une copie logique ou binaire/physique, pt-online-schema-change peut être utilisé pour copier les lignes de la table source vers sa table cible morceau par morceau. Vous pouvez même personnaliser la commande avec des appels appropriés à ses paramètres en fonction de vos besoins.

En plus d'utiliser, pt-online-schema-change utilise également des déclencheurs. En utilisant des déclencheurs, tout trafic ultérieur ou en cours qui tente d'appliquer des modifications à cette table de référence doit également être copié dans la base de données cible qui agit comme une réplique du cluster de bases de données source actuel. Cela copie toutes les données exactement quelles données la base de données source a vers votre base de données cible qui se trouve sur une plate-forme différente, par exemple. L'utilisation de déclencheurs peut être utilisée pour MySQL et MariaDB tant que son moteur est InnoDB et qu'il a une clé primaire présente sur cette table, ce qui est une exigence. Vous savez peut-être qu'InnoDB utilise un mécanisme de verrouillage de ligne qui permet que, pour un certain nombre de morceaux (un groupe d'enregistrements sélectionnés), pt-online-schema-change essaie de copier cela, puis applique l'instruction INSERT à la table cible . La table cible est une table factice qui agit comme une copie cible du remplacement imminent de la table source existante. pt-online-schema-change permet cependant à l'utilisateur de supprimer la table factice ou simplement de laisser la table factice en place jusqu'à ce que l'administrateur soit prêt à supprimer cette table. Notez que la suppression ou la suppression d'une table acquiert un meta-datalock. Puisqu'il acquiert des déclencheurs, toutes les modifications ultérieures doivent être copiées exactement dans la table cible, ne laissant aucune différence sur la table cible ou factice.

gh-ost

Partage le même concept que pt-online-schema-change. Cet outil approche différemment de pt-online-schema-change. Je dirai que cette migration d'outil de schéma aborde les obstacles basés sur la production qui peuvent ralentir votre base de données et éventuellement bloquer, provoquant la chute de votre cluster de base de données en mode maintenance ou pendant une période de temps inconnue, jusqu'à ce que le problème soit résolu. Ce problème est généralement causé par des déclencheurs. Si vous avez une table occupée ou active qui subit une modification de schéma ou de définition de table, les déclencheurs peuvent entraîner l'accumulation de votre base de données en raison d'un conflit de verrouillage. Les déclencheurs MySQL/MariaDB permettent à votre base de données de définir des déclencheurs pour INSERT, UPDATE et DELETE. Si la table cible se trouve sur un hotspot, cela peut devenir désagréable. Votre base de données commence à ralentir jusqu'à ce qu'elle soit bloquée à moins que vous ne puissiez tuer ces requêtes entrantes ou mieux supprimer les déclencheurs, mais ce n'est pas l'approche idéale.

En raison de ces problèmes, gh-ost résout ce problème. Il agit comme s'il existait un serveur de journaux binaires où les événements ou transactions entrants sont consignés dans un format de journal binaire, en particulier à l'aide de RBR (Row Based Replication). En fait, c'est très sûr et moins de soucis en termes d'impact que vous devez affronter. En fait, vous avez également la possibilité de faire un test ou un essai (comme avec pt-online-schema-change) mais de le tester directement dans la réplique ou un nœud esclave. C'est parfait si vous voulez vous amuser et vérifier la copie exacte dans votre base de données cible pendant la migration.

Cet outil est très flexible en fonction de vos besoins et implique l'assurance que votre cluster ne sera pas bloqué ou finira probablement par effectuer un basculement ou une récupération de données si cela empire. Pour plus d'informations et si vous souhaitez apprendre cet outil, je vous suggère de lire ce post de Github par Shlomi Noach.

Autres outils OSC

Je peux dire que ces deux outils sont plus une approche recommandable, mais vous pouvez également essayer d'autres alternatives. La plupart du temps, ces outils appliquent des déclencheurs MySQL/MariaDB afin qu'ils partagent en quelque sorte le même concept que pt-online-schema-change. Voici la liste suivante :

  • LHM - Les migrations de bases de données de style Rails sont un moyen utile de faire évoluer votre schéma de données de manière agile. La plupart des projets Rails commencent ainsi, et au début, apporter des modifications est rapide et facile.
  • OnlineSchemaChange - Créé et initié par Facebook. Cet outil est utilisé pour effectuer des modifications de schéma pour les tables MySQL de manière non bloquante
  • TableMigrator - Initié par Serious Business et d'anciens employés de Twitter. Cet outil partage le même principe avec les migrations sans temps d'arrêt de grandes tables dans MySQL. Il est implémenté à l'aide de Rails, il peut donc être utile si vous disposez d'un environnement d'application Ruby-on-Rails.
  • oak-online-alter-table - il s'agit d'un ancien outil créé par Shlomi Noach bien qu'il se rapproche en quelque sorte de la même approche que pt-online-schema-change et effectue une opération ALTER TABLE non bloquante

Outils de l'assistant de migration de base de données

Il existe peu d'outils de migration qui offrent une utilisation gratuite, ce qui est très avantageux dans une certaine mesure. Ce qui est plus avantageux avec l'utilisation des outils de l'assistant de migration, c'est qu'ils ont une interface graphique pour laquelle vous pouvez avoir la commodité de voir la structure actuelle ou simplement suivre les étapes fournies par l'interface utilisateur pendant la migration. Il peut y avoir de nombreux services ou outils d'assistant, mais ce n'est pas open source et ce n'est pas disponible gratuitement. Bien sûr, une migration de base de données est un processus très complexe mais systématique, mais dans certains cas, cela nécessite un travail et des efforts importants. Jetons un coup d'œil à ces outils gratuits.

Atelier MySQL

Comme son nom l'indique, c'est pour MySQL et les bases de données dérivées telles que Percona Server par exemple, peut être utile lorsqu'il s'agit de migration de base de données. Étant donné que MariaDB est totalement passé à une route différente, en particulier depuis la version 10.2, vous pouvez rencontrer des problèmes d'incompatibilité si vous essayez de l'utiliser à partir d'une source ou d'une cible MariaDB. Workbench peut être utilisé pour des types hétérogènes de bases de données telles que celles provenant de différentes bases de données source et souhaite transférer les données vers MySQL.

Le MySQL Workbench est composé de versions communautaires et d'entreprise. Pourtant, la version communautaire est disponible gratuitement en tant que GPL que vous pouvez trouver ici https://github.com/mysql/mysql-workbench. Comme l'indique la documentation, MySQL Workbench vous permet de migrer de Microsoft SQL Server, Microsoft Access, Sybase ASE, SQLite, SQL Anywhere, PostreSQL et d'autres tables, objets et données RDBMS vers MySQL. La migration prend également en charge la migration des versions antérieures de MySQL vers les dernières versions.

phpMyAdmin

Pour ceux qui travaillent en tant que développeurs Web utilisant la pile LAMP, cet outil n'est pas surprenant d'être l'un de leurs couteaux suisses lorsqu'il s'agit de tâches de base de données. phpMyAdmin est un outil logiciel gratuit écrit en PHP, destiné à gérer l'administration de MySQL sur le Web. phpMyAdmin prend en charge un large éventail d'opérations sur MySQL et MariaDB. Les opérations fréquemment utilisées (gestion des bases de données, des tables, des colonnes, des relations, des index, des utilisateurs, des autorisations, etc.) peuvent être effectuées via l'interface utilisateur, tandis que vous avez toujours la possibilité d'exécuter directement n'importe quelle instruction SQL.

Bien que ce soit assez simple quand il s'agit d'importer et d'exporter, ce qui est important, c'est que cela fasse le travail. Bien que pour une migration plus importante et plus complexe, cela peut ne pas suffire à gérer vos besoins souhaités.

HeidiSQL

HeidiSQL est un logiciel libre, et a pour objectif d'être facile à apprendre. "Heidi" vous permet de voir et de modifier des données et des structures à partir d'ordinateurs exécutant l'un des systèmes de base de données MariaDB, MySQL, Microsoft SQL, PostgreSQL et SQLite. Inventé en 2002 par Ansgar, HeidiSQL fait partie des outils les plus populaires pour MariaDB et MySQL dans le monde.

À des fins de migration, il vous permet d'exporter d'un serveur/base de données directement vers un autre serveur/base de données. Il dispose également de fonctionnalités d'importation pour autoriser les champs de texte tels que CSV, et également exporter des lignes de tableau dans un large éventail de types de fichiers pris en charge tels que CSV, HTML, XML, SQL, LaTeX, Wiki Markup et PHP Array. Bien qu'il soit conçu pour gérer des bases de données à des fins d'administration de serveur de base de données, vous pouvez néanmoins l'utiliser pour des tâches de migration simples.

La boîte à outils Percona comme couteau suisse

Percona Toolkit est un logiciel notable distribué en tant que logiciel open source sous la garantie de la GPL. Percona Toolkit est une collection d'outils de ligne de commande avancés couramment utilisés en interne par Percona, mais il s'applique également à tout travail de base de données lié, en particulier aux serveurs MySQL/MariaDB.

Alors, comment et pourquoi est-ce également utile pour la migration de données, en particulier dans les migrations MySQL/MariaDB ? Ils disposent ici d'un certain nombre d'outils qu'il est avantageux d'utiliser lors de la migration et après la migration.

Comme mentionné précédemment, une approche courante de la migration des données consiste à avoir le serveur de destination cible comme une réplique du cluster de base de données source principal mais dans une configuration homogène. Cela signifie que, si la situation passe d'un fournisseur sur site à un fournisseur de cloud public, vous pouvez configurer un nœud élu à partir de cette plate-forme et ce nœud répliquera toutes les transactions du cluster principal. En utilisant des outils de sauvegarde, vous pourrez peut-être réaliser ce type de configuration de migration. Mais cela ne s'arrête pas là. Percona Toolkit dispose par exemple d'outils pt-table-checksum/pt-table-sync afin de vous aider à identifier les incohérences de données entre le serveur sur site et le serveur de base de données de destination cible. Avec pt-table-checksum, vous pouvez effectuer des calculs de somme de contrôle basés sur une série de morceaux pour toutes les bases de données ou simplement une somme de contrôle sélective sur des bases de données particulières, ou des tables particulières, ou même une plage d'enregistrements de la table. pt-table-sync sera utilisé pour effectuer la synchronisation des données afin que vos bases de données cibles soient à nouveau actualisées avec une nouvelle copie des données exactes du cluster source principal.

D'autre part, pt-upgrade est très utile après la migration depuis les outils de sauvegarde. Avec pt-upgrade, vous pouvez utiliser cet outil pour effectuer une analyse en exécutant un ensemble de requêtes, par exemple, à partir d'un fichier journal de requête lente. Ces résultats peuvent être utilisés pour comparer la base de données source et le serveur de base de données cible.

Résumé

La migration de bases de données, en particulier à partir d'une configuration hétérogène, peut être très compliquée. Pourtant, sur une configuration homogène, cela peut être assez simple; peu importe si les données sont grandes ou petites tant que vous êtes équipé des outils appropriés et, bien sûr, de l'approche systématique correcte pour déterminer que la migration est complète avec des données cohérentes. Il peut arriver qu'une migration nécessite une consultation avec des experts, mais c'est toujours un bon début de proposer et d'essayer ces outils open source pour réaliser la tâche de migration de base de données souhaitée.