Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So migrieren Sie von MSSQL zu MySQL

Die Migration von proprietären Engines zu Open-Source-Engines ist ein Trend, der in der Branche zunimmt.

Die Datenbankmigration sollte jedoch nicht auf die leichte Schulter genommen werden.

Sehen wir uns in diesem Blog an, was für den Wechsel von Microsoft SQL Server zu MySQL Server erforderlich ist und wie das geht.

Beginnen wir also damit, uns anzusehen, was MS SQL und was MySQL ist.

Microsoft SQL Server ist ein sehr beliebtes RDBMS mit restriktiver Lizenzierung und geringen Betriebskosten, wenn die Datenbank eine beträchtliche Größe hat oder von einer beträchtlichen Anzahl von Clients verwendet wird. Es bietet eine sehr benutzerfreundliche und leicht zu erlernende Oberfläche, die zu einer großen installierten Benutzerbasis geführt hat. Wie andere RDBMS-Software basiert MS SQL Server auf SQL, einer standardisierten Programmiersprache, die Datenbankadministratoren (DBAs) und andere IT-Experten verwenden, um Datenbanken zu verwalten und die darin enthaltenen Daten abzufragen. SQL Server ist an Transact-SQL (T-SQL) gebunden, eine SQL-Implementierung von Microsoft, die der Standardsprache eine Reihe proprietärer Programmiererweiterungen hinzufügt.

MySQL ist ein von Oracle unterstütztes relationales Open-Source-Datenbankverwaltungssystem, das auf SQL basiert.

Es ist laut db-engines-Ranking die zweitbeliebteste Datenbank der Welt und wahrscheinlich das präsenteste Datenbank-Backend der Welt, da es die meisten Internetdienste rund um den Globus betreibt.

MySQL läuft auf praktisch allen Plattformen, einschließlich Linux, UNIX und Windows. Es ist eine wichtige Komponente eines Open-Source-Enterprise-Stacks namens LAMP. Die MySQL Enterprise-Version bietet Unterstützung und zusätzliche Funktionen für Sicherheit und Hochverfügbarkeit.

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

Die Kombination aus Kosteneinsparungen, Plattformkompatibilität und Funktionsumfang von MySQL macht es wirklich attraktiv, und viele Organisationen migrieren von MS SQL Server auf diese Open-Source-Plattform, um diese Funktionen zu nutzen.

Warum migrieren?

Normalerweise sind die Kosten der erste Grund für eine Migration. SQL Server ist eine proprietäre Datenbank von Microsoft. Es gibt eine kostenlose SQL Server-Version namens Express, aber sie hat einige Einschränkungen wie 10 GB Datenbanklimit, eine begrenzte Menge an CPU, eine begrenzte Menge an RAM und mehr, also müssen Sie wahrscheinlich die Lizenz bezahlen, um sie in der Produktion zu verwenden. Sie können die Preise hier überprüfen.

Mit MySQL können Sie die Community Edition kostenlos und uneingeschränkt nutzen.

Ein weiterer Grund könnte die Betriebssystemunterstützung sein. Im Gegensatz zu MS SQL Server unterstützt MySQL eine breite Palette von Betriebssystemen, darunter Linux, Windows, Mac OS, Solaris und viele mehr.

In Bezug auf Installation und Konfiguration lässt sich MySQL schneller installieren, hat einen geringeren Platzbedarf und ist dennoch in der Lage, ziemlich große Datenbanken zu verwalten, und hat weniger Konfigurationsknöpfe, die angepasst werden müssen, als SQL Server.

Im Bereich der Hochverfügbarkeit hat MySQL eine Reihe bewährter Lösungen, darunter Replikation, SANs und MySQL Cluster, die je nach Szenario gleich oder am besten SQL Server sind.

Die großartige MySQL-Community bietet viele Vorteile, einschließlich eines großartigen Entwickler- und DBA-Netzwerks aller, die zusammenarbeiten, um ein qualitativ hochwertiges Produkt und den Erfolg des anderen sicherzustellen.

Was Sie wissen sollten

Das Übertragen von Daten und Indexstrukturen nach MySQL ist normalerweise keine schwierige Aufgabe, da MySQL alle wichtigen Datentypen, Tabellendesigns und Indexstrukturen unterstützt. Wie auch immer, es gibt einige Objekte, die vor einigen Herausforderungen stehen werden. Codebezogene Objekte wie gespeicherte Prozeduren können nicht standardmäßige ANSI-Funktionen verwenden, da Transact-SQL viele davon hat.

Daher müssen die folgenden Elemente bei der Migration besonders beachtet werden:

  • Versammlungen
  • Typen
  • DDL- und anweisungsbasierte Trigger (MySQL hat zeilenbasierte Trigger)
  • Proprietäre SQL Server-Funktionsaufrufe
  • Bestimmte Fälle von dynamischem T-SQL

Ebenso müssen Synonyme und Sicherheitsrollen umgangen werden, da sie nicht direkt in MySQL migriert werden können.

Konvertierungsbedürftige Datentypen

Die folgende Zuordnung kann verwendet werden, um SQL Server-Datentypen zu konvertieren, die nicht in einer 1-zu-1-Beziehung zu MySQL zugeordnet werden:

SQL-Server MySQL
IDENTITÄT AUTO_INCREMENT
NTEXT, NATIONALER TEXT TEXTZEICHENSATZ UTF8
SMALLDATETIME DATETIME
GELD DEZIMAL(19,4)
KLEINES GELD DEZIMAL(10,4)
UNIQUEIDENTIFIER BINARY(16)
SYSNAME CHAR(256)

So geht's

Es gibt viele Tools, um die Migration von MS SQL Server zu MySQL durchzuführen, wie Amazon DMS oder Data Integration (Kettle), aber in diesem Fall verwenden wir das Migrationstool von MySQL Workbench.

Dieses Tool wurde entwickelt, um DBAs und Entwicklern Zeit zu sparen, indem es in allen Phasen der Konfiguration und Verwaltung eines komplexen Migrationsprozesses eine einfache, visuelle Point-and-Click-Nutzung bietet:

  • Datenbankmigrationen:Ermöglicht Migrationen von Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite und mehr.
  • Migrationsprojekte verwalten:Ermöglicht das Konfigurieren, Kopieren, Bearbeiten, Ausführen und Planen von Migrationen.
  • Quell- und Zielauswahl:Ermöglicht Benutzern, spezifische Datenquellen zu definieren und Quelldaten vor der Migration zu analysieren.
  • Objektmigration:Ermöglicht Benutzern, zu migrierende Objekte auszuwählen, bei Bedarf eine Quelle zu Zielzuordnungen zuzuweisen, Migrationsskripte zu bearbeiten und das Zielschema zu erstellen.
  • Versions-Upgrades:Mithilfe der Migration können Benutzer Datenbanken problemlos von älteren MySQL-Versionen auf die neueste verschieben.

Also, lass es uns tun.

Für diese Aufgabe gehen wir davon aus, dass Sie über Folgendes verfügen:

  • SQL Server, der mit Ihrer zu migrierenden Datenbank installiert ist:Wir verwenden die Northwind-Beispieldatenbank über MS SQL Server Express 2014 Edition.
  • MySQL Server installiert:Wir haben MySQL 5.7.25 Community Edition über CentOS.
  • Benutzer auf beiden Datenbankservern mit Berechtigungen zum Ausführen der Aufgabe:Wir haben den Benutzer „sa“ auf SQL Server und den Benutzer „migration“ mit allen Berechtigungen auf MySQL.
  • MySQL Workbench installiert mit Zugriff auf beide Datenbankserver:Wir verwenden MySQL Workbench 6.3.

Um den Migrationsprozess zu starten, gehen Sie auf dem Hauptbildschirm von MySQL Workbench zu Database-> Migration Wizard.

Wir sollten die Voraussetzungen überprüfen, um zu bestätigen, ob wir die Aufgabe fortsetzen können. Wenn alles gut aussieht, können wir auf Start Migration drücken.

In diesem Schritt müssen wir die Informationen über die Quelldatenbank angeben, in diesem Fall SQL Server.

Wir konfigurieren unseren Quellparameter, wie Sie im vorherigen Bild sehen können:

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

Bezüglich des Server-Parameters führen wir MySQL Workbench auf dem SQL Server-Knoten aus, aber wahrscheinlich verwenden Sie die IP-Adresse/den Hostnamen Ihres Datenbankservers.

Jetzt können wir die Verbindung überprüfen, indem wir die Schaltfläche Verbindung testen verwenden.

Dann müssen wir die Zielparameter hinzufügen, in diesem Fall MySQL Server:

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

Und drücken Sie auf Verbindung testen, um die hinzugefügten Informationen zu bestätigen.

Im nächsten Schritt verbindet sich MySQL Workbench mit unserem SQL Server, um eine Liste der Kataloge und Schemas abzurufen.

Jetzt wählen wir die Northwind-Beispieldatenbank aus der Liste aus.

Wir können wählen, wie die Reverse-Engineering-Schemata und -Objekte abgebildet werden sollen. Wir verwenden die Option Catalog.Schema.Table -> Catalog.Table, also haben wir in unserem MySQL eine Datenbank namens Northwind und die aktuellen Tabellen, die wir in unserer SQL Server-Datenbank haben.

Wenn alles geklappt hat, haben wir eine Liste der zu migrierenden Objekte.

In diesem Fall haben wir Tabellenobjekte, Ansichtsobjekte und Routineobjekte. Wir wählen nur die Tabellenobjekte aus, da wir für den Rest des Objekts den entsprechenden MySQL-äquivalenten Code manuell überprüfen sollten.

In diesem Schritt werden die Objekte aus der Quelle in MySQL-kompatible Objekte umgewandelt.

Wenn alles geklappt hat, können wir fortfahren, indem wir auswählen, wie wir das migrierte Schema im Ziel erstellen möchten. Wir verwenden die Standardoption „Schema im Ziel-RDBMS erstellen“.

Lassen Sie uns nun den Schemaerstellungsprozess überprüfen.

Im nächsten Schritt können wir das Ergebnis jeder Skriptausführung überprüfen und wir können die neue Datenbank überprüfen, die auf unserem MySQL-Server erstellt wurde.

In unserem MySQL-Server haben wir:

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

An diesem Punkt haben wir die Datenbankstruktur, aber wir haben noch keine Daten. Jetzt wählen wir aus, wie wir die Daten in den MySQL-Server kopieren möchten. Wir verwenden die Option „Online-Kopie von Tabellendaten zum Targeting von RDBMS“.

Und wir können den Kopiervorgang von der MySQL Workbench-Anwendung aus überwachen.

Zu diesem Zeitpunkt haben wir alle Informationen auf unseren MySQL-Server migriert.

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

Im letzten Schritt können wir den Migrationsbericht überprüfen und die Aufgabe abschließen.

Die Migration ist abgeschlossen!

Testen

Vor dem Migrationsprozess sollten Sie die Anwendung und die MySQL-Datenbank testen, um das Verhalten mit der neuen Engine zu kennen.

Es sollte auch nützlich sein, vor der Migration einen Benchmark-Test durchzuführen, um die Leistung zu validieren.

Es gibt einige Tipps, die Sie berücksichtigen sollten:

  • Der Test sollte die Anzahl der erwarteten Benutzerverbindungen simulieren.
  • Die verbundenen Sitzungen sollten Aufgaben so ausführen, wie sie an einem normalen Tag anfallen würden.
  • Sie sollten Ihre Datenbank mit Testdaten laden, die ungefähr der Größe entsprechen, die Sie von Ihrer Datenbank in der realen Welt erwarten.

Für diese Testaufgabe können Sie das Tool mysqlslap verwenden. Es ist ein Diagnoseprogramm, das entwickelt wurde, um die Clientlast für einen MySQL-Server zu emulieren und das Timing jeder Phase zu melden.

Schlussfolgerung

Wie wir in diesem Blog besprochen haben, gibt es mehrere Gründe, die ein Unternehmen dazu veranlassen können, sich für eine Datenbankmigration zu entscheiden und von einer proprietären Engine zu einer Open-Source-Engine zu wechseln. Wir haben hier einen beliebten Anwendungsfall gesehen, eine Migration von SQL Server zu MySQL, und anhand eines weithin bekannten MySQL-Tools, der MySQL Workbench, ein Schritt-für-Schritt-Beispiel erstellt. Wir hoffen, dass Sie diesen Artikel nützlich finden.