Felsöka databasskada i Azure Database for MySQL – flexibel server

GÄLLER FÖR: Azure Database for MySQL – Azure Database for MySQL – enskild server – flexibel server

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

Databasskada kan orsaka driftstopp för ditt program. Det är också viktigt att lösa skadade problem i tid för att undvika dataförlust. När databasen skadas visas det här felet i serverloggarna: InnoDB: Database page corruption on disk or a failed.

I den här artikeln får du lära dig hur du löser problem med databas- eller tabellskada. Azure Database for MySQL – flexibel server använder InnoDB-motorn. Den innehåller automatiserade åtgärder för korruptionskontroll och reparation. InnoDB söker efter skadade sidor genom att köra kontrollsummor på varje sida den läser. Om den hittar en kontrollsummaavvikelse stoppar den automatiskt den flexibla serverinstansen Azure Database for MySQL.

Prova följande alternativ för att snabbt åtgärda problem med databasskada.

Starta om MySQL-servern

Du märker vanligtvis att en databas eller tabell är skadad när ditt program kommer åt tabellen eller databasen. InnoDB har en mekanism för återställning av krascher som kan lösa de flesta problem när servern startas om. Så att starta om servern kan hjälpa servern att återställa från en krasch som gjorde att databasen var i ett felaktigt tillstånd.

Använda dump- och återställningsmetoden

Vi rekommenderar att du löser problem med skador med hjälp av en dump- och återställningsmetod . Den här metoden omfattar:

  1. Åtkomst till den skadade tabellen.
  2. Använd verktyget mysqldump för att skapa en logisk säkerhetskopia av tabellen. Säkerhetskopieringen behåller tabellstrukturen och data i den.
  3. Läsa in tabellen i databasen igen.

Säkerhetskopiera databasen eller tabellerna

Viktigt!

Skapa en säkerhetskopia från kommandoraden med mysqldump. Använd det här kommandot:

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

Parameterbeskrivningar:

  • [ssl-cert=/path/to/pem]: Sökvägen till SSL-certifikatet. Ladda ned SSL-certifikatet på klientdatorn och ange sökvägen i det i kommandot . Använd inte den här parametern om SSL är inaktiverat.
  • [host]: Din flexibla Azure Database for MySQL-serverinstans.
  • [uname]: Användarnamnet för serveradministratören.
  • [pass]: Lösenordet för administratörsanvändaren.
  • [dbname]: Namnet på databasen.
  • [backupfile.sql]: Filnamnet för databassäkerhetskopian.

Viktigt!

  • För en enskild Azure Database for MySQL-server använder du formatet admin-user@servername för att ersätta myserveradmin i följande kommandon.
  • För flexibel Azure Database for MySQL-server använder du formatet admin-user för att ersätta myserveradmin i följande kommandon.

Om en specifik tabell är skadad väljer du specifika tabeller i databasen för att säkerhetskopiera:

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

Om du vill säkerhetskopiera en eller flera databaser använder du växeln --database och listar databasnamnen, avgränsade med blanksteg:

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

Återställa databasen eller tabellerna

Följande steg visar hur du återställer databasen eller tabellerna. När du har skapat säkerhetskopieringsfilen kan du återställa tabellerna eller databaserna med hjälp av verktyget mysql. Kör följande kommando:

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

Här är ett exempel som återställer testdb från en säkerhetskopia som skapats med mysqldump:

Viktigt!

  • För en enskild Azure Database for MySQL-server använder du formatet admin-user@servername för att ersätta myserveradmin i följande kommando.
  • För flexibel Azure Database for MySQL-server använder du formatet admin-user för att ersätta myserveradmin i följande kommando.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql

Nästa steg

Om föregående steg inte löser problemet kan du alltid återställa hela servern: