sql >> Database teknologi >  >> RDS >> Mysql

Bedste måder at reparere korrupt InnoDB-tabel i MySQL

Oversigt:  I dette indlæg vil vi diskutere nogle af de bedste måder at reparere en korrupt InnoDB-tabel i MySQL på, som kan blive ødelagt på grund af hardwarefejl, MySQL-servernedbrud og andre årsager. Disse måder omfatter en trinvis procedure til at reparere beskadiget InnoDB-tabel manuelt eller ved at bruge MySQL-reparationssoftware.

Fra MySQL 5.5-versionen bruges InnoDB som standardlagringsmotor for alle de nye tabeller i en MySQL-database. Det fantastiske ved InnoDB er, at det understøtter nedbrudsgendannelse. Det kan således ikke nemt blive ødelagt, men når det sker, kan det ske på grund af MySQL Server-nedbrud efter en genstart, hardwarefejl eller fejl i den underliggende platform osv.

Når en InnoDB-tabel bliver beskadiget, bliver dataene i den ulæselige og utilgængelige. Og et forsøg på at læse fra en beskadiget tabel kan få MySQL-serveren til at gå ned.

Hvordan reparerer man korrupt InnoDB-tabel i MySQL?

Bemærk: Før du forsøger at reparere den beskadigede InnoDB-tabel, skal du sørge for at sikkerhedskopiere dine MySQL-databasefiler først.

Følgende er de måder, hvorpå du kan reparere korrupte InnoDB-databasetabel

1. Ret beskadiget InnoDB-tabel manuelt

Du skal sjældent reparere InnoDB-tabeller, da storage-motoren hjælper med at udføre nedbrudsgendannelse, der kan løse de fleste problemer, når serveren genstartes. Der kan dog opstå en situation, hvor du bliver nødt til manuelt at genopbygge eller reparere en korrupt tabel. Sådan kan du gøre det:

Trin 1:Genstart MySQL-tjenesten

Genstart MySQL-tjenesten for at kontrollere, om du kan få adgang til serveren, ved at udføre følgende:

  1. Åbn vinduet Kør ved at klikke på 'Windows+R' nøgler sammen.
  2. Skriv msc og tryk på Enter .
  3. Fra Tjenesterne vindue, se efter MySQL Service og højreklik på det, og klik derefter på genstart .

Hvis serveren er tilgængelig, skal du springe til trin 3. Men hvis den ikke starter eller fortsætter med at gå ned, skal du bruge indstillingen innodb_force_recovery, der er forklaret i næste trin.

Trin 2:Gennemtving InnoDB-gendannelse

Aktiverinnodb_force_recovery mulighed i MySQL my.cnf-konfigurationsfilen for at genvinde adgang til MySQL-databasen og dens korrupte tabel. For at gøre det skal du følge disse trin:

  • Åbn filen my.cnf, og tilføj følgende kodelinje i [mysqld]-sektionen:
[mysqld]
Innodb_force_recovery=1

  • Gem og luk konfigurationsfilen.
  • Forsøg på at genstarte MySQL-tjenesten igen.

Trin 3:Slip den korrupte tabel

Når du har adgang til den korrupte tabel, skal du dumpe tabeldataene til en ny fil ved hjælp af følgende mysqldump-kommando:

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

Bemærk: Tilføj tabelnavnet adskilt af mellemrum i kommandoen ovenfor for at dumpe flere tabeller.

Slip nu den korrupte tabel fra databasen:

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


Trin 4:Gendan tabellen

Brug den nyoprettede dump-fil til at gendanne tabellen fra dump-filen (dvs. single_dbtable_dump):

mysql –u user –p < single_dbtable_dump.sql

Trin 5:Genstart MySQL i normal tilstand

Når den beskadigede tabel er repareret, skal du stoppe MySQL-tjenesten og deaktivere InnoDB-gendannelsestilstand ved at indtaste følgende linje i [mysqld]-sektionen:

#innodb_force_recovery=...

Genstart nu MySQL-tjenesten i normal tilstand.

Bemærk: Hvis du ikke har brugt indstillingen innodb_force_recovery, skal du bare stoppe og genstarte serveren i normal tilstand.

2. Reparer beskadiget InnoDB-tabel ved at bruge MySQL-reparationssoftware

Brug af 'innodb_force_recovery'-værdi større end 4 for at få adgang til databasen igen kan føre til datakorruption. I tilfælde af alvorlig korruption kan du også undlade at genstarte din MySQL-server. Du kan overvinde disse begrænsninger ved manuelt at reparere den korrupte tabel i MySQL-databasen ved at bruge specialiseret MySQL-reparationssoftware såsom Stellar Repair til MySQL.

Softwaren kan reparere og gendanne InnoDB-tabeller i MySQL-databasen, mens dens data holdes intakt. Det hjælper også med at gendanne tabelegenskaber, nøgler, relationsbegrænsninger osv.

Dette MySQL-databasereparationsværktøj hjælper med at reparere både InnoDB- og MyISAM-tabeller, der er oprettet på Windows- og Linux OS-baserede systemer.

Trin til reparation af korrupt InnoDB-tabel ved hjælp af softwaren er som følger:

  1. Gratis download, installer og kør Stellar Repair for MySQL
  2. Fra Vælg datamappe dialogboksen, vælg den MySQL-version, du bruger, og klik derefter på OK .
  3. Fra Vælg database boksen, vælg den database, du vil reparere, og klik derefter på Reparer .
  4. Der vises en forhåndsvisning af den reparerede database, tabel og andre komponenter, der kan gendannes, i forhåndsvisningsvinduet for software.
  5. Vælg den eller de tabeller, du vil gendanne, og klik derefter på Gem i menuen Filer.
  6. Fra Gem database boksen, vælg MySQL under Gem som , og indtast de legitimationsoplysninger, der kræves for at oprette forbindelse til server. Klik på Gem .

Du kan finde den reparerede databasefil i en ny mappe på samme sted, hvor din originale database er gemt.

Du kan finde den reparerede databasefil i en ny mappe på samme sted, hvor din originale database er gemt.

Konklusion

Korruption i InnoDB-tabellen kan gøre dataene i den ulæselige, og hvis de ikke håndteres med tiden, kan det endda resultere i et servernedbrud og uplanlagt nedetid. Du kan rette den korrupte InnoDB-tabel ved at følge den manuelle trinvise procedure. Den manuelle proces til reparation af InnoDB-tabeller kan dog resultere i datatab og giver muligvis ikke det forventede resultat.

Men ved at bruge et MySQL-databasereparationsværktøj såsom Stellar Repair for MySQL, kan du reparere tabeller på InnoDB-lagermotoren og gendanne den til dens oprindelige funktionelle tilstand. Dette filreparationsværktøj hjælper med at reparere MySQL-database oprettet på både Windows og Linux OS. Det kan ikke kun reparere InnoDB-tabeller, men kan også rette korruption i MyISAM-tabeller i MySQL-databasen.


  1. Avanceret MySql-forespørgsel:Opdater tabel med info fra en anden tabel

  2. Hvordan opdager man, at transaktionen allerede er startet?

  3. Databasedesignkoncepter med SQL Server Management Studio (SSMS) del 1

  4. Brug OBJECTPROPERTY() til at bestemme, om et objekt er en visning i SQL Server