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

Hvordan løser man almindelige problemer med MySQL-databasen?

Oversigt: Denne artikel viser nogle af de almindelige fejl, du kan støde på, når en MySQL-tabel bliver korrupt. Det skitserer også de mulige årsager bag MySQL-databasetabellen korruption. Artiklen forklarer også, hvad du kan gøre for at reparere korrupte tabeller, og hvordan en MySQL-databasereparationssoftware kan være praktisk til at gendanne data i tabellen og alle andre databaseobjekter.

Som MySQL-databasebruger kan du støde på en af ​​disse fejl:

  • "Tabel er markeret som nedbrudt og bør repareres"
  • "Tabel er gået ned, og sidste reparation mislykkedes"
  • "Tabel tbl_name eksisterer ikke"
  • "Forkert nøglefil til tabel:'...'. Prøv at reparere det”, osv.

Disse er advarselstegn på, at din MySQL-tabel er beskadiget.

Hvad forårsager korruption i MySQL-databasetabellen?

Følgende er mulige årsager, der fører til korruption af MySQL-databasetabellen:

  • Problemer i den underliggende platform, der bruges af MySQL, inklusive diskundersystem, drivere, controllere osv.
  • Pratelig systemnedlukning eller servernedbrud
  • MySQL-processen bliver dræbt midt i skrivningen til databasen
  • Softwarefejl eller hardwarefejl

At støde på nogen af ​​disse MySQL-korruptionsfejl kan gøre dataene i tabellerne utilgængelige. Lad os diskutere løsningerne til at reparere de beskadigede borde.

Hvordan rettes MySQL-databasekorruptionsfejl?

Hvis du har en opdateret sikkerhedskopi af din database, skal du gendanne databasen fra backup for at gendanne de utilgængelige tabeldata. Hvis sikkerhedskopien ikke er tilgængelig, skal du udføre trinene i rækkefølgen nedenfor for at reparere korrupte MySQL-tabeller og gendanne data:

Bemærk: Tag en sikkerhedskopi af din MySQL-database og tabeller for at forhindre yderligere skade under reparations- og gendannelsesprocessen.

Trin 1:Tjek tabel for fejl

Først skal du kontrollere databasetabellen for korruptionsfejl. Du kan bruge TJEKTABELLEN kommando til at diagnosticere korrupte InnoDB- og MyISAM-tabeller:

check TABLE tbl_name valgmulighed;

Her skal du erstatte 'tbl_name' med navnet på den korrupte databasetabel. Og erstat 'option' med en af ​​disse muligheder:HURTIG, HURTIG, MIDDEL, UDVIDET og ÆNDRET.

Mulighed Beskrivelse
HURTIG Udfører hurtigere reparation af InnoDB- og MyISAM-tabeller. Springer over at scanne rækkerne for at lede efter forkerte links
HURTIG Tjek kun MyISAM-tabeller, der ikke er blevet lukket korrekt. Anvend ikke på InnoDB-tabeller.
ÆNDRET Tjek kun MyISAM-tabeller, der ikke er blevet lukket siden den sidste kontrol blev udført. Anvend ikke på InnoDB-tabeller.
MIDDEL Bekræft, om de slettede links er gyldige, ved at scanne rækker. Gælder kun for MyISAM-tabeller.
UDVIDET Udfører et komplet nøgleopslag for alle nøglerne for hver række i MyISAM-tabellen. Det tager lang tid at udføre.

For at kontrollere mere end én tabel for korruption, brug følgende kommando:

TJEK TABEL tbl_name1, tbl_name2, tbl_name 3 mulighed;

Bemærk: CHECK TABLE-kommandoen kan kun bruges, når MySQL-processen kører. Men hvis processen/serveren ikke kører, kan du bruge følgende 'myisamchk'-kommando til at kontrollere MyISAM-tabeller for korruption:

myisamchk [indstillinger] tbl_name …

Denne kommando kontrollerer en enkelt tabel.

Udfør følgende kommando for at kontrollere alle tabeller i MySQL-databasen for korruption:

myisamchk /path/to/datadir/*/*.MYI

Myisamchk-værktøjet virker ikke for InnoDB-tabeller.

Trin 2:Reparation af korrupt tabel

Bemærk: Myisamchk-kommandoen gælder kun for MyISAM-tabeller og virker ikke for InnoDB-tabeller. Gå til trin 3 for at reparere og gendanne en Innodb-tabel.

Myisamchk-værktøjet kan også hjælpe med at reparere en korrupt (beskadiget) MyISAM-tabel. Gør følgende for at bruge værktøjet til at reparere den beskadigede tabel:

  1. Stop MySQL-tjenesten ved at skrive:
service mysqld stop

cd /var/lib/mysql

  1. Skift til den mappe, hvor databasen er placeret.
cd /var/lib/mysql/table_name

myisamchk

  1. For at reparere en beskadiget tabel skal du køre følgende kommando ved at erstatte TABLE med navnet på den tabel, du vil reparere:
myisamchk –recover
  1. Genstart din MySQL-tjeneste.
service mysqld start

Trin 3:Gennemtving InnoDB-gendannelse

For at rette korruption i InnoDB-tabeller skal du bruge 'innodb_force_recovery' mulighed. Denne mulighed tvinger InnoDB-databasemotoren til at starte op uden nogen baggrundshandlinger, hvilket giver dig mulighed for at dumpe dine tabeller.

  1. Åbn din MySQL-konfigurationsfil (my.cnf), og tilføj følgende til [mysqld]-sektionen:
[mysqld]

innodb_force_recovery=1

service mysql genstart

Du kan starte innodb_force_recovery med en værdi på 1 og øge værdien efter behov. Når du har startet innodb-gendannelse, skal du genstarte din MySQL-server og derefter dumpe dine tabeller. I nogle situationer kan det dog være nødvendigt at indstille værdien til 4 til 6, hvilket kan ødelægge dataene.

Forsigtig! Hvis du er i stand til at dumpe tabellerne med en innodb_force_recovery=3 eller mindre værdi, så kan du sikkert udføre gendannelsesprocessen. Men at sætte innodb_force_recovery til en værdi større end 4 indebærer risiko for datatab.

  1. Hvis du er i stand til at starte din database, skal du køre følgende mysqldump-kommando for at eksportere alle databaserne til en SQL-fil (dvs. en sikkerhedskopifil, der indeholder alle sætningerne til at gendanne databasen):
mysqldump –alle-databaser –add-drop-database –add-drop-table> mydump.sql
  1. Start MySQL-tjenesten, og forsøg derefter at slette databasen, der indeholder de berørte tabeller, ved at bruge kommandoen DROP DATABASE. Hvis du ikke kan droppe en database, kan du prøve at slette den manuelt ved at udføre nedenstående trin efter at have stoppet MySQL-serveren.
cd /var/lib/mysql

rm -rf

  1. Når du har udført ovenstående kommando, skal du kommentere nedenstående linje i [mysqld] for at deaktivere InnoDB-gendannelse:
#innodb_force_recovery=…
  1. Gem alle de ændringer, du har foretaget i my.cnf-filen, og start derefter din server.
service mysqld start
  1. Gendannelse af databasen og tabellen fra MySQL-dumpen (backup-fil), som du har oprettet i trin 2:
mysql -u bruger -p

Udførelse af disse trin vil gendanne MySQL-databasen og dens tabeller. Hvis dataene stadig mangler, skal du bruge professionel MySQL-databasereparationssoftware, såsom Stellar Repair for MySQL for at gendanne din database og gendanne dens data. Softwaren kan reparere både InnoDB- og MyISAM-tabeller og holde dataene intakte. Det understøtter reparation af MySQL-tabeller på Windows såvel som Linux-systemer.

Konklusion

MySQL-databasetabeller kan blive korrupte på grund af pludselig systemnedlukning, servernedbrud, hardwarefejl, fejl i MySQL-kode osv. Korruption i MySQL-tabellen resulterer i de fejl, der er angivet i denne artikel. Du kan prøve at reparere beskadigede MyISAM-tabeller ved at bruge 'myisamchk'-værktøjet eller tvinge InnoDB-gendannelse. Det kan dog tage lang tid at reparere MyISAM-tabeller og udføre InnoDB-gendannelse manuelt. Den manuelle gendannelsesproces kan også resultere i tab af data. Et bedre alternativ er at bruge Stellar Repair til MySQL-software. Softwaren tillader reparation af både MyISAM- og InnoDB-databasetabeller uden at foretage ændringer i de originale data.


  1. Håndteringsdato i SQL Server

  2. PostgreSQL konverterede forkert fra tidsstempel uden tidszone til tidsstempel med tidszone

  3. Sådan repareres en beskadiget adgangsdatabase

  4. MySQL vs. MongoDB