Migrieren Ihrer MySQL-Datenbank zu Azure-Datenbank für MySQL – Flexibler Server mit Dump und Wiederherstellung

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

Wichtig

Azure Database for MySQL single server is on the retirement path. Es wird dringend empfohlen, ein Upgrade auf azure Database for MySQL flexiblen Server durchzufü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 gängige Methoden zum Sichern und Wiederherstellen von Datenbanken in der Azure-Datenbank für den flexiblen Server von MySQL erläutert.

  • Dump and restore from the command-line (using mysqldump).
  • Dump and restore using PHPMyAdmin.

Sie können sich auch im Datenbankmigrationshandbuch befinden, um detaillierte Informationen und Anwendungsfälle zum Migrieren von Datenbanken zu Azure Database für MySQL flexiblen Server zu erhalten. 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 flexible Server unterstützt keine Wiederherstellung physischer Sicherungen, wodurch logische Sicherungen und Wiederherstellungen als ONLY-Ansatz erstellt werden.

  • Verschieben Des Sicherungsspeichers von lokal redundant in georedundanten Speicher – Azure Database for MySQL flexible Server ermöglicht das Konfigurieren lokal redundanter oder georedundanter 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.

  • Das Migrieren von alternativen Speichermodulen zu InnoDB – Azure Database for MySQL flexible Server unterstützt nur das InnoDB Storage-Modul und unterstützt daher keine alternativen Speichermodule. Wenn Ihre Tabellen mit anderen Speichermodulen konfiguriert sind, konvertieren Sie sie vor der Migration zu Azure Database for MySQL flexiblen Server in das InnoDB-Modulformat.

    Wenn Sie beispielsweise über ein WordPress- oder WebApp-Objekt verfügen, das die MyISAM-Tabellen verwendet, konvertieren Sie diese Tabellen zuerst, indem Sie in das InnoDB-Format migrieren, bevor Sie den flexiblen Server in Azure Database für MySQL wiederherstellen. 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 ist, sollten Sie zu einer flexiblen Azure-Serverinstanz migrieren, die für die Ausführung von Version 5.7 konfiguriert ist. Der mysql_upgrade Befehl funktioniert nicht in einer Azure-Datenbank für eine flexible Serverinstanz von MySQL 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 dann vor mysql_upgrade dem Versuch einer Migration in eine azure-Datenbank für eine flexible Serverinstanz von MySQL aus.

Ü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 Azure-Zieldatenbank für die flexible Serverinstanz von MySQL

Erstellen Sie eine leere Datenbank in der Azure-Zieldatenbank für mySQL flexible Serverinstanz, in der 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.

Um eine Verbindung herzustellen, suchen Sie die Verbindungsinformationen in der Übersicht ihrer Azure-Datenbank für die flexible Serverinstanz von MySQL.

Find the connection information in the Azure portal

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

MySQL Workbench Connection String

Vorbereiten der Azure-Zieldatenbank für die flexible Serverinstanz von MySQL für schnelle Datenladevorgänge

Um die Azure-Zieldatenbank für eine flexible Serverinstanz von MySQL für schnellere Datenladevorgänge vorzubereiten, müssen die folgenden Serverparameter und die Konfiguration geändert werden.

  • 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 skalierungsaufwendigen Compute für die flexible Serverinstanz von Azure Database für MySQL 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.
  • Speicherebene skalieren – Die IOPs für Die Azure-Datenbank für MySQL flexible Server steigen schrittweise mit der Erhöhung 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]

Stellen Sie in diesem Beispiel die Daten in der neu erstellten Datenbank in der Azure-Zieldatenbank für die flexible Serverinstanz von MySQL 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 Azure-Datenbank für die flexible Serverinstanz mySQL 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