Felsöka databasskada i Azure Database for MySQL – flexibel 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 Azure Database for MySQL – flexibel serverinstans.
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:
- Åtkomst till den skadade tabellen.
- Använd verktyget mysqldump för att skapa en logisk säkerhetskopia av tabellen. Säkerhetskopieringen behåller tabellstrukturen och data i den.
- Läsa in tabellen i databasen igen.
Säkerhetskopiera databasen eller tabellerna
Viktigt!
- Kontrollera att du har konfigurerat en brandväggsregel för åtkomst till servern från klientdatorn. Mer information finns i konfigurera en brandväggsregel på en enskild Azure Database for MySQL-server och konfigurera en brandväggsregel för Azure Database for MySQL – flexibel server.
- Använd SSL-alternativet
--ssl-cert
för mysqldump om du har SSL aktiverat.
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 Azure Database for MySQL – flexibel 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ättamyserveradmin
i följande kommandon. - För Azure Database for MySQL – flexibel server använder du formatet
admin-user
för att ersättamyserveradmin
med 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ättamyserveradmin
i följande kommando. - För Azure Database for MySQL – flexibel server använder du formatet
admin-user
för att ersättamyserveradmin
i följande kommando.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql