Samenvatting: Dit artikel somt enkele veelvoorkomende fouten op die u kunt tegenkomen wanneer een MySQL-tabel beschadigd raakt. Het schetst ook de mogelijke redenen achter de corruptie van de MySQL-databasetabel. Het artikel legt ook uit wat u kunt doen om corrupte tabellen te repareren en hoe MySQL-databaseherstelsoftware van pas kan komen om gegevens in de tabel en alle andere database-objecten te herstellen.
Als gebruiker van een MySQL-database kunt u een van de volgende fouten tegenkomen:
- "Tabel is gemarkeerd als gecrasht en moet worden gerepareerd"
- "Tabel is gecrasht en laatste reparatie is mislukt"
- "Tabel tbl_name bestaat niet"
- “Onjuist sleutelbestand voor tabel:‘…’. Probeer het te repareren”, enz.
Dit zijn waarschuwingssignalen dat uw MySQL-tabel beschadigd is.
Wat veroorzaakt corruptie in de MySQL-databasetabel?
Hieronder volgen mogelijke redenen die leiden tot corruptie van MySQL-databasetabel:
- Problemen met het onderliggende platform dat door MySQL wordt gebruikt, inclusief schijfsubsysteem, stuurprogramma's, controllers, enz.
- Abrupt afsluiten van het systeem of servercrash
- MySQL-proces wordt afgebroken tijdens het schrijven naar de database
- Softwarefout of hardwarefout
Als u een van deze MySQL-corruptiefouten tegenkomt, kunnen de gegevens in de tabellen ontoegankelijk worden. Laten we de oplossingen bespreken om de beschadigde tafels te repareren.
Hoe corrigeer je MySQL-databasecorruptiefouten?
Als u een bijgewerkte back-up van uw database hebt, herstelt u de database vanaf een back-up om de ontoegankelijke tabelgegevens te herstellen. Als de back-up niet beschikbaar is, voert u de stappen in de onderstaande volgorde uit om corrupte MySQL-tabellen te herstellen en gegevens te herstellen:
Opmerking: Maak een back-up van uw MySQL-database en tabellen om verdere schade tijdens het reparatie- en herstelproces te voorkomen.
Stap 1:Controleer de tabel op fouten
Eerst moet u de databasetabel controleren op corruptiefouten. U kunt de CONTROLEERTABEL . gebruiken opdracht om corrupte InnoDB- en MyISAM-tabellen te diagnosticeren:
CONTROLEER TABEL tbl_name optie; |
Vervang hier 'tbl_name' door de naam van de corrupte databasetabel. En vervang 'optie' door een van deze opties:SNEL, SNEL, MEDIUM, UITGEBREID en GEWIJZIGD.
Optie | Beschrijving |
SNEL | Voert snellere reparatie uit van InnoDB- en MyISAM-tabellen. Slaat het scannen van de rijen over om te zoeken naar onjuiste links |
SNEL | Controleer alleen MyISAM-tabellen die niet correct zijn gesloten. Niet toepassen op InnoDB-tabellen. |
GEWIJZIGD | Controleer alleen MyISAM-tabellen die niet zijn gesloten sinds de laatste controle is uitgevoerd. Niet toepassen op InnoDB-tabellen. |
MEDIUM | Controleer of de verwijderde links geldig zijn door rijen te scannen. Geldt alleen voor MyISAM-tabellen. |
UITGEBREID | Voert een volledige sleutelzoekopdracht uit voor alle sleutels voor elke rij van de MyISAM-tabel. Het duurt lang om uit te voeren. |
Gebruik de volgende opdracht om meer dan één tabel op corruptie te controleren:
CONTROLEER TABEL tbl_name1, tbl_name2, tbl_name 3 optie; |
Opmerking: De opdracht CHECK TABLE kan alleen worden gebruikt wanneer het MySQL-proces wordt uitgevoerd. Maar als het proces/de server niet actief is, kunt u het volgende 'myisamchk'-commando gebruiken om MyISAM-tabellen te controleren op corruptie:
mijnisamchk [opties] tbl_name …
Dit commando controleert een enkele tabel.
Voer de volgende opdracht uit om alle tabellen in de MySQL-database op corruptie te controleren:
myisamchk /path/to/datadir/*/*.MYI
Het hulpprogramma myisamchk werkt niet voor InnoDB-tabellen.
Stap 2:Corrupte tabel repareren
Opmerking: De opdracht myisamchk is alleen van toepassing op MyISAM-tabellen en werkt niet voor InnoDB-tabellen. Ga naar stap 3 voor het repareren en herstellen van een Innodb-tabel.
Het hulpprogramma myisamchk kan ook helpen bij het repareren van een corrupte (beschadigde) MyISAM-tabel. Ga als volgt te werk om het hulpprogramma te gebruiken voor het repareren van de beschadigde tafel:
- Stop de MySQL-service door te typen:
service mysqld stop cd /var/lib/mysql |
- Verander naar de directory waar de database zich bevindt.
cd /var/lib/mysql/table_name
mijnisamchk |
- Als u een beschadigde tabel wilt repareren, voert u de volgende opdracht uit door TABLE te vervangen door de naam van de tabel die u wilt repareren:
myisamchk –recover
Stap 3:InnoDB-herstel forcerenOm corruptie in InnoDB-tabellen op te lossen, gebruikt u de ‘innodb_force_recovery’ optie. Deze optie dwingt de InnoDB-database-engine op te starten zonder bewerkingen op de achtergrond, waardoor u uw tabellen kunt dumpen.
U kunt innodb_force_recovery starten met een waarde van 1 en de waarde indien nodig verhogen. Nadat u het herstel van innodb hebt gestart, start u uw MySQL-server opnieuw op en dumpt u uw tabellen. In sommige situaties kan het echter nodig zijn om de waarde in te stellen op 4 tot 6, wat de gegevens kan beschadigen. Let op! Als u de tabellen kunt dumpen met een innodb_force_recovery=3 of minder waarde, kunt u het herstelproces veilig uitvoeren. Het instellen van innodb_force_recovery op een waarde groter dan 4 brengt echter een risico op gegevensverlies met zich mee.
Als u deze stappen uitvoert, worden de MySQL-database en de bijbehorende tabellen hersteld. Als de gegevens nog steeds ontbreken, moet u professionele MySQL-databasereparatiesoftware gebruiken, zoals Stellar Repair for MySQL om uw database te herstellen en de gegevens te herstellen. De software kan zowel InnoDB- als MyISAM-tabellen repareren, waarbij de gegevens intact blijven. Het ondersteunt het repareren van MySQL-tabellen op zowel Windows- als Linux-systemen. ConclusieMySQL-databasetabellen kunnen beschadigd raken door plotselinge systeemuitschakeling, servercrash, hardwarestoringen, bugs in MySQL-code, enz. Corruptie in de MySQL-tabel resulteert in de fouten die in dit artikel worden vermeld. U kunt proberen beschadigde MyISAM-tabellen te repareren met behulp van het hulpprogramma 'myisamchk' of InnoDB-herstel forceren. Het kan echter veel tijd kosten om MyISAM-tabellen te repareren en InnoDB-herstel handmatig uit te voeren. Ook kan het handmatige herstelproces leiden tot gegevensverlies. Een beter alternatief is om Stellar Repair voor MySQL-software te gebruiken. Met de software kunnen zowel MyISAM- als InnoDB-databasetabellen worden gerepareerd zonder wijzigingen aan te brengen in de originele gegevens. |