Anwendungsmigration

Abgeschlossen

Wenn Sie Ihre Datenbank von einem lokalen Speicherort zu Azure migriert haben, müssen Sie Ihre vorhandenen Anwendungen aktualisieren, sodass diese am neuen Speicherort auf die MySQL-Datenbank zugreifen können.

Ihr ursprünglicher lokaler Server und Ihre ursprüngliche lokale Datenbank enthalten Rollen. Diese Rollen definieren Berechtigungen, die Benutzern zugeordnet sind, die Vorgänge, die von diesen Benutzern ausgeführt werden können, sowie die Objekte, für die diese Benutzer die genannten Vorgänge ausführen können. Für Azure Database for MySQL werden die gleichen Authentifizierungs- und Autorisierungsmethoden verwendet wie bei einer lokal ausgeführten MySQL-Instanz.

In dieser Lerneinheit erfahren Sie, welche Aktualisierungen Sie an Ihren Anwendungen vornehmen müssen, damit diese eine Verbindung mit der neu migrierten Azure Database for MySQL-Instanz herstellen können.

Manuelles Erstellen der Benutzer

Ihr ursprünglicher lokaler Server und Ihre ursprüngliche lokale Datenbank enthalten Benutzer, die Vorgänge, die diese Benutzer ausführen, sowie die Objekte, für die sie diese Vorgänge ausführen. Für Azure Database for MySQL werden die gleichen Authentifizierungs- und Autorisierungsmethoden verwendet wie bei einer lokal ausgeführten MySQL-Instanz.

Wenn Sie eine MySQL-Datenbank mithilfe von Azure Database Migration Service zu Azure Database for MySQL migrieren, werden die Benutzer nicht kopiert. Sie müssen die erforderlichen Benutzerkonten für den Administrator und die Benutzer der Tabellen in der Zieldatenbank manuell neu erstellen. Für diese Aufgaben wird SQL verwendet oder ein Hilfsprogramm wie MySQL Workbench. Führen Sie den Befehl CREATE USER aus. Mit dem Befehl GRANT weisen Sie einem Benutzer die erforderlichen Berechtigungen zu. Beispiel:

CREATE USER 'myuseraccount'@'%' IDENTIFIED BY 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE [Database Name].* TO myuseraccount;
FLUSH PRIVILEGES;

Führen Sie die folgende SQL-Anweisung aus, um die in der lokalen Datenbank vorhandenen Zuweisungen anzuzeigen:

USE [Database Name];

SHOW GRANTS FOR 'myuseraccount'@'%';;

Neukonfigurieren von Anwendungen

Das Neukonfigurieren einer Anwendung, sodass diese eine Verbindung mit Azure Database for MySQL herstellt, ist ein einfacher Prozess. Es ist jedoch wichtig, dass Sie eine Strategie für die Migration von Anwendungen entwickeln.

Überlegungen für das Neukonfigurieren von MySQL-Anwendungen

In einer Unternehmensumgebung kann es sein, dass viele Anwendungen dieselben MySQL-Datenbanken nutzen. Möglicherweise gibt es eine große Anzahl Benutzer, die diese Anwendungen ausführen. Sie möchten sicher sein, dass Ihre Systeme weiterhin funktionieren, Benutzer weiterarbeiten können und der Betrieb unternehmenskritischer Vorgänge nach wie vor gewährleistet ist, wenn Sie vom vorhandenen System zu Azure Database for MySQL wechseln. In Modul 1 wurden in Lerneinheit 3 (Überlegungen zur Migration) viele dieser Themen bereits auf allgemeiner Ebene besprochen.

Beim Migrieren einer MySQL-Datenbank zu Azure sind einige Besonderheiten zu beachten:

  • Wenn Sie eine Offlinemigration durchführen, kann es schnell passieren, dass die Daten in der ursprünglichen MySQL-Datenbank von den Daten in den neuen Datenbanken abweichen, die in Azure ausgeführt werden, wenn die alte Datenbank weiterhin verwendet wird. Eine Offlinemigration ist für Szenarios geeignet, in denen der Betrieb eines Systems kurzzeitig vollständig eingestellt wird und dann alle Anwendungen auf das neue System umgestellt werden, bevor das System wieder gestartet wird. Dieser Ansatz ist für ein unternehmenskritisches System möglicherweise ungeeignet. Wenn Sie eine Migration zu einer auf einer Azure-VM ausgeführten MySQL-Instanz durchführen, können Sie die MySQL-Replikation zwischen Ihrem lokalen System und dem in Azure ausgeführten System konfigurieren. Die native MySQL-Replikation erfolgt nur in eine Richtung. Es gibt jedoch Drittanbieterlösungen, die eine bidirektionale Replikation zwischen MySQL-Servern unterstützen. Diese Lösungen funktionieren mit Azure Database for MySQL jedoch nicht.
  • Wenn Sie eine Onlinemigration durchführen, richtet Azure Database for MySQL die Replikation von der lokalen Datenbank in die in Azure ausgeführte Datenbank ein. Nach der ersten Datenübertragung sorgt die Replikation dafür, dass alle in der lokalen Datenbank vorgenommenen Änderungen in die Datenbank in Azure kopiert werden, jedoch nicht umgekehrt.

In beiden Fällen sollten Sie sicherstellen, dass keine Livedaten durch versehentliches Überschreiben verloren gehen. Im Onlineszenario könnten beispielsweise Änderungen einer Anwendung, die mit der in Azure Database for MySQL ausgeführten Datenbank verbunden ist, einfach von einer Anwendung überschrieben werden, die noch die lokale Datenbank verwendet. Daher sollten Sie die folgenden Ansätze in Betracht ziehen:

  • Migrieren Sie Anwendungen basierend auf dem jeweiligen Workloadtyp. Eine Anwendung, die nur zu Lesezwecken auf die Daten zugreift, kann sicher in die Datenbank in Azure Database for MySQL verschoben werden und dennoch alle Änderungen sehen, die von Anwendungen vorgenommen werden, die noch die lokale Datenbank verwenden. Sie können auch die umgekehrte Strategie verwenden, wenn schreibgeschützte Anwendungen nicht die jeweils aktuellsten Daten benötigen.
  • Migrieren Sie Benutzer basierend auf dem jeweiligen Workloadtyp. Diese Strategie ähnelt der vorherigen, bis auf die Tatsache, dass Sie möglicherweise über Benutzer verfügen, die nur Berichte erstellen, während andere die Daten auch ändern. Es kann sein, dass Sie hierbei dieselbe Anwendung so konfiguriert haben, dass sie den Benutzeranforderungen entsprechend eine Verbindung zur benötigten Datenbank herstellt.
  • Migrieren Sie Anwendungen basierend auf den verwendeten Datasets. Wenn verschiedene Anwendungen verschiedene Teilmengen der Daten nutzen, können Sie diese Anwendungen möglicherweise unabhängig voneinander migrieren.

Neukonfigurieren einer Anwendung

Beim Neukonfigurieren einer Anwendung verweisen Sie auf die neue Datenbank. Bei den meisten gut geschriebenen Anwendungen sollte die Verbindungslogik isoliert sein. Dies sollte auch der einzige Codeteil sein, der geändert werden muss. In vielen Fällen sind die Verbindungsinformationen als Konfigurationsinformationen gespeichert, sodass Sie nur diese Informationen aktualisieren müssen.

Die Verbindungsinformationen für Ihre Azure Database for MySQL-Instanz finden Sie im Azure-Portal auf der Seite Verbindungszeichenfolgen für den Dienst. Azure stellt diese Informationen für viele gängige Programmiersprachen und Frameworks bereit.

Image showing the Connection strings page for Azure Database for MySQL item in the Azure portal

Öffnen von Netzwerkports

Wie in Lerneinheit 2 dieses Moduls bereits erwähnt, handelt es sich bei Azure Database for MySQL um einen geschützten Dienst, der hinter einer Firewall ausgeführt wird. Clients können nur eine Verbindung herstellen, wenn ihre IP-Adresse vom Dienst erkannt wird. Sie müssen die IP-Adressen oder Adressblockbereiche für Clients hinzufügen, die Anwendungen ausführen, die eine Verbindung mit Ihren Datenbanken herstellen müssen.

Testen und Überprüfen von Anwendungen

Bevor Sie Anwendungen und Benutzer auf die neue Datenbank umstellen, müssen Sie sicherstellen, dass Sie alles richtig konfiguriert haben.

Beginnen Sie damit, eine Probeausführung für die Anwendungen durchzuführen und sich mit den einzelnen Rollen zu verbinden, um sicherzustellen, dass die richtige Funktionalität gegeben ist.

Führen Sie dann Belastungstests durch, um die Anzahl von Benutzern zu simulieren, die typische Workloads gleichzeitig für einen bestimmten Zeitraum ausführen. Überwachen Sie das System, und überprüfen Sie, ob Sie dem Azure Database for MySQL-Dienst ausreichend Ressourcen zugeordnet haben.

Nun können Sie mit dem Rollout des Systems für Benutzer beginnen. Manchmal kann es nützlich sein, eine Art Canarytest zu implementieren, bei dem eine kleine Teilmenge der Benutzer zum neuen System wechselt, ohne davon zu wissen. So erhalten Sie eine unvoreingenommene Meinung darüber, ob Benutzer mit der neuen Datenbank gleich zufrieden, zufriedener oder unzufriedener sind.