Sammanfattning: Den här artikeln listar några av de vanligaste felen du kan stöta på när en MySQL-tabell blir korrupt. Den beskriver också de möjliga orsakerna bakom MySQL-databastabellens korruption. Artikeln förklarar också vad du kan göra för att fixa korrupta tabeller och hur en MySQL-databasreparationsprogramvara kan vara praktisk för att återställa data i tabellen och alla andra databasobjekt.
Som användare av MySQL-databas kan du stöta på något av dessa fel:
- "Tabell är markerad som kraschad och bör repareras"
- "Tabell har kraschat och senaste reparation misslyckades"
- "Tabell tbl_name existerar inte"
- "Felaktig nyckelfil för tabellen:'...'. Försök att reparera det”, etc.
Dessa är varningstecken på att din MySQL-tabell är skadad.
Vad orsakar korruption i MySQL-databastabellen?
Följande är möjliga orsaker som leder till korruption av MySQL-databastabellen:
- Problem i den underliggande plattformen som används av MySQL, inklusive diskundersystem, drivrutiner, kontroller, etc.
- Plötlig systemavstängning eller serverkrasch
- MySQL-processen dödas mitt under skrivningen till databasen
- Programvarufel eller maskinvarufel
Att stöta på något av dessa MySQL-korruptionsfel kan göra data i tabellerna otillgängliga. Låt oss diskutera lösningarna för att fixa de skadade borden.
Hur åtgärdar man fel i MySQL-databasen?
Om du har en uppdaterad säkerhetskopia av din databas, återställ databasen från säkerhetskopian för att återställa otillgängliga tabelldata. Om säkerhetskopian inte är tillgänglig, utför stegen i sekvensen nedan för att fixa korrupta MySQL-tabeller och återställa data:
Obs! Ta en säkerhetskopia av din MySQL-databas och tabeller för att förhindra ytterligare skada under reparations- och återställningsprocessen.
Steg 1:Kontrollera tabellen för fel
Först måste du kontrollera databastabellen för korruptionsfel. Du kan använda KONTROLLTABELL kommando för att diagnostisera korrupta InnoDB- och MyISAM-tabeller:
KOCKERA TABLE tbl_name-alternativet; |
Ersätt här "tbl_name" med namnet på den korrupta databastabellen. Och ersätt "alternativ" med något av dessa alternativ:SNABB, FAST, MEDIUM, FÖRLÄNGD och ÄNDRAD.
Alternativ | Beskrivning |
SNABB | Utför snabbare reparation av InnoDB- och MyISAM-tabeller. Hoppa över att skanna raderna för att leta efter felaktiga länkar |
SNABB | Kontrollera endast MyISAM-tabeller som inte har stängts ordentligt. Använd inte på InnoDB-tabeller. |
ÄNDRAD | Kontrollera endast MyISAM-tabeller som inte har stängts sedan den senaste kontrollen utfördes. Använd inte på InnoDB-tabeller. |
MEDEL | Verifiera om de borttagna länkarna är giltiga genom att skanna rader. Gäller endast för MyISAM-tabeller. |
UTÖKAD | Utför en fullständig nyckelsökning för alla nycklar för varje rad i MyISAM-tabellen. Det tar lång tid att köra. |
För att kontrollera mer än en tabell för korruption, använd följande kommando:
KOCKERA TABELL tbl_name1, tbl_name2, tbl_name 3 alternativ; |
Obs! Kommandot CHECK TABLE kan endast användas när MySQL-processen körs. Men om processen/servern inte körs, kan du använda följande 'myisamchk'-kommando för att kontrollera MyISAM-tabeller för korruption:
myisamchk [alternativ] tbl_name …
Detta kommando kontrollerar en enskild tabell.
Kör följande kommando för att kontrollera alla tabeller i MySQL-databasen för korruption:
myisamchk /path/to/datadir/*/*.MYI
Verktyget myisamchk fungerar inte för InnoDB-tabeller.
Steg 2:Reparera korrupt tabell
Obs! Kommandot myisamchk gäller bara för MyISAM-tabeller och fungerar inte för InnoDB-tabeller. För att reparera och återställa en Innodb-tabell, hoppa till steg 3.
Verktyget myisamchk kan också hjälpa till att reparera en korrupt (skadad) MyISAM-tabell. För att använda verktyget för att reparera den skadade tabellen, gör följande:
- Stoppa MySQL-tjänsten genom att skriva:
service mysqld stop cd /var/lib/mysql |
- Byt till katalogen där databasen finns.
cd /var/lib/mysql/table_name
myisamchk
För att åtgärda korruption i InnoDB-tabeller, använd 'innodb_force_recovery' alternativ. Det här alternativet tvingar InnoDB-databasmotorn att starta utan några bakgrundsoperationer, vilket gör att du kan dumpa dina tabeller.
innodb_force_recovery=1
tjänst mysql omstart
Du kan starta innodb_force_recovery med värdet 1 och öka värdet vid behov. När du har initierat innodb-återställning, starta om din MySQL-server och dumpa sedan dina tabeller. Men i vissa situationer kan du behöva ställa in värdet till 4 till 6, vilket kan skada data.
Varning! Om du kan dumpa tabellerna med ett innodb_force_recovery=3 eller lägre värde, kan du säkert utföra återställningsprocessen. Att sätta innodb_force_recovery till ett värde större än 4 innebär dock risk för dataförlust.
rm -rf
Genom att utföra dessa steg återställs MySQL-databasen och dess tabeller. Om data fortfarande saknas måste du använda professionell programvara för reparation av MySQL-databas, såsom Stellar Repair for MySQL för att återställa din databas och återställa dess data. Programvaran kan reparera både InnoDB- och MyISAM-tabeller och hålla data intakt. Den stöder reparation av MySQL-tabeller på såväl Windows som Linux-system.
MySQL-databastabeller kan bli korrupta på grund av plötslig systemavstängning, serverkrasch, maskinvarufel, buggar i MySQL-kod, etc. Korruption i MySQL-tabellen resulterar i de fel som anges i den här artikeln. Du kan försöka reparera skadade MyISAM-tabeller genom att använda verktyget "myisamchk" eller tvinga InnoDB-återställning. Det kan dock ta lång tid att reparera MyISAM-tabeller och utföra InnoDB-återställning manuellt. Den manuella återställningsprocessen kan också leda till dataförlust. Ett bättre alternativ är att använda Stellar Repair för MySQL-programvara. Programvaran gör det möjligt att reparera både MyISAM- och InnoDB-databastabeller utan att göra några ändringar i originaldata. |