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

Comment migrer de MSSQL vers MySQL

La migration de moteurs propriétaires vers des moteurs open source est une tendance qui se développe dans l'industrie.

Cependant, la migration de bases de données n'est pas quelque chose à prendre à la légère.

Dans ce blog, voyons ce qui est nécessaire pour passer de Microsoft SQL Server à MySQL Server et comment le faire.

Alors, commençons par examiner ce qu'est MS SQL et ce qu'est MySQL.

Microsoft SQL Server est un SGBDR très populaire avec des licences restrictives et un coût de possession modeste si la base de données est de taille importante ou est utilisée par un nombre important de clients. Il fournit une interface très conviviale et facile à apprendre, ce qui a entraîné une large base d'utilisateurs installés. Comme d'autres logiciels RDBMS, MS SQL Server est construit sur SQL, un langage de programmation standardisé que les administrateurs de bases de données (DBA) et d'autres professionnels de l'informatique utilisent pour gérer les bases de données et interroger les données qu'elles contiennent. SQL Server est lié à Transact-SQL (T-SQL), une implémentation de SQL de Microsoft qui ajoute un ensemble d'extensions de programmation propriétaires au langage standard.

MySQL est un système de gestion de base de données relationnelle open source soutenu par Oracle et basé sur SQL.

C'est la deuxième base de données la plus populaire au monde selon le classement db-engines et probablement le backend de base de données le plus présent sur la planète car il gère la plupart des services Internet dans le monde.

MySQL fonctionne sur pratiquement toutes les plates-formes, y compris Linux, UNIX et Windows. C'est un composant important d'une pile d'entreprise open source appelée LAMP. La version MySQL Enterprise est fournie avec un support et des fonctionnalités supplémentaires pour la sécurité et la haute disponibilité.

https://db-engines.com/en/ranking

La combinaison des économies de coûts, de la compatibilité de la plate-forme et de l'ensemble de fonctionnalités de MySQL le rend vraiment attrayant, et de nombreuses organisations migrent de MS SQL Server vers cette plate-forme open source pour tirer parti de ces fonctionnalités.

Pourquoi migrer ?

Habituellement, la première raison de migrer est le coût. SQL Server est une base de données propriétaire de Microsoft. Il existe une version gratuite de SQL Server appelée Express, mais elle présente certaines limitations telles que 10 Go de limite de base de données, une quantité limitée de CPU, une quantité limitée de RAM, etc. Vous devrez donc probablement payer la licence pour l'utiliser en production. Vous pouvez vérifier les prix ici.

Avec MySQL, vous pouvez utiliser l'édition communautaire gratuitement et sans aucune limitation.

Une autre raison pourrait être la prise en charge du système d'exploitation. Contrairement à MS SQL Server, MySQL prend en charge une large gamme de systèmes d'exploitation, notamment Linux, Windows, Mac OS, Solaris et bien d'autres.

En ce qui concerne l'installation et la configuration, MySQL s'installe plus rapidement, a un encombrement réduit tout en étant capable de gérer des bases de données assez volumineuses, et a moins de boutons de configuration qui doivent être réglés que SQL Server.

Dans le domaine de la haute disponibilité, MySQL dispose d'un certain nombre de solutions éprouvées, notamment la réplication, les SAN et le cluster MySQL, qui égalent ou surpassent SQL Server selon le scénario.

La formidable communauté MySQL offre de nombreux avantages, notamment un excellent réseau de développeurs et d'administrateurs de bases de données où tous travaillent ensemble pour garantir un produit de haute qualité et le succès de chacun.

Ce que vous devez savoir

Le déplacement des données et des structures d'index vers MySQL n'est généralement pas une tâche difficile car MySQL prend en charge tous les types de données, conceptions de table et structures d'index importants. Quoi qu'il en soit, certains objets seront confrontés à des défis. Les objets liés au code, comme les procédures stockées, peuvent utiliser des fonctionnalités ANSI non standard, car Transact-SQL en possède beaucoup.

Ainsi, les éléments suivants nécessiteront une attention particulière lors de la migration :

  • Assemblages
  • Types
  • DDL et déclencheurs basés sur des instructions (MySQL a des déclencheurs basés sur des lignes)
  • Appels de fonction SQL Server propriétaires
  • Certains cas de T-SQL dynamique

De la même manière, les synonymes et les rôles de sécurité nécessiteront une solution de contournement car ils ne peuvent pas être directement migrés vers MySQL.

Types de données nécessitant une conversion

Le mappage suivant peut être utilisé pour convertir les types de données SQL Server qui ne sont pas mappés dans une relation 1-1 avec MySQL :

SQL Server MySQL
IDENTITÉ AUTO_INCREMENT
NTEXT, TEXTE NATIONAL JEU DE CARACTÈRES DE TEXTE UTF8
SMALLDATETIME DATEHEURE
ARGENT DECIMAL(19,4)
PEU D'ARGENT DECIMAL(10,4)
IDENTIFIANT UNIQUE BINAIRE(16)
SYSNAME CAR(256)

Comment faire

Il existe de nombreux outils pour effectuer la migration de MS SQL Server vers MySQL comme Amazon DMS ou Data Integration (Kettle), mais dans ce cas, nous utiliserons l'outil de migration MySQL Workbench.

Cet outil est conçu pour faire gagner du temps aux DBA et aux développeurs en offrant une facilité d'utilisation visuelle, pointer-cliquer à toutes les phases de configuration et de gestion d'un processus de migration complexe :

  • Migrations de bases de données :permet les migrations depuis Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite, etc.
  • Gérer les projets de migration :permet de configurer, copier, modifier, exécuter et planifier les migrations.
  • Sélection de la source et de la cible :permet aux utilisateurs de définir des sources de données spécifiques et d'analyser les données sources avant la migration.
  • Migration d'objets :permet aux utilisateurs de sélectionner les objets à migrer, d'attribuer une source aux mappages cibles si nécessaire, de modifier les scripts de migration et de créer le schéma cible.
  • Mises à niveau de version :grâce à la migration, les utilisateurs peuvent facilement déplacer les bases de données des anciennes versions de MySQL vers les dernières.

Alors, allons-y.

Pour cette tâche, nous supposons que vous avez :

  • SQL Server installé avec votre base de données à migrer :nous utiliserons l'exemple de base de données Northwind sur MS SQL Server Express 2014.
  • MySQL Server est installé :nous avons MySQL 5.7.25 Community Edition sur CentOS.
  • Utilisateurs sur les deux serveurs de base de données avec des privilèges pour effectuer la tâche :nous avons l'utilisateur "sa" sur SQL Server et l'utilisateur "migration" avec tous les privilèges sur MySQL.
  • MySQL Workbench installé avec accès aux deux serveurs de base de données :nous utiliserons MySQL Workbench 6.3.

Pour démarrer le processus de migration, sur l'écran principal de MySQL Workbench, accédez à Base de données-> Assistant de migration.

Nous devons vérifier les prérequis pour confirmer si nous pouvons continuer la tâche. Si tout va bien, nous pouvons appuyer sur Démarrer la migration.

Dans cette étape, nous devons fournir les informations sur la base de données source, dans ce cas, SQL Server.

Nous allons configurer notre paramètre source comme vous pouvez le voir dans l'image précédente :

Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost 
Username: sa

À propos du paramètre Server, nous exécutons MySQL Workbench sur le nœud SQL Server, mais vous utiliserez probablement l'adresse IP/le nom d'hôte de votre serveur de base de données.

Maintenant, nous pouvons vérifier la connexion en utilisant le bouton Tester la connexion.

Ensuite, nous devons ajouter les paramètres cibles, dans ce cas, MySQL Server :

Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration

Et appuyez sur Tester la connexion pour confirmer les informations ajoutées.

À l'étape suivante, MySQL Workbench se connectera à notre serveur SQL pour récupérer une liste des catalogues et des schémas.

Maintenant, nous allons choisir l'exemple de base de données Northwind dans la liste.

Nous pouvons choisir comment les schémas et l'objet rétroconçus doivent être mappés. Nous utiliserons l'option Catalog.Schema.Table -> Catalog.Table, donc dans notre MySQL, nous aurons une base de données appelée Northwind, et les tables actuelles que nous avons dans notre base de données SQL Server.

Si tout s'est bien passé, nous aurons une liste d'objets à migrer.

Dans ce cas, nous avons des objets de table, des objets de vue et des objets de routine. Nous ne sélectionnerons que les objets de table car pour le reste de l'objet, nous devons vérifier manuellement le code équivalent MySQL correspondant.

Dans cette étape, les objets de la source sont convertis en objets compatibles MySQL.

Si tout s'est bien passé, nous pouvons continuer en sélectionnant comment nous voulons créer le schéma migré dans la cible. Nous utiliserons l'option par défaut "Créer un schéma dans le SGBDR cible".

Maintenant, vérifions le processus de création du schéma.

Dans l'étape suivante, nous pouvons vérifier le résultat de chaque exécution de script, et nous pouvons vérifier la nouvelle base de données créée sur notre serveur MySQL.

Dans notre serveur MySQL, nous avons :

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| NORTHWND           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

À ce stade, nous aurons la structure de la base de données, mais nous n'avons pas encore les données. Maintenant, nous allons sélectionner la façon dont nous voulons copier les données dans le serveur MySQL. Nous utiliserons l'option "Copie en ligne des données de la table vers le SGBDR cible".

Et nous pouvons surveiller le processus de copie depuis l'application MySQL Workbench.

À ce stade, nous avons migré toutes les informations vers notre serveur MySQL.

mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
|        1 | Eastern           |
|        2 | Western           |
|        3 | Northern          |
|        4 | Southern          |
+----------+-------------------+
4 rows in set (0.00 sec)

Dans la dernière étape, nous pouvons vérifier le rapport de migration et terminer la tâche.

La migration est terminée !

Test

Avant le processus de migration, vous devez tester l'application et la base de données MySQL pour connaître le comportement avec le nouveau moteur.

Il devrait également être utile d'effectuer un test de référence pour valider les performances avant la migration.

Il y a quelques conseils à prendre en compte :

  • Le test doit simuler le nombre de connexions utilisateur attendues.
  • Les sessions connectées doivent effectuer des tâches comme elles se produiraient au cours d'une journée normale.
  • Vous devez charger votre base de données avec des données de test correspondant approximativement à la taille que vous attendez de votre base de données dans le monde réel.

Pour cette tâche de test, vous pouvez utiliser l'outil mysqlslap. Il s'agit d'un programme de diagnostic conçu pour émuler la charge du client pour un serveur MySQL et pour signaler la synchronisation de chaque étape.

Conclusion

Comme nous l'avons vu dans ce blog, plusieurs raisons peuvent amener une entreprise à décider de migrer une base de données, en passant d'un moteur propriétaire à un moteur open source. Nous avons vu ici un cas d'utilisation populaire, une migration de SQL Server vers MySQL, et fait un exemple étape par étape en utilisant un outil MySQL largement connu, le MySQL Workbench. Nous espérons que vous trouverez cet article utile.