sql >> Database >  >> RDS >> Mysql

Gratis methoden om corrupte MySQL-database te herstellen

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:

  1. Doe het handmatig.
  2. 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.


  1. MySQL -- Joins tussen databases op verschillende servers met Python?

  2. Hoe krijg ik datum-/tijdgegevens uit een TIMESTAMP-kolom?

  3. Selecteer de laatste rij voor elke groep van orakel

  4. Array van ints doorgeven aan T-SQL opgeslagen proc via entiteitsframework