Oversigt: Denne artikel viser nogle af de almindelige fejl, du kan støde på, når en MySQL-tabel bliver korrupt. Det skitserer også de mulige årsager bag MySQL-databasetabellen korruption. Artiklen forklarer også, hvad du kan gøre for at reparere korrupte tabeller, og hvordan en MySQL-databasereparationssoftware kan være praktisk til at gendanne data i tabellen og alle andre databaseobjekter.
Som MySQL-databasebruger kan du støde på en af disse fejl:
- "Tabel er markeret som nedbrudt og bør repareres"
- "Tabel er gået ned, og sidste reparation mislykkedes"
- "Tabel tbl_name eksisterer ikke"
- "Forkert nøglefil til tabel:'...'. Prøv at reparere det”, osv.
Disse er advarselstegn på, at din MySQL-tabel er beskadiget.
Hvad forårsager korruption i MySQL-databasetabellen?
Følgende er mulige årsager, der fører til korruption af MySQL-databasetabellen:
- Problemer i den underliggende platform, der bruges af MySQL, inklusive diskundersystem, drivere, controllere osv.
- Pratelig systemnedlukning eller servernedbrud
- MySQL-processen bliver dræbt midt i skrivningen til databasen
- Softwarefejl eller hardwarefejl
At støde på nogen af disse MySQL-korruptionsfejl kan gøre dataene i tabellerne utilgængelige. Lad os diskutere løsningerne til at reparere de beskadigede borde.
Hvordan rettes MySQL-databasekorruptionsfejl?
Hvis du har en opdateret sikkerhedskopi af din database, skal du gendanne databasen fra backup for at gendanne de utilgængelige tabeldata. Hvis sikkerhedskopien ikke er tilgængelig, skal du udføre trinene i rækkefølgen nedenfor for at reparere korrupte MySQL-tabeller og gendanne data:
Bemærk: Tag en sikkerhedskopi af din MySQL-database og tabeller for at forhindre yderligere skade under reparations- og gendannelsesprocessen.
Trin 1:Tjek tabel for fejl
Først skal du kontrollere databasetabellen for korruptionsfejl. Du kan bruge TJEKTABELLEN kommando til at diagnosticere korrupte InnoDB- og MyISAM-tabeller:
check TABLE tbl_name valgmulighed; |
Her skal du erstatte 'tbl_name' med navnet på den korrupte databasetabel. Og erstat 'option' med en af disse muligheder:HURTIG, HURTIG, MIDDEL, UDVIDET og ÆNDRET.
Mulighed | Beskrivelse |
HURTIG | Udfører hurtigere reparation af InnoDB- og MyISAM-tabeller. Springer over at scanne rækkerne for at lede efter forkerte links |
HURTIG | Tjek kun MyISAM-tabeller, der ikke er blevet lukket korrekt. Anvend ikke på InnoDB-tabeller. |
ÆNDRET | Tjek kun MyISAM-tabeller, der ikke er blevet lukket siden den sidste kontrol blev udført. Anvend ikke på InnoDB-tabeller. |
MIDDEL | Bekræft, om de slettede links er gyldige, ved at scanne rækker. Gælder kun for MyISAM-tabeller. |
UDVIDET | Udfører et komplet nøgleopslag for alle nøglerne for hver række i MyISAM-tabellen. Det tager lang tid at udføre. |
For at kontrollere mere end én tabel for korruption, brug følgende kommando:
TJEK TABEL tbl_name1, tbl_name2, tbl_name 3 mulighed; |
Bemærk: CHECK TABLE-kommandoen kan kun bruges, når MySQL-processen kører. Men hvis processen/serveren ikke kører, kan du bruge følgende 'myisamchk'-kommando til at kontrollere MyISAM-tabeller for korruption:
myisamchk [indstillinger] tbl_name …
Denne kommando kontrollerer en enkelt tabel.
Udfør følgende kommando for at kontrollere alle tabeller i MySQL-databasen for korruption:
myisamchk /path/to/datadir/*/*.MYI
Myisamchk-værktøjet virker ikke for InnoDB-tabeller.
Trin 2:Reparation af korrupt tabel
Bemærk: Myisamchk-kommandoen gælder kun for MyISAM-tabeller og virker ikke for InnoDB-tabeller. Gå til trin 3 for at reparere og gendanne en Innodb-tabel.
Myisamchk-værktøjet kan også hjælpe med at reparere en korrupt (beskadiget) MyISAM-tabel. Gør følgende for at bruge værktøjet til at reparere den beskadigede tabel:
- Stop MySQL-tjenesten ved at skrive:
service mysqld stop cd /var/lib/mysql |
- Skift til den mappe, hvor databasen er placeret.
cd /var/lib/mysql/table_name
myisamchk |
- For at reparere en beskadiget tabel skal du køre følgende kommando ved at erstatte TABLE med navnet på den tabel, du vil reparere:
myisamchk –recover
Trin 3:Gennemtving InnoDB-gendannelseFor at rette korruption i InnoDB-tabeller skal du bruge 'innodb_force_recovery' mulighed. Denne mulighed tvinger InnoDB-databasemotoren til at starte op uden nogen baggrundshandlinger, hvilket giver dig mulighed for at dumpe dine tabeller.
Du kan starte innodb_force_recovery med en værdi på 1 og øge værdien efter behov. Når du har startet innodb-gendannelse, skal du genstarte din MySQL-server og derefter dumpe dine tabeller. I nogle situationer kan det dog være nødvendigt at indstille værdien til 4 til 6, hvilket kan ødelægge dataene. Forsigtig! Hvis du er i stand til at dumpe tabellerne med en innodb_force_recovery=3 eller mindre værdi, så kan du sikkert udføre gendannelsesprocessen. Men at sætte innodb_force_recovery til en værdi større end 4 indebærer risiko for datatab.
Udførelse af disse trin vil gendanne MySQL-databasen og dens tabeller. Hvis dataene stadig mangler, skal du bruge professionel MySQL-databasereparationssoftware, såsom Stellar Repair for MySQL for at gendanne din database og gendanne dens data. Softwaren kan reparere både InnoDB- og MyISAM-tabeller og holde dataene intakte. Det understøtter reparation af MySQL-tabeller på Windows såvel som Linux-systemer. KonklusionMySQL-databasetabeller kan blive korrupte på grund af pludselig systemnedlukning, servernedbrud, hardwarefejl, fejl i MySQL-kode osv. Korruption i MySQL-tabellen resulterer i de fejl, der er angivet i denne artikel. Du kan prøve at reparere beskadigede MyISAM-tabeller ved at bruge 'myisamchk'-værktøjet eller tvinge InnoDB-gendannelse. Det kan dog tage lang tid at reparere MyISAM-tabeller og udføre InnoDB-gendannelse manuelt. Den manuelle gendannelsesproces kan også resultere i tab af data. Et bedre alternativ er at bruge Stellar Repair til MySQL-software. Softwaren tillader reparation af både MyISAM- og InnoDB-databasetabeller uden at foretage ændringer i de originale data. |