Späť na blog

Rýchle riešenia na opravu poškodených tabuliek v MySQL: Návod

Rýchle riešenia na opravu poškodených tabuliek v MySQL: Návod

MySQL je jedným z najpopulárnejších open-source RDBMS (systémov na riadenie relačných databáz). Je neoddeliteľnou súčasťou rýchlo rastúceho LAMP Stack a získal si pôsobivú základňu fanúšikov medzi vývojármi a správcami systémov. V porovnaní s nerelačnými databázami, SQL poskytuje vynikajúce funkcie na efektívne usporiadanie, ukladanie a správu údajov. Výnimočné funkcie usporiadania tabuliek a vynikajúce schopnosti SQL databázy z nej robia preferovanú voľbu na všetkých úrovniach organizácie, veľkých aj malých.

Tabuľky MySQL sa môžu v zriedkavých prípadoch poškodiť, čo znamená, že došlo k takejto chybe a údaje v nich uložené sú nečitateľné. Keď sa pokúsite čítať údaje z poškodenej tabuľky, server spadne a vyhodí chybu alebo zoznam chýb.

Potenciálne dôvody poškodenia tabuliek MySQL

Nasledujú niektoré z najbežnejších dôvodov poškodenia tabuliek:

  • Služba MySQL po reštarte spadne.
  • Zariadenie sa neočakávane vypne v dôsledku výpadku napájania.
  • Chybná pamäť alebo zlyhanie hardvéru.
  • Softvérové chyby v OS alebo v kóde SQL.
  • MySQL sa vypne počas zápisu.
  • Systém sa vypne do stavu OFF počas aktualizácie SQL.

Pred opravou tabuľky, o ktorej si myslíte, že je poškodená, vytvorte zálohu svojho adresára s informáciami. Pomôže to znížiť pravdepodobnosť straty údajov. V tomto rýchlom sprievodcovi vás prevedieme krokmi na riešenie problémov pri oprave poškodených tabuliek v MySQL.

Požiadavky

Na sledovanie tohto návodu budete potrebovať nasledovné:

Krok 1: Zastavenie služby MySQL a zálohovanie údajov

Najprv zastavte službu MySQL pomocou príkazu systemctl :

Po zastavení služby SQL je ďalším krokom vytvorenie záloh všetkých existujúcich súborov do nového adresára. Na skopírovanie všetkých systémových údajov použite predvolený dátový adresár Ubuntu /var/lib/mysql/ na skopírovanie všetkých systémových údajov:

Krok 2: Identifikácia chyby

Ďalej začneme vyšetrovanie a identifikujeme poškodenú tabuľku. Ak tabuľka používa úložný engine MyISAM, použite príkaz CHECK TABLE a overte stav tabuľky:

Ako výstup uvidíte správu potvrdzujúcu poškodenú tabuľku alebo tabuľky.

Krok 3: Oprava poškodenej tabuľky

Ak sa vyskytne chyba v tabuľke MyISAM a identifikovali ste ju, použite príkaz REPAIR TABLE na opravu chyby:

Ak bola oprava úspešná, mali by ste ako výstup vidieť nasledujúcu bezchybnú správu:

Ak sa však chyba objaví znova, postupujte podľa oficiálneho dokumentu pre MySQL verzie 8.0 na prebudovanie alebo opravu tabuliek.

Na rozdiel od úložného enginu MyISAM, proces opravy tabuliek v úložnom engine InnoDB je odlišný. InnoDB je predvolený úložný engine v MySQL 8.0. Obsahuje automatické operácie kontroly a opravy poškodenia. MySQL InnoDB kontroluje poškodené stránky vykonávaním kontrolných súčtov na každej stránke, ktorú číta. Ak sa zistí nezrovnalosť, automaticky zastaví server MySQL.

Hlavným záverom je, že tabuľky InnoDB je potrebné opravovať len zriedka. InnoDB obsahuje mechanizmus obnovy po páde, ktorý dokáže vyriešiť väčšinu problémov prostredníctvom reštartu.

Skúste reštartovať službu MySQL, aby ste zistili, či môžete získať prístup k serveru:

Ak sa vám nepodarí obnoviť poškodenú tabuľku InnoDB ani po reštarte, vyskúšajte metódu „Dump and Reload“ odporúčanú v dokumentácii k MySQL. Táto metóda zahŕňa opätovné získanie prístupu k poškodenej tabuľke pomocou nástroja mysqldump. Musí sa vytvoriť priečinok na uloženie a uchovanie logickej zálohy tabuľky. Po odstránení chyby sa tabuľka znova načíta späť do databázy.

Krok 4: Využite možnosť innodb_force_recovery

Ak server zostáva spadnutý alebo nedostupný, skúste použiť možnosť force_recovery v InnoDB. Zapnutie možnosti ON the force_recovery je vynikajúci spôsob, ako obnoviť databázy MySQL. Túto možnosť môžete povoliť úpravou súboru mysqld.cnf v textovom editore nano:

Vložte nasledujúci riadok pod sekciu [mysqld]:

innodb force recovery

Uložte a zatvorte súbor po reštartovaní služby MySQL.

Krok 5: Vytvorte súbor mysqldump

Ak máte prístup k poškodenej tabuľke, použite možnosť mysqldump na umiestnenie všetkých exportov do nového súboru. Pomenujte nový súbor podľa svojich preferencií a uistite sa, že na koniec pridáte príponu .sql. Tu súbor pomenujeme ako demo.sql:

Potom použite dopyt DROP TABLE na odstránenie tabuľky z databázy. Môžete použiť nasledujúcu syntax, aby ste nemuseli znova otvárať príkazový riadok MySQL:

Potom pomocou exportovaného dokumentu demo.sql, ktorý ste práve pripravili, obnovte tabuľku:

Úspešne ste opravili poškodenú tabuľku MySQL a ste pripravení bezproblémovo pracovať s databázou.

Záver

K poškodeniu tabuliek alebo neočakávaným pádom systému môže dôjsť, ak pracujete s veľkým objemom dát. Stojí za zmienku, že úložný systém MySQL InnoDB je odolnejší voči chybám ako predchádzajúci systém MyISAM. Tabuľky využívajúce úložný systém InnoDB sa stále môžu poškodiť, hoci nebezpečenstvo poškodenia tabuliek a porúch je výrazne znížené vďaka jeho funkciám automatického obnovenia.

Na záver, existuje mnoho tém a návodov o databázach, ktoré môžete preskúmať na našom blogu:

Príjemnú prácu!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.