Migrieren der MySQL-Datenbank zu Azure Database for MySQL – Flexibler Server durch Sicherungen und Wiederherstellungen
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:
- Eine Instanz von Azure Database for MySQL – Flexibler Server im Azure-Portal
- Installation des Befehlszeilenprogramms mysqldump auf einem Computer
- MySQL Workbench oder einem anderen MySQL-Drittanbietertool zur Ausführung von Sicherungs- und Wiederherstellungsbefehlen.
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 Managed Service Provider: Die meisten Managed Service Provider 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 Optionensingle-transaction
undlock-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 Optionensingle-transaction
undquick
. - 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.
Fügen Sie die Verbindungsinformationen in MySQL-Workbench hinzu.
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
Hinweis
Sie können auch das MySQL Workbench-Clienthilfsprogramm zum Wiederherstellen der MySQL-Datenbank verwenden.
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:
- Öffnen Sie phpMyAdmin.
- Wählen Sie Ihre Datenbank aus. Wählen Sie in der Liste links den Datenbanknamen aus.
- Wählen Sie den Link Exportieren aus. Eine neue Seite mit dem Speicherabbild der Datenbank wird angezeigt.
- Klicken Sie im Bereich Export auf den Link Alle auswählen, um die Tabellen in Ihrer Datenbank auszuwählen.
- Klicken Sie im Bereich SQL-Optionen auf die gewünschten Optionen.
- 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:
- Öffnen Sie phpMyAdmin.
- 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.
- 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.
- Wählen Sie den Link SQL aus, um die Seite anzuzeigen, auf der Sie SQL-Befehle eingeben oder Ihre SQL-Datei hochladen können.
- Verwenden Sie die Schaltfläche Durchsuchen, um nach der Datenbankdatei zu suchen.
- 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.