Migrieren der MySQL-Datenbank zu Azure Database for MySQL – Flexibler Server durch Sicherungen und Wiederherstellungen

GILT FÜR:Azure Database for MySQL Single Server Azure Database for MySQL Flexible Server

Wichtig

Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?

In diesem Artikel werden zwei häufige Verfahren zum Sichern und Wiederherstellen von Datenbanken in Azure Database for MySQL – Flexibler Server beschrieben.

  • Sichern und Wiederherstellen über die Befehlszeile (mithilfe von „mysqldump“)
  • Sichern und Wiederherstellen mithilfe von PHPMyAdmin

Ausführliche Informationen und Anwendungsfälle für die Migration von Datenbanken zu Azure Database for MySQL – Flexibler Server finden Sie auch im Leitfaden zur Datenbankmigration. Dieser Leitfaden enthält wichtige Informationen zur erfolgreichen Planung und Ausführung einer MySQL-Migration zu Azure.

Voraussetzungen

Um diese Anleitung schrittweise auszuführen, müssen Sie Folgendes durchgeführt haben:

Tipp

Wenn Sie große Datenbanken mit mehr als 1 TB migrieren möchten, können Sie die Verwendung von Communitytools wie mydumper/myloader in Erwägung ziehen, die den parallelen Export und Import unterstützen. Erfahren Sie mehr über das Migrieren großer MySQL-Datenbanken.

Gängige Anwendungsfälle für die Sicherung und Wiederherstellung

Gängige Anwendungsfälle:

  • Wechsel von einem anderen Anbieter eines verwalteten Diensts: Die meisten Anbieter verwalteter Dienste bieten aus Sicherheitsgründen möglicherweise keinen Zugriff auf die physische Speicherdatei, sodass für die Migration die logische Sicherung und Wiederherstellung die einzige Option darstellt.

  • Migrieren von einer lokalen Umgebung oder einem virtuellen Computer: Azure Database for MySQL – Flexibler Server unterstützt keine Wiederherstellung physischer Sicherungen, sodass als EINZIGER Ansatz das logische Sichern und Wiederherstellen infrage kommt.

  • Verschieben des Sicherungsspeichers von lokal redundantem in georedundanten Speicher: Azure Database for MySQL – Flexibler Server ermöglicht das Konfigurieren von lokal redundantem oder georedundantem Speicher für die Sicherung nur während der Servererstellung. Sobald der Server bereitgestellt wurde, können Sie die Redundanzoption für den Sicherungsspeicher nicht mehr ändern. Zum Verschieben Ihres Sicherungsspeichers aus lokal redundantem Speicher in georedundanten Speicher ist das Sichern und Wiederherstellen die EINZIGE Option.

  • Migrieren von alternativen Speicher-Engines zu InnoDB: Azure Database for MySQL – Flexibler Server unterstützt nur die InnoDB-Speicher-Engine und somit keine alternativen Speicher-Engines. Wenn Ihre Tabellen mit anderen Speicher-Engines konfiguriert sind, sollten Sie diese in das InnoDB-Engine-Format konvertieren, bevor Sie die Migration zu Azure Database for MySQL – Flexibler Server durchführen.

    Wenn Sie beispielsweise WordPress oder WebApp mit MyISAM-Tabellen nutzen, sollten Sie diese Tabellen zuerst konvertieren, indem Sie sie vor dem Wiederherstellen in Azure Database for MySQL – Flexibler Server ins zum InnoDB-Format migrieren. Verwenden Sie die ENGINE=InnoDB-Klausel zum Festlegen der Engine, die beim Erstellen einer neuen Tabelle verwendet wird, und übertragen Sie die Daten vor der Wiederherstellung dann in die kompatible Tabelle.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Wichtig

  • Stellen Sie zur Verhinderung von Kompatibilitätsproblemen sicher, dass beim Sichern von Datenbankabbildern auf den Quell- und Zielsystemen die gleiche Version von MySQL verwendet wird. Wenn Ihr vorhandener MySQL-Server beispielsweise Version 5.7 hat, sollten Sie zu einer Instanz von Azure Database for MySQL – Flexibler Server migrieren, die für diese konfiguriert ist. Der Befehl mysql_upgrade funktioniert nicht auf Instanzen von Azure Database for MySQL – Flexibler Server und wird nicht unterstützt.
  • Wenn Sie ein übergreifendes Upgrade für MySQL-Versionen durchführen müssen, sollten Sie die niedrigere Version Ihrer Datenbank in Ihrer eigenen Umgebung zuerst in einer höheren Version von MySQL sichern bzw. exportieren. Führen Sie anschließend mysql_upgrade aus, bevor Sie versuchen, die Migration zu einer Instanz von Azure Database for MySQL – Flexibler Server durchzuführen.

Überlegungen zur Leistung

Beachten Sie beim Sichern der Abbilder von großen Datenbanken die folgenden Aspekte, um die Leistung zu optimieren:

  • Verwenden Sie die Option exclude-triggers in mysqldump, wenn Sie Sicherungsabbilder von Datenbanken erstellen. Schließen Sie Trigger aus Abbilddateien aus, um zu verhindern, dass die Triggerbefehle während der Wiederherstellung der Daten ausgelöst werden.
  • Verwenden Sie die Option single-transaction, um den Transaktionsisolationsmodus auf REPEATABLE READ festzulegen und um die SQL-Anweisung START TRANSACTION an den Server zu senden, bevor die Daten gesichert werden. Durch das Sichern vieler Tabellen in einer Transaktion wird bei der Wiederherstellung zusätzlicher Speicher benötigt. Die Optionen single-transaction und lock-tables sind wechselseitig exklusiv, da LOCK TABLES dazu führt, dass alle ausstehenden Transaktionen implizit committet werden. Um große Tabellen zu sichern, kombinieren Sie die Optionen single-transaction und quick.
  • Verwenden Sie die Syntax für mehrere Zeilen extended-insert, die mehrere VALUE-Listen enthält. Dies führt zu einer kleineren Speicherabbilddatei und beschleunigt Einfügevorgänge beim erneuten Laden der Datei.
  • Verwenden Sie in mysqldump die Option order-by-primary, wenn Sie Datenbanken sichern, damit die Skripterstellung für die Daten in der Primärschlüssel-Reihenfolge erfolgt.
  • Verwenden Sie in mysqldump beim Erstellen von Sicherungsabbildern für Daten die Option disable-keys, um vor dem Laden Fremdschlüsseleinschränkungen zu deaktivieren. Das Deaktivieren von Fremdschlüsselüberprüfungen führt zu Leistungssteigerungen. Aktivieren Sie die Einschränkungen, und überprüfen Sie die Daten nach dem Laden, um die referentielle Integrität sicherzustellen.
  • Verwenden Sie ggf. partitionierte Tabellen.
  • Laden Sie Daten parallel. Vermeiden Sie zu viel Parallelität, da dies zum Erreichen eines Ressourcenlimits führen kann, und überwachen Sie die Ressourcen mit den Metriken, die im Azure-Portal verfügbar sind.
  • Verwenden Sie in mysqldump die Option defer-table-indexes, wenn Sie Sicherungsabbilder von Datenbanken erstellen, damit die Indexerstellung nach dem Laden der Tabellendaten erfolgt.
  • Kopieren Sie die Sicherungsdateien in einen Azure-Blob/-Speicher, und führen Sie die Wiederherstellung dort aus. Das sollte um einiges schneller sein als die Wiederherstellung über das Internet.

Erstellen einer Datenbank in der Zielinstanz von Azure Database for MySQL – Flexibler Server

Erstellen Sie eine leere Datenbank in der Zielinstanz von Azure Database for MySQL – Flexibler Server, in die Sie die Daten migrieren möchten. Verwenden Sie ein Tool wie MySQL Workbench oder mysql.exe zum Erstellen der Datenbank. Die Datenbank kann denselben Namen aufweisen wie die Datenbank, die die Sicherungsdaten enthält, oder Sie können eine Datenbank mit einem anderen Namen erstellen.

Ermitteln Sie zum Herstellen der Verbindung die Verbindungsinformationen in der Übersicht Ihrer Instanz von Azure Database for MySQL – Flexibler Server.

Ermitteln der Verbindungsinformationen im Azure-Portal

Fügen Sie die Verbindungsinformationen in MySQL-Workbench hinzu.

MySQL Workbench-Verbindungszeichenfolge

Vorbereiten der Zielinstanz von Azure Database for MySQL – Flexibler Server für das schnelle Laden von Daten

Wenn Sie die Zielinstanz von Azure Database for MySQL – Flexibler Server für das schnellere Laden von Daten vorbereiten möchten, müssen Sie die folgenden Serverparameter und Konfigurationseinstellungen ändern.

  • Legen Sie „max_allowed_packet“ auf „1073741824“ (also 1 GB) fest, um Überlaufprobleme aufgrund langer Zeilen zu vermeiden.
  • Legen Sie slow_query_log auf „OFF“ fest, um die langsame Abfrageprotokollierung zu deaktivieren. Dadurch entfällt der zusätzliche Aufwand, der durch eine langsame Abfrageprotokollierung während des Ladens von Daten verursacht wird.
  • Legen Sie „query_store_capture_mode“ auf „NONE“ fest, um den Abfragespeicher zu deaktivieren. Dadurch entfällt der Aufwand durch das Sampling von Aktivitäten durch den Abfragespeicher.
  • Skalieren Sie den Server im Portal auf der Tarifseite während der Migration auf die arbeitsspeicheroptimierte SKU mit 32 virtuellen Kernen hoch, um die innodb_buffer_pool_size zu erhöhen. „innodb_buffer_pool_size“ kann nur durch Hochskalieren von Computeressourcen für die Instanz von Azure Database for MySQL – Flexibler Server erhöht werden.
  • Ändern Sie „innodb_io_capacity“ und „innodb_io_capacity_max“ in den Serverparametern im Azure-Portal auf „9.000“, um die E/A-Auslastung zu verbessern und die Migrationsgeschwindigkeit damit zu optimieren.
  • Ändern Sie „innodb_write_io_threads“ und „innodb_write_io_threads“ in den Serverparametern im Azure-Portal auf „4“, um die Migrationsgeschwindigkeit zu erhöhen.
  • Skalieren Sie die Speicherebene hoch. Die IOPS für Azure Database for MySQL – Flexibler Server erhöhen sich mit dem Anstieg der Speicherebene. Für schnellere Ladevorgänge empfiehlt es sich, die Speicherebene zu erhöhen, um die bereitgestellten IOPS zu steigern. Beachten Sie jedoch, dass der Speicher nur hochskaliert, aber nicht herunterskaliert werden kann.

Nach Abschluss der Migration können Sie die Serverparameter und die Konfiguration der Computeebene auf die vorherigen Werte zurücksetzen.

Sichern und Wiederherstellen mit dem mysqldump-Hilfsprogramm

Erstellen einer Sicherungsdatei über die Befehlszeile „mysqldump“

Führen Sie den folgenden Befehl aus, um eine vorhandene MySQL-Datenbank auf dem lokalen Server oder einem virtuellen Computer zu sichern:

mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

Es müssen folgende Parameter bereitgestellt werden:

  • [uname] Der Datenbankbenutzername
  • [pass] Das Kennwort für Ihre Datenbank (Beachten Sie, dass kein Leerzeichen zwischen „-p“ und dem Kennwort verwendet wird.)
  • [dbname] Der Name der Datenbank
  • [backupfile.sql] Der Dateiname für die Datenbanksicherung
  • [--opt] Die mysqldump-Option

Um eine Datenbank namens „testdb“ mit dem Benutzernamen „testuser“ auf Ihrem MySQL-Server ohne Kennwort als Datei mit dem Namen „testdb_backup.sql“ zu sichern, verwenden Sie folgenden Befehl. Mit dem Befehl wird die Datenbank testdb in einer Datei mit dem Namen testdb_backup.sql gesichert, die alle SQL-Anweisungen enthält, die zum erneuten Erstellen der Datenbank erforderlich sind. Stellen Sie sicher, dass der Benutzername „testuser“ mindestens über die SELECT-Berechtigung für verworfene Tabellen, die SHOW VIEW-Berechtigung für verworfene Sichten, die TRIGGER-Berechtigung für verworfene Trigger und die LOCK TABLES-Berechtigung verfügt, wenn die Option --single-transaction nicht verwendet wird.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

Führen Sie jetzt mysqldump aus, um die Sicherung der testdb-Datenbank zu erstellen.

mysqldump -u root -p testdb > testdb_backup.sql

Um zur Sicherung bestimmte Tabellen in der Datenbank auszuwählen, listen Sie die Tabellennamen durch Leerzeichen getrennt auf. Um beispielsweise nur die Tabellen „table1“ und „table2“ von „testdb“ zu sichern, führen Sie folgendes Beispiel durch:

mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

Um mehrere Datenbanken gleichzeitig zu sichern, verwenden Sie den Schalter --database, und listen Sie die Datenbanknamen durch Leerzeichen getrennt auf.

mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Wiederherstellen der MySQL-Datenbank über die Befehlszeile

Nachdem Sie die Zieldatenbank erstellt haben, können Sie mithilfe des Befehls „mysql“ Daten in der jeweiligen neu erstellten Datenbank anhand der Sicherungsdatei wiederherstellen.

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

In diesem Beispiel stellen Sie die Daten in der neu erstellten Datenbank in der Zielinstanz von Azure Database for MySQL – Flexibler Server wieder her.

Hier ist ein Beispiel dafür, wie der Befehl mysql für Single Server verwendet wird:

mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

Hier ist ein Beispiel dafür, wie der Befehl mysql für Flexible Server verwendet wird:

mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

Sichern und Wiederherstellen mithilfe von PHPMyAdmin

Befolgen Sie diese Schritte, um eine Datenbank mithilfe von PHPMyadmin zu sichern und wiederherzustellen.

Hinweis

Für Single Server muss der Benutzername im Format 'username@servername' vorliegen, aber für flexible Server können Sie einfach 'Benutzername' verwenden. Wenn Sie 'username@servername' für flexible Server verwenden, tritt ein Fehler bei der Verbindung auf.

Exportieren mit PHPMyadmin

Für den Export können Sie das allgemeine Tool phpMyAdmin verwenden, das Sie eventuell bereits lokal in Ihrer Umgebung installiert haben. So exportieren Sie Ihre MySQL-Datenbank mithilfe von PHPMyAdmin:

  1. Öffnen Sie phpMyAdmin.
  2. Wählen Sie Ihre Datenbank aus. Wählen Sie in der Liste links den Datenbanknamen aus.
  3. Wählen Sie den Link Exportieren aus. Eine neue Seite mit dem Speicherabbild der Datenbank wird angezeigt.
  4. Klicken Sie im Bereich Export auf den Link Alle auswählen, um die Tabellen in Ihrer Datenbank auszuwählen.
  5. Klicken Sie im Bereich SQL-Optionen auf die gewünschten Optionen.
  6. Wählen Sie die Option Als Datei speichern und die entsprechende Komprimierungsoption aus. Wählen Sie dann die Schaltfläche Gehe zu aus. Es sollte ein Dialogfeld angezeigt werden, in dem Sie dazu aufgefordert werden, die Datei lokal zu speichern.

Importieren mithilfe von PHPMyAdmin

Der Import der Datenbank ist mit dem Exportvorgang vergleichbar. Führen Sie folgende Aktionen durch:

  1. Öffnen Sie phpMyAdmin.
  2. Wählen Sie auf der phpMyAdmin-Setupseite Hinzufügen aus, um Ihre Instanz von Azure Database for MySQL – Flexibler Server hinzuzufügen. Geben Sie die Verbindungsdetails und Anmeldeinformationen an.
  3. Erstellen Sie eine passend benannte Datenbank, und wählen Sie sie links auf dem Bildschirm aus. Klicken Sie zum erneuten Generieren der vorhandenen Datenbank auf den Datenbanknamen, aktivieren Sie alle Kontrollkästchen neben den Tabellennamen, und wählen Sie Drop (Verwerfen), um die vorhandenen Tabellen zu löschen.
  4. Wählen Sie den Link SQL aus, um die Seite anzuzeigen, auf der Sie SQL-Befehle eingeben oder Ihre SQL-Datei hochladen können.
  5. Verwenden Sie die Schaltfläche Durchsuchen, um nach der Datenbankdatei zu suchen.
  6. Klicken Sie auf die Schaltfläche Go (Los), um die Sicherung zu exportieren, die SQL-Befehle auszuführen und die Datenbank neu zu erstellen.

Bekannte Probleme

Informationen zu bekannten Problemen, Tipps und Tricks finden Sie in unserem TechCommunity-Blog.

Nächste Schritte