Freigeben über


Beheben von Datenbankbeschädigungen in Azure Database for MySQL – Flexibler Server

Datenbankbeschädigungen können eine Downtime Ihrer Anwendung verursachen. Auch um Datenverluste zu vermeiden, ist es wichtig, Beschädigungsprobleme rechtzeitig zu beheben. Wenn eine Datenbankbeschädigung auftritt, wird der folgende Fehler in Ihren Serverprotokollen angezeigt: InnoDB: Database page corruption on disk or a failed.

In diesem Artikel erfahren Sie, wie Sie Probleme mit Datenbank- oder Tabellenbeschädigungen beheben. Azure Database for MySQL – Flexibler Server verwendet die InnoDB-Engine. Sie enthält automatisierte Überprüfungs- und Reparaturvorgänge. InnoDB wendet auf jede gelesene Seite Prüfsummen an, um beschädigte Seiten zu ermitteln. Bei einer Prüfsummenabweichung wird die Instanz von Azure Database for MySQL – Flexibler Server automatisch beendet.

Verwenden Sie die folgenden Optionen, um Datenbankbeschädigungs-Probleme schnell zu beheben.

Neustarten des MySQL-Servers

In der Regel stellen Sie fest, dass eine Datenbank oder Tabelle beschädigt ist, wenn Ihre Anwendung auf die Datenbank oder Tabelle zugreift. InnoDB bietet einen Mechanismus zur Wiederherstellung nach einem Absturz, der die meisten Probleme beheben kann, wenn der Server neu gestartet wird. Daher kann ein Neustart des Servers dem Server helfen, sich von einem Absturz zu erholen, der zu einem fehlerhaften Zustand der Datenbank geführt hat.

Verwenden der Sicherungs- und Wiederherstellungsmethode

Sie sollten Beschädigungsprobleme mit einer Sicherungs- und Wiederherstellungsmethode lösen. Diese Methode umfasst Folgendes:

  1. Zugreifen auf die beschädigte Tabelle.
  2. Verwenden des mysqldump-Hilfsprogramms, um eine logische Sicherung der Tabelle zu erstellen. Bei der Sicherung werden die Tabellenstruktur und die darin enthaltenen Daten beibehalten.
  3. Erneutes Laden der Tabelle in die Datenbank.

Sichern der Datenbank oder Tabellen

Wichtig

Erstellen Sie eine Sicherungsdatei über die Befehlszeile mit „mysqldump“. Verwenden Sie diesen Befehl:

$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]

Parameterbeschreibungen:

  • [ssl-cert=/path/to/pem]: Der Pfad zum SSL-Zertifikat. Laden Sie das SSL-Zertifikat auf Ihren Clientcomputer herunter, und geben Sie im Befehl den Pfad darin an. Verwenden Sie diesen Parameter nicht, wenn SSL deaktiviert ist.
  • [host]: Ihre Instanz von Azure Database for MySQL – Flexibler Server.
  • [uname]: Ihr Serveradministrator-Benutzername.
  • [pass]: Das Kennwort für Ihren Administratorbenutzer.
  • [dbname]: Der Name Ihrer Datenbank.
  • [backupfile.sql]: Der Dateiname der Datenbanksicherung.

Wichtig

  • Verwenden Sie für Azure Database for MySQL-Einzelserver das Format admin-user@servername, um myserveradmin in den nachstehenden Befehlen zu ersetzen.
  • Verwenden Sie für Azure Database for MySQL – Flexibler Server das Format admin-user, um myserveradmin in den nachstehenden Befehlen zu ersetzen.

Wenn eine bestimmte Tabelle beschädigt ist, wählen Sie bestimmte Tabellen in Ihrer Datenbank zur Sicherung aus:

$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql

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

$ mysqldump --ssl-cert=</path/to/pem>  -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Wiederherstellen der Datenbank oder Tabellen

Die folgenden Schritte zeigen Ihnen, wie Sie Ihre Datenbank oder Tabellen wiederherstellen können. Nachdem Sie die Sicherungsdatei erstellt haben, können Sie die Tabellen oder Datenbanken mithilfe des mysql-Hilfsprogramms wiederherstellen. Führen Sie den folgenden Befehl aus:

mysql  --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Hier folgt ein Beispiel für die Wiederherstellung von testdb aus einer Sicherungsdatei, die mit „mysqldump“ erstellt wurde:

Wichtig

  • Verwenden Sie für Azure Database for MySQL-Einzelserver das Format admin-user@servername, um myserveradmin im nachstehenden Befehl zu ersetzen.
  • Verwenden Sie für Azure Database for MySQL – Flexibler Server das Format admin-user, um myserveradmin im nachstehenden Befehl zu ersetzen.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql