Migrieren der MySQL-Datenbank auf Azure-Datenbank für MySQL durch Sicherungen und WiederherstellungenMigrate your MySQL database to Azure Database for MySQL using dump and restore

In diesem Artikel werden zwei allgemeine Verfahren zum Sichern und Wiederherstellen von Datenbanken in Azure-Datenbank für MySQL beschriebenThis article explains two common ways to back up and restore databases in your Azure Database for MySQL

  • Sichern und Wiederherstellen über die Befehlszeile (mithilfe von „mysqldump“)Dump and restore from the command-line (using mysqldump)
  • Sichern und Wiederherstellen mithilfe von PHPMyAdminDump and restore using PHPMyAdmin

VoraussetzungenBefore you begin

Um diese Anleitung schrittweise auszuführen, müssen Sie Folgendes durchgeführt haben:To step through this how-to guide, you need to have:

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.If you are looking to migrate large databases with database sizes more than 1 TBs, you may want to consider using community tools like mydumper/myloader which supports parallel export and import. Durch das parallele Sichern und Wiederherstellen kann die Migrationszeit für große Datenbanken erheblich reduziert werden.Parallel dump and restore can help significantly reduce migration time for large databases. Informationen zu bewährten Methoden für die Migration großer Datenbanken zu Azure Database for MySQL mithilfe der Tools mydumper/myloader finden Sie im TechCommunity-Blog.You can refer to our techcommunity blog for best practices for migrating large databases to Azure Database for MySQL service using mydumper/myloader tools.

Verwenden von gängigen ToolsUse common tools

Mithilfe von gängigen Hilfsprogrammen und Tools wie MySQL Workbench oder mysqldump können Sie eine Remoteverbindung zu Azure Database for MySQL herstellen und Daten darin wiederherstellen.Use common utilities and tools such as MySQL Workbench or mysqldump to remotely connect and restore data into Azure Database for MySQL. Verwenden Sie diese Tools auf Ihrem Clientcomputer mit Internetverbindung, um eine Verbindung zu Azure-Datenbank für MySQL herzustellen.Use such tools on your client machine with an internet connection to connect to the Azure Database for MySQL. Um eine SSL-verschlüsselte Verbindung gemäß bewährter Sicherheitsmethoden zu verwenden, lesen Sie Konfigurieren von SSL-Konnektivität in Azure-Datenbank für MySQL.Use an SSL encrypted connection for best security practices, see also Configure SSL connectivity in Azure Database for MySQL. Bei der Migration auf Azure-Datenbank für MySQL müssen Sie Ihre Sicherungsdateien nicht in einen bestimmten Cloudspeicherort verschieben.You do not need to move the dump files to any special cloud location when migrating to Azure Database for MySQL.

Gängige Nutzungsszenarien für die Sicherung von Abbildern und die WiederherstellungCommon uses for dump and restore

Sie können MySQL-Hilfsprogramme wie mysqldump und mysqlpump verwenden, um Datenbanken in mehreren häufigen Szenarien zu sichern und in eine Azure MySQL-Datenbank zu laden.You may use MySQL utilities such as mysqldump and mysqlpump to dump and load databases into an Azure MySQL Database in several common scenarios. In anderen Szenarien können Sie stattdessen den Ansatz Importieren/Exportieren verwenden.In other scenarios, you may use the Import and Export approach instead.

  • Verwenden Sie Sicherungen von Datenbankabbildern, wenn Sie die gesamte Datenbank migrieren.Use database dumps when you are migrating the entire database. Diese Empfehlung gilt, wenn Sie eine große Menge von MySQL-Daten verschieben oder die Dienstunterbrechung für Live-Websites oder -Anwendungen minimieren möchten.This recommendation holds when moving a large amount of MySQL data, or when you want to minimize service interruption for live sites or applications.

  • Stellen Sie sicher, dass für alle Tabellen in der Datenbank die InnoDB-Speicher-Engine verwendet wird, wenn Daten in Azure Database for MySQL geladen werden.Make sure all tables in the database use the InnoDB storage engine when loading data into Azure Database for MySQL. Azure Database for MySQL unterstützt nur die InnoDB-Speicher-Engine und bietet keine Unterstützung für alternative Speicher-Engines.Azure Database for MySQL supports only InnoDB Storage engine, and therefore does not support alternative storage engines. Wenn Ihre Tabellen mit anderen Speicher-Engines konfiguriert werden, sollten Sie diese in das InnoDB-Engine-Format konvertieren, bevor Sie die Migration zu Azure Database for MySQL durchführen.If your tables are configured with other storage engines, convert them into the InnoDB engine format before migration to Azure Database for MySQL. Wenn Sie beispielsweise eine WordPress oder WebApp mit Verwendung der MyISAM-Tabellen nutzen, sollten Sie diese Tabellen zuerst konvertieren, indem Sie vor dem Wiederherstellen der Azure-Datenbank für MySQL die Migration zum InnoDB-Format durchführen.For example, if you have a WordPress or WebApp using the MyISAM tables, first convert those tables by migrating into InnoDB format before restoring to Azure Database for MySQL. 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.Use the clause ENGINE=InnoDB to set the engine used when creating a new table, then transfer the data into the compatible table before the restore.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    
  • 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.To avoid any compatibility issues, ensure the same version of MySQL is used on the source and destination systems when dumping databases. Wenn Ihr vorhandener MySQL-Server beispielsweise Version 5.7 hat, sollten Sie zu einer Azure-Datenbank für MySQL migrieren, die für die Ausführung von Version 5.7 konfiguriert ist.For example, if your existing MySQL server is version 5.7, then you should migrate to Azure Database for MySQL configured to run version 5.7. Der Befehl mysql_upgrade funktioniert auf einem Azure-Datenbank für MySQL-Server nicht und wird nicht unterstützt.The mysql_upgrade command does not function in an Azure Database for MySQL server, and is not supported. 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.If you need to upgrade across MySQL versions, first dump or export your lower version database into a higher version of MySQL in your own environment. Führen Sie anschließend mysql_upgrade aus, bevor Sie versuchen, die Migration zu einer Azure-Datenbank für MySQL durchzuführen.Then run mysql_upgrade, before attempting migration into an Azure Database for MySQL.

Überlegungen zur LeistungPerformance considerations

Beachten Sie beim Sichern der Abbilder von großen Datenbanken die folgenden Aspekte, um die Leistung zu optimieren:To optimize performance, take notice of these considerations when dumping large databases:

  • Verwenden Sie die Option exclude-triggers in mysqldump, wenn Sie Sicherungsabbilder von Datenbanken erstellen.Use the exclude-triggers option in mysqldump when dumping databases. Schließen Sie Trigger aus Abbilddateien aus, um zu verhindern, dass die Triggerbefehle während der Wiederherstellung der Daten ausgelöst werden.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • 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.Use the single-transaction option to set the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. Durch das Sichern vieler Tabellen in einer Transaktion wird bei der Wiederherstellung zusätzlicher Speicher benötigt.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. Die Optionen single-transaction und lock-tables sind wechselseitig exklusiv, da LOCK TABLES dazu führt, dass alle ausstehenden Transaktionen implizit committet werden.The single-transaction option and the lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly. Um große Tabellen zu sichern, kombinieren Sie die Optionen single-transaction und quick.To dump large tables, combine the single-transaction option with the quick option.
  • Verwenden Sie die Syntax für mehrere Zeilen extended-insert, die mehrere VALUE-Listen enthält.Use the extended-insert multiple-row syntax that includes several VALUE lists. Dies führt zu einer kleineren Speicherabbilddatei und beschleunigt Einfügevorgänge beim erneuten Laden der Datei.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • 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.Use the order-by-primary option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • Verwenden Sie in mysqldump beim Erstellen von Sicherungsabbildern für Daten die Option disable-keys, um vor dem Laden Fremdschlüsseleinschränkungen zu deaktivieren.Use the disable-keys option in mysqldump when dumping data, to disable foreign key constraints before load. Das Deaktivieren von Fremdschlüsselüberprüfungen führt zu Leistungssteigerungen.Disabling foreign key checks provides performance gains. Aktivieren Sie die Einschränkungen, und überprüfen Sie die Daten nach dem Laden, um die referentielle Integrität sicherzustellen.Enable the constraints and verify the data after the load to ensure referential integrity.
  • Verwenden Sie ggf. partitionierte Tabellen.Use partitioned tables when appropriate.
  • Laden Sie Daten parallel.Load data in 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.Avoid too much parallelism that would cause you to hit a resource limit, and monitor resources using the metrics available in the Azure portal.
  • Verwenden Sie in mysqlpump die Option defer-table-indexes, wenn Sie Sicherungsabbilder von Datenbanken erstellen, damit die Indexerstellung nach dem Laden der Tabellendaten erfolgt.Use the defer-table-indexes option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.
  • Verwenden Sie in mysqlpump die Option skip-definer, um DEFINER- und SQL SECURITY-Klauseln in den CREATE-Anweisungen für Sichten und gespeicherte Prozeduren zu überspringen.Use the skip-definer option in mysqlpump to omit definer and SQL SECURITY clauses from the create statements for views and stored procedures. Wenn Sie die Speicherabbilddatei erneut laden, werden Objekte erstellt, für die die DEFINER- und SQL SECURITY-Standardwerte verwendet werden.When you reload the dump file, it creates objects that use the default DEFINER and SQL SECURITY values.
  • 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.Copy the backup files to an Azure blob/store and perform the restore from there, which should be a lot faster than performing the restore across the Internet.

Erstellen einer Sicherungsdatei über die Befehlszeile „mysqldump“Create a backup file from the command-line using mysqldump

Führen Sie den folgenden Befehl aus, um eine vorhandene MySQL-Datenbank auf dem lokalen Server oder einem virtuellen Computer zu sichern:To back up an existing MySQL database on the local on-premises server or in a virtual machine, run the following command:

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

Es müssen folgende Parameter bereitgestellt werden:The parameters to provide are:

  • [uname] Der Datenbankbenutzername[uname] Your database username
  • [pass] Das Kennwort für Ihre Datenbank (beachten Sie, dass kein Leerzeichen zwischen „-p“ und dem Kennwort verwendet wird)[pass] The password for your database (note there is no space between -p and the password)
  • [dbname] Der Name der Datenbank[dbname] The name of your database
  • [backupfile.sql] Der Dateiname für die Datenbanksicherung[backupfile.sql] The filename for your database backup
  • [--opt] Die mysqldump-Option[--opt] The 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.For example, to back up a database named 'testdb' on your MySQL server with the username 'testuser' and with no password to a file testdb_backup.sql, use the following command. 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.The command backs up the testdb database into a file called testdb_backup.sql, which contains all the SQL statements needed to re-create the database. 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.Make sure that the username 'testuser' has at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, and LOCK TABLES if the --single-transaction option is not used.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';
$ 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.To select specific tables in your database to back up, list the table names separated by spaces. Um beispielsweise nur die Tabellen „table1“ und „table2“ von „testdb“ zu sichern, führen Sie folgendes Beispiel durch:For example, to back up only table1 and table2 tables from the 'testdb', follow this example:

$ 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.To back up more than one database at once, use the --database switch and list the database names separated by spaces.

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

Erstellen einer Datenbank auf dem Azure-Datenbank für MySQL-ZielserverCreate a database on the target Azure Database for MySQL server

Erstellen Sie eine leere Datenbank auf dem Azure-Datenbank für MySQL-Zielserver, zu dem Sie die Daten migrieren möchten.Create an empty database on the target Azure Database for MySQL server where you want to migrate the data. Verwenden Sie ein Tool wie MySQL Workbench zum Erstellen der Datenbank.Use a tool such as MySQL Workbench to create the database. 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.The database can have the same name as the database that is contained the dumped data or you can create a database with a different name.

Ermitteln Sie zum Herstellen der Verbindung die Verbindungsinformationen in der Übersicht Ihrer Azure Database for MySQL-Instanz.To get connected, locate the connection information in the Overview of your Azure Database for MySQL.

Ermitteln der Verbindungsinformationen im Azure-Portal

Fügen Sie die Verbindungsinformationen in MySQL-Workbench hinzu.Add the connection information into your MySQL Workbench.

MySQL Workbench-Verbindungszeichenfolge

Vorbereiten des Zielservers von Azure Database for MySQL für das schnelle Laden von DatenPreparing the target Azure Database for MySQL server for fast data loads

Wenn Sie den Azure Database for MySQL-Zielserver für das schnellere Laden von Daten vorbereiten möchten, müssen Sie die folgenden Serverparameter und die Konfiguration ändern.To prepare the target Azure Database for MySQL server for faster data loads, the following server parameters and configuration needs to be changed.

  • Legen Sie max_allowed_packet auf „1073741824“ (also 1 GB) fest, um Überlaufprobleme aufgrund langer Zeilen zu vermeiden.max_allowed_packet – set to 1073741824 (i.e. 1GB) to prevent any overflow issue due to long rows.
  • Legen Sie slow_query_log auf „OFF“ fest, um die langsame Abfrageprotokollierung zu deaktivieren.slow_query_log – set to OFF to turn off the slow query log. Dadurch entfällt der zusätzliche Aufwand, der durch eine langsame Abfrageprotokollierung während des Ladens von Daten verursacht wird.This will eliminate the overhead caused by slow query logging during data loads.
  • Legen Sie „query_store_capture_mode“ auf „NONE“ fest, um den Abfragespeicher zu deaktivieren.query_store_capture_mode – set to NONE to turn off the Query Store. Dadurch entfällt der Aufwand durch das Sampling von Aktivitäten durch den Abfragespeicher.This will eliminate the overhead caused by sampling activities by Query Store.
  • 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 – Scale up the server to 32 vCore Memory Optimized SKU from the Pricing tier of the portal during migration to increase the innodb_buffer_pool_size. Die innodb_buffer_pool_size kann nur durch Hochskalieren von Computeressourcen für Azure Database for MySQL-Server erhöht werden.Innodb_buffer_pool_size can only be increased by scaling up compute for Azure Database for MySQL server.
  • Ä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.innodb_io_capacity & innodb_io_capacity_max - Change to 9000 from the Server parameters in Azure portal to improve the IO utilization to optimize for migration speed.
  • Ä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.innodb_write_io_threads & innodb_write_io_threads - Change to 4 from the Server parameters in Azure portal to improve the speed of migration.
  • Skalieren Sie die Speicherebene hoch. Die IOPS für den Azure Database for MySQL-Server erhöhen sich progressiv mit dem Anstieg der Speicherebene.Scale up Storage tier – The IOPs for Azure Database for MySQL server increases progressively with the increase in storage tier. Für schnellere Ladevorgänge empfiehlt es sich, die Speicherebene zu erhöhen, um die bereitgestellten IOPS zu steigern.For faster loads, you may want to increase the storage tier to increase the IOPs provisioned. Beachten Sie jedoch, dass der Speicher nur hochskaliert, aber nicht herunterskaliert werden kann.Please do remember the storage can only be scaled up, not down.

Nach Abschluss der Migration können Sie die Serverparameter und die Konfiguration der Computeebene auf die vorherigen Werte zurücksetzen.Once the migration is completed, you can revert back the server parameters and compute tier configuration to its previous values.

Wiederherstellen der MySQL-Datenbank über die Befehlszeile oder MySQL WorkbenchRestore your MySQL database using command-line or MySQL Workbench

Nachdem Sie die Zieldatenbank erstellt haben, können Sie mithilfe des Befehls „mysql“ oder von MySQL Workbench Daten in der jeweiligen neu erstellten Datenbank anhand der Sicherungsdatei wiederherstellen.Once you have created the target database, you can use the mysql command or MySQL Workbench to restore the data into the specific newly created database from the dump file.

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

In diesem Beispiel stellen Sie die Daten in der neu erstellten Datenbank auf dem Azure-Datenbank für MySQL-Server wieder her.In this example, restore the data into the newly created database on the target Azure Database for MySQL server.

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

Exportieren mithilfe von PHPMyAdminExport using PHPMyAdmin

Für den Export können Sie das allgemeine Tool phpMyAdmin verwenden, das Sie eventuell bereits lokal in Ihrer Umgebung installiert haben.To export, you can use the common tool phpMyAdmin, which you may already have installed locally in your environment. So exportieren Sie Ihre MySQL-Datenbank mithilfe von PHPMyAdmin:To export your MySQL database using PHPMyAdmin:

  1. Öffnen Sie phpMyAdmin.Open phpMyAdmin.
  2. Wählen Sie Ihre Datenbank aus.Select your database. Klicken Sie in der Liste links auf den Datenbanknamen.Click the database name in the list on the left.
  3. Klicken Sie auf den Link Export.Click the Export link. Eine neue Seite mit dem Speicherabbild der Datenbank wird angezeigt.A new page appears to view the dump of database.
  4. Klicken Sie im Bereich „Export“ auf den Link Alle auswählen, um die Tabellen in Ihrer Datenbank auszuwählen.In the Export area, click the Select All link to choose the tables in your database.
  5. Klicken Sie im Bereich mit den SQL-Optionen auf die gewünschten Optionen.In the SQL options area, click the appropriate options.
  6. Klicken Sie auf die Option Als Datei speichern und die entsprechende Komprimierungsoption. Klicken Sie dann auf die Schaltfläche Gehe zu.Click the Save as file option and the corresponding compression option and then click the Go button. Es sollte ein Dialogfeld angezeigt werden, in dem Sie dazu aufgefordert werden, die Datei lokal zu speichern.A dialog box should appear prompting you to save the file locally.

Importieren mithilfe von PHPMyAdminImport using PHPMyAdmin

Der Import der Datenbank ist mit dem Exportvorgang vergleichbar.Importing your database is similar to exporting. Führen Sie folgende Aktionen durch:Do the following actions:

  1. Öffnen Sie phpMyAdmin.Open phpMyAdmin.
  2. Klicken Sie auf der phpMyAdmin-Setupseite auf Hinzufügen, um Ihren Azure-Datenbank für MySQL-Server hinzuzufügen.In the phpMyAdmin setup page, click Add to add your Azure Database for MySQL server. Geben Sie die Verbindungsdetails und Anmeldeinformationen an.Provide the connection details and login information.
  3. Erstellen Sie eine passend benannte Datenbank, und wählen Sie sie links auf dem Bildschirm aus.Create an appropriately named database and select it on the left of the screen. 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.To rewrite the existing database, click the database name, select all the check boxes beside the table names, and select Drop to delete the existing tables.
  4. Klicken Sie auf den Link SQL, um die Seite anzuzeigen, auf der Sie SQL-Befehle eingeben oder Ihre SQL-Datei hochladen können.Click the SQL link to show the page where you can type in SQL commands, or upload your SQL file.
  5. Verwenden Sie die Schaltfläche Durchsuchen, um nach der Datenbankdatei zu suchen.Use the browse button to find the database file.
  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.Click the Go button to export the backup, execute the SQL commands, and re-create your database.

Bekannte ProblemeKnown Issues

Informationen zu bekannten Problemen, Tipps und Tricks finden Sie in unserem TechCommunity-Blog.For known issues, tips and tricks, we recommend you to look at our techcommunity blog.

Nächste SchritteNext steps