Problembehandlung bei Datenbankbeschädigungen in Der Azure-Datenbank für MySQL – Flexibler Server
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?
Datenbankbeschädigungen können eine Downtime Ihrer Anwendung verursachen. Auch um Datenverluste zu vermeiden, ist es wichtig, Beschädigungsprobleme rechtzeitig zu beheben. Wenn datenbankbeschädigung auftritt, wird dieser Fehler in Ihren Serverprotokollen angezeigt: InnoDB: Database page corruption on disk or a failed.
In diesem Artikel erfahren Sie, wie Sie Datenbank- oder Tabellenbeschädigungsprobleme beheben. Azure Database for MySQL flexible Server verwendet das InnoDB-Modul. Sie enthält automatisierte Überprüfungs- und Reparaturvorgänge. InnoDB wendet auf jede gelesene Seite Prüfsummen an, um beschädigte Seiten zu ermitteln. Wenn eine Prüfsummenabweichung gefunden wird, wird die Azure-Datenbank für die flexible Serverinstanz von MySQL 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. Das Neustarten des Servers kann dem Server bei der Wiederherstellung eines Absturzes helfen, der dazu führte, dass die Datenbank in einem fehlerhaften Zustand war.
Verwenden der Sicherungs- und Wiederherstellungsmethode
Sie sollten Beschädigungsprobleme mit einer Sicherungs- und Wiederherstellungsmethode lösen. Diese Methode umfasst Folgendes:
- Zugreifen auf die beschädigte Tabelle.
- Verwenden des mysqldump-Hilfsprogramms, um eine logische Sicherung der Tabelle zu erstellen. Bei der Sicherung werden die Tabellenstruktur und die darin enthaltenen Daten beibehalten.
- Erneutes Laden der Tabelle in die Datenbank.
Sichern der Datenbank oder Tabellen
Wichtig
- Stellen Sie sicher, dass Sie eine Firewallregel konfiguriert haben, um von Ihrem Clientcomputer aus auf den Server zuzugreifen. Weitere Informationen finden Sie unter Konfigurieren einer Firewallregel auf Azure Database für MySQL single server und configure a firewall rule on Azure Database for MySQL flexible server.
- Verwenden Sie die SSL-Option
--ssl-cert
für „mysqldump“, wenn SSL aktiviert ist.
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 Azure-Datenbank für mySQL flexible Serverinstanz.[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 single server das Format
admin-user@servername
, um in den folgenden Befehlen zu ersetzenmyserveradmin
. - Verwenden Sie für den flexiblen Azure-Datenbankserver für MySQL das Format
admin-user
, um in den folgenden Befehlen zu ersetzenmyserveradmin
.
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 single server das Format
admin-user@servername
, um es im folgenden Befehl zu ersetzenmyserveradmin
. - Verwenden Sie für den flexiblen Azure-Datenbankserver für MySQL das Format
admin-user
, um es im folgenden Befehl zu ersetzenmyserveradmin
.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql
Nächste Schritte
Wenn die oben genannten Schritte nicht zur Lösung des Problems beitragen, können Sie jederzeit den gesamten Server wiederherstellen: