sql >> Databasteknik >  >> RDS >> Mysql

Bästa sätten att reparera korrupt InnoDB-tabell i MySQL

Sammanfattning:  I det här inlägget kommer vi att diskutera några av de bästa sätten att reparera en korrupt InnoDB-tabell i MySQL, som kan skadas på grund av maskinvarufel, MySQL-serverkrasch och andra orsaker. Dessa sätt omfattar en stegvis procedur för att reparera skadad InnoDB-tabell manuellt eller genom att använda MySQL-reparationsprogramvara.

Från och med MySQL 5.5-versionen används InnoDB som standardlagringsmotor för alla nya tabeller i en MySQL-databas. Det fina med InnoDB är att det stöder kraschåterställning. Således kan den inte skadas lätt, men när den gör det kan det hända på grund av att MySQL Server kraschar efter en omstart, maskinvarufel eller buggar i den underliggande plattformen, etc.

När en InnoDB-tabell blir skadad blir data i den oläsbar och otillgänglig. Och ett försök att läsa från en skadad tabell kan få MySQL-servern att krascha.

Hur reparerar man en korrupt InnoDB-tabell i MySQL?

Obs! Innan du försöker reparera den skadade InnoDB-tabellen, se till att säkerhetskopiera dina MySQL-databasfiler först.

Följande är hur du kan reparera korrupta InnoDB-databastabell

1. Åtgärda skadad InnoDB-tabell manuellt

Du kommer sällan att behöva reparera InnoDB-tabeller, eftersom lagringsmotorn hjälper till att utföra kraschåterställning som kan fixa de flesta problem när servern startas om. Det kan dock uppstå en situation där du måste manuellt bygga om eller reparera en korrupt tabell. Så här kan du göra det:

Steg 1:Starta om MySQL-tjänsten

Starta om MySQL-tjänsten för att kontrollera om du kan komma åt servern genom att utföra följande:

  1. Öppna fönstret Kör genom att klicka på 'Windows+R' nycklar tillsammans.
  2. Skriv msc och tryck på Retur .
  3. Från Tjänsterna fönster, leta efter MySQL Service och högerklicka på den och klicka sedan på starta om .

Om servern är tillgänglig, hoppa till steg 3. Men om den inte startar eller fortsätter att krascha, använd alternativet innodb_force_recovery som förklaras i nästa steg.

Steg 2:Forcera InnoDB-återställning

Aktiverainnodb_force_recovery alternativet i MySQL my.cnf-konfigurationsfilen för att återfå åtkomst till MySQL-databasen och dess korrupta tabell. För att göra det, följ dessa steg:

  • Öppna filen my.cnf och lägg till följande kodrad i avsnittet [mysqld]:
[mysqld]
Innodb_force_recovery=1

  • Spara och stäng konfigurationsfilen.
  • Försök att starta om MySQL-tjänsten igen.

Steg 3:Släpp den korrupta tabellen

När du kommer åt den korrupta tabellen, dumpa tabelldata till en ny fil med följande mysqldump-kommando:

mysqldump –u user –p db_name table_name > single_dbtable_dump.sql

Obs! Lägg till tabellnamnet avgränsat med blanksteg i kommandot ovan för att dumpa flera tabeller.

Släpp nu den korrupta tabellen från databasen:

mysql –u user –p –execute=”DROP TABLE db_name.table_name”


Steg 4:Återställ tabellen

Använd den nyskapade dumpfilen för att återställa tabellen från dumpfilen (dvs single_dbtable_dump):

mysql –u user –p < single_dbtable_dump.sql

Steg 5:Starta om MySQL i normalt läge

När den skadade tabellen är reparerad, stoppa MySQL-tjänsten och inaktivera InnoDB-återställningsläget genom att ange följande rad i avsnittet [mysqld]:

#innodb_force_recovery=...

Starta nu om MySQL-tjänsten i normalt läge.

Obs! Om du inte har använt alternativet innodb_force_recovery, stoppa bara och starta om servern i normalt läge.

2. Åtgärda skadad InnoDB-tabell genom att använda MySQL-reparationsprogramvara

Att använda ett "innodb_force_recovery"-värde som är större än 4 för att återfå åtkomst till databasen kan leda till datakorruption. Dessutom, i fall av allvarlig korruption, kan du misslyckas med att starta om din MySQL-server. Du kan övervinna dessa begränsningar med att manuellt reparera den korrupta tabellen i MySQL-databasen genom att använda specialiserad MySQL-reparationsmjukvara som Stellar Repair för MySQL.

Programvaran kan reparera och återställa InnoDB-tabeller i MySQL-databasen samtidigt som dess data behålls intakt. Det hjälper också till att återställa tabellegenskaper, nycklar, relationsbegränsningar, etc.

Detta MySQL-databasreparationsverktyg hjälper till att reparera både InnoDB- och MyISAM-tabeller skapade på Windows- och Linux OS-baserade system.

Steg för att reparera en korrupt InnoDB-tabell med programvaran är följande:

  1. Gratis nedladdning, installera och kör Stellar Repair for MySQL
  2. Från Välj datamapp dialogrutan, välj MySQL-versionen du använder och klicka sedan på OK .
  3. Från Välj databas Välj den databas som du vill reparera och klicka sedan på Reparera .
  4. En förhandsvisning av den reparerade databasen, tabellen och andra återställningsbara komponenter visas i förhandsgranskningsfönstret för programvaran.
  5. Välj den eller de tabeller du vill återställa och klicka sedan på Spara på Arkiv-menyn.
  6. Från Spara databasen rutan, välj MySQL under Spara som , och ange de autentiseringsuppgifter som krävs för att ansluta till servern. Klicka på Spara .

Du kan hitta den reparerade databasfilen i en ny mapp på samma plats där din ursprungliga databas är lagrad.

Du kan hitta den reparerade databasfilen i en ny mapp på samma plats där din ursprungliga databas är lagrad.

Slutsats

Korruption i InnoDB-tabellen kan göra datan i den oläslig, och om den inte hanteras i tid kan det till och med resultera i en serverkrasch och oplanerad driftstopp. Du kan fixa den korrupta InnoDB-tabellen genom att följa den manuella stegvisa proceduren. Den manuella processen för att reparera InnoDB-tabeller kan dock resultera i dataförlust och kanske inte leverera det förväntade resultatet.

Men genom att använda ett MySQL-databasreparationsverktyg som Stellar Repair for MySQL kan du reparera tabeller på InnoDB-lagringsmotorn och återställa den till dess ursprungliga funktionella tillstånd. Det här filreparationsverktyget hjälper till att reparera MySQL-databas som skapats på både Windows och Linux OS. Det kan inte bara reparera InnoDB-tabeller utan kan också fixa korruption i MyISAM-tabeller i MySQL-databasen.


  1. Geo-sökning (avstånd) i PHP/MySQL (prestanda)

  2. Varför returnerar password_verify falskt?

  3. SQL förutom

  4. Varför du bör använda PHPs PDO för databasåtkomst