Wanneer een MySQL-database beschadigd raakt, vraagt u zich misschien af waarom de database in de eerste plaats beschadigd is geraakt. Dit bericht schetst mogelijke redenen achter databasecorruptie voordat de vraag wordt beantwoord:hoe een corrupte MySQL-database te repareren?
Redenen achter MySQL-databasecorruptie
Een MySQL-database kan om een van de volgende redenen beschadigd raken:
- Plotselinge serveruitschakeling
- Defect in de hardware die wordt gebruikt om gegevens op te slaan en op te halen, zoals schijfsubsysteem, schijfcontrollers, stuurprogramma's, enz.
- 'mysqld'-proces wordt afgebroken terwijl een lopende update wordt uitgevoerd
- Softwarefout
Het kan een uitdaging zijn om de oorzaak van een beschadigde database te achterhalen. Wat de oorzaak ook is, de zorg die u moet hebben is hoe u de corrupte MySQL-database kunt repareren.
Hoe een corrupte MySQL-database te herstellen?
Het eerste waar u naar moet kijken, is de foutmelding die u krijgt. Hieronder volgen enkele foutmeldingen die u kunt tegenkomen wanneer de MySQL-database beschadigd raakt:
Fout 144: Tafel is gecrasht en de laatste reparatie is mislukt
Fout 141: Dubbele unieke sleutel of beperking bij schrijven of bijwerken
Fout 136: Geen ruimte meer in het indexbestand
Fout 134: Record is al verwijderd
Fout 126: Indexbestand is gecrasht/verkeerd bestandsformaat
Fout: Kon bestand 'wtlicensemanager.dll' niet vinden
Als u de reparatie kosteloos wilt uitvoeren, heeft u twee opties:
- Doe het handmatig.
- Doe het met behulp van software tijdens de proefperiode.
Software voor databaseherstel kan de beschadigde database beter en sneller herstellen.
Hier is een softwaretoepassing die u kunt gebruiken om de beschadigde MySQL-database te herstellen:
Deze MySQL-databasereparatietool repareert de database die is gemaakt met zowel InnoDB- als MyISAM-database-engines van MySQL. U kunt de demoversie van de SQL-reparatietool downloaden om een voorbeeld van de herstelbare database te bekijken voordat u ze opslaat.
Belangrijkste kenmerken:
- Kan MySQL-database herstellen op Windows- en Linux-systemen.
- Herstelt InnoDB-bestanden (.ibdata, .ibd en .frm) en MyISAM-bestanden (myd, .myi en .frm)
- Herstelt database-objecten zoals tabellen, tabeleigenschappen, gegevenstypen, weergaven, triggers, enz.
- Maakt selectief herstel van databasecomponenten mogelijk
Hoe een corrupte MySQL-database handmatig te herstellen?
Er zijn twee soorten opslag-engines in MySQL:InnoDB en MyISAM. De InnoDB-tabel bevat FRM-, IBDATA- en IDB-bestanden, terwijl de MyISAM-tabel FRM-, MYD- en MYI-bestanden bevat.
Voordat we verder gaan
Hier zijn een paar dingen waar u rekening mee moet houden voordat u handmatig herstel probeert:
- Start de server niet opnieuw op
Wanneer u de server opnieuw opstart, kan de server de beschadigde database in verdachte modus plaatsen. Hierdoor wordt de database uitgeschakeld. Het kan ook fouten veroorzaken bij het verbinden met de database. U moet proberen te herstellen zonder de server opnieuw op te starten.
- Gebruik de modus voor één gebruiker
Zorg ervoor dat u de enige gebruiker bent die is verbonden met de database. De modus voor één gebruiker geeft u de volledige controle, waardoor interferentie van andere gebruikers wordt geëlimineerd.
- Upgrade MySQL niet
U kunt overwegen de MySQL-database bij te werken om de beschadigde bestanden te herstellen. Maar dit is niet het geval. Upgraden kan permanent gegevensverlies veroorzaken.
- Maak een back-up van de beschadigde MySQL-database
Het is belangrijk om een back-up van het beschadigde bestand te hebben, omdat er fouten kunnen zijn waardoor u gegevens kunt verliezen. Er is geen garantie dat uw handmatige stappen geen invloed hebben op de gezonde bestanden. Het is dus veilig om een back-up te hebben voordat u handmatig herstel probeert.
Gebruik de volgende opdracht om een back-up te maken:
mysqldump db_name> database_name.sql
Voer gewoon uw databasenaam in in plaats van database_name.
Als het bovenstaande niet werkt, probeer dan het volgende:
mysqldump –u[gebruikersnaam] –p[wachtwoord] [database_name]> [dump_file].sql
Er is een andere manier om een back-up van de database te maken:
service mysqld stop
cp -r /var/lib/mysql /var/lib/mysql_bkp
Nu we de back-up hebben, kunnen we proberen de corrupte MySQL-database te herstellen.
Hoe de MySQL-database handmatig herstellen?
MijnISAM-database repareren
Als u de MyISAM-databaseopslagengine voor uw databasetabel gebruikt, kunt u de volgende opdrachten gebruiken om de tabel te repareren:
Mysqlcheck
Als uw MySQL-server actief is, voert u de volgende mysqlcheck-opdracht uit om uw tabel te repareren:
mysqlcheck -r [database_name]
Zorg ervoor dat u 'database_name' vervangt door de naam van uw database.
Mijnisamchk
Als de server niet actief is, probeer dan de databasetabel te repareren met de opdracht myisamchk:
Opmerking: Voordat u deze opdracht uitvoert, moet u ervoor zorgen dat de server geen tafels open heeft staan.
myisamchk table_name
Repareer de tabelnaam met de tabelnaam in uw geval. Met deze opdracht wordt je tafel automatisch hersteld.
Typ het volgende om de server opnieuw op te starten:
service mysqld start
InnoDB-herstel forceren
U moet InnoDB-geforceerd herstel uitvoeren om gegevens uit een beschadigde InnoDB-databasetabel te halen.
Stap 1: Eerst moet u het my.cnf-bestand openen.
Zoek in dit bestand de sectie [mysqld].
Voeg de volgende regel toe aan deze sectie:
innodb_force_recovery=1
Sla nu het configuratiebestand op en start de MySQL-server opnieuw. U kunt de waarde van innodb_force_recovery instellen van 1 tot 6. Een waarde hoger dan 4 wordt echter niet aanbevolen, omdat dit de gegevens kan beschadigen.
Stap 2: Dump de tabelgegevens in een nieuw bestand.
Gebruik hiervoor het volgende commando:
mysqldump –u gebruiker –p db_name table_name> single_dbtable_dump.sql
Stap 3: Verwijder de corrupte tabel uit de database.
mysql –u gebruiker –p –execute=”DROP TABLE db_name.table_name”
Stap 4: Herstel de tabel vanuit het dumpbestand.
mysql –u gebruiker –p
Stap 5: Zodra de bestanden zijn gerepareerd, schakelt u de geforceerde herstelmodus uit met het volgende commando:
#innodb_force_recovery=…
Nu kunt u de MySQL-service opnieuw opstarten in de normale modus.
We hopen dat de bovenstaande methoden u zullen helpen de corrupte MySQL-database te herstellen.