Delen via


Problemen met databasebeschadiging oplossen in Azure Database for MySQL - Flexibele server

Databasebeschadiging kan downtime veroorzaken voor uw toepassing. Het is ook essentieel om beschadigingsproblemen op tijd op te lossen om gegevensverlies te voorkomen. Wanneer er sprake is van beschadiging van de database, ziet u deze fout in uw serverlogboeken: InnoDB: Database page corruption on disk or a failed.

In dit artikel leert u hoe u problemen met beschadigde databases of tabellen kunt oplossen. Azure Database for MySQL Flexible Server maakt gebruik van de InnoDB-engine. Het bevat geautomatiseerde beschadigingscontrole- en reparatiebewerkingen. InnoDB controleert op beschadigde pagina's door controlesommen uit te voeren op elke pagina die wordt gelezen. Als er een checksum-discrepantie wordt gevonden, wordt het exemplaar van Azure Database for MySQL Flexible Server automatisch gestopt.

Probeer de volgende opties om uw problemen met databasebeschadiging snel te verhelpen.

De MySQL-server opnieuw opstarten

Meestal merkt u dat een database of tabel beschadigd is wanneer uw toepassing toegang heeft tot de tabel of database. InnoDB bevat een crashherstelmechanisme waarmee de meeste problemen kunnen worden opgelost wanneer de server opnieuw wordt opgestart. Door de server opnieuw op te starten, kan de server worden hersteld na een crash waardoor de database een slechte status heeft.

De dump- en herstelmethode gebruiken

U wordt aangeraden beschadigingsproblemen op te lossen met behulp van een dump- en herstelmethode . Deze methode omvat:

  1. Toegang tot de beschadigde tabel.
  2. Gebruik het hulpprogramma mysqldump om een logische back-up van de tabel te maken. De back-up behoudt de tabelstructuur en de gegevens erin.
  3. De tabel opnieuw laden in de database.

Een back-up maken van uw database of tabellen

Belangrijk

Maak een back-upbestand vanaf de opdrachtregel met behulp van mysqldump. Gebruik deze opdracht

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

Parameterbeschrijvingen:

  • [ssl-cert=/path/to/pem]: het pad naar het SSL-certificaat. Download het SSL-certificaat op uw clientcomputer en stel het pad erin in de opdracht in. Gebruik deze parameter niet als SSL is uitgeschakeld.
  • [host]: uw Azure Database for MySQL Flexible Server-exemplaar.
  • [uname]: de gebruikersnaam van de serverbeheerder.
  • [pass]: het wachtwoord voor de gebruiker met beheerdersrechten.
  • [dbname]: De naam van uw database.
  • [backupfile.sql]: de bestandsnaam van de back-up van de database.

Belangrijk

  • Gebruik voor Azure Database for MySQL enkele server de indeling admin-user@servername om te vervangen myserveradmin in de volgende opdrachten.
  • Gebruik voor Azure Database for MySQL Flexible Server de indeling admin-user die u in de volgende opdrachten wilt vervangen myserveradmin .

Als een specifieke tabel beschadigd is, selecteert u specifieke tabellen in uw database om een back-up te maken:

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

Als u een back-up wilt maken van een of meer databases, gebruikt u de --database schakeloptie en vermeldt u de databasenamen, gescheiden door spaties:

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

Uw database of tabellen herstellen

De volgende stappen laten zien hoe u uw database of tabellen herstelt. Nadat u het back-upbestand hebt gemaakt, kunt u de tabellen of databases herstellen met behulp van het hulpprogramma mysql. Voer deze opdracht uit:

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

Hier volgt een voorbeeld van het herstellen testdb van een back-upbestand dat is gemaakt met mysqldump:

Belangrijk

  • Gebruik voor Azure Database for MySQL enkele server de indeling admin-user@servername die u in de volgende opdracht wilt vervangen myserveradmin .
  • Gebruik voor Azure Database for MySQL Flexible Server de indeling admin-user die u in de volgende opdracht wilt vervangen myserveradmin .
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql