Natrag na blog

Brza rješenja za popravak oštećenih tablica u MySQL-u: Vodič

Brza rješenja za popravak oštećenih tablica u MySQL-u: Vodič

MySQL je jedan od najpopularnijih otvorenog koda RDBMS (sustava za upravljanje relacijskim bazama podataka). Sastavni je dio brzorastućeg LAMP stoga i stekao je impresivan broj obožavatelja među razvojnim programerima i sistemskim administratorima. U usporedbi s nerelacijskim bazama podataka, SQL pruža izvrsne funkcionalnosti za organiziranje, pohranu i učinkovito upravljanje podacima. Prepoznatljive funkcionalnosti rasporeda tablica i izvanredne mogućnosti SQL baze podataka čine je preferiranim izborom na svim razinama organizacije, kako velikim tako i malim.

MySQL tablice se u rijetkim prilikama mogu oštetiti, što ukazuje na to da se dogodila takva pogreška i da su podaci pohranjeni u njima nečitljivi. Kada pokušate čitati podatke iz oštećene tablice, poslužitelj se ruši i javlja pogrešku ili popis pogrešaka.

Potencijalni razlozi oštećenja MySQL tablice

Sljedeće su neki od najčešćih razloga za oštećene tablice:

  • Usluga MySQL se ruši nakon ponovnog pokretanja.
  • Uređaj se neočekivano gasi zbog nestanka struje.
  • Loša memorija ili kvar hardvera.
  • Softverske pogreške u OS-u ili SQL kodu.
  • MySQL se gasi tijekom pisanja.
  • Sustav se gasi OFF tijekom ažuriranja SQL-a.

Prije popravka tablice za koju sumnjate da je oštećena, izradite sigurnosnu kopiju svog direktorija s podacima. To će pomoći smanjiti vjerojatnost gubitka podataka. U ovom brzom vodiču, provest ćemo vas kroz korake za rješavanje problema i popravak oštećenih tablica u MySQL-u.

Preduvjeti

Kako biste pratili ovaj vodič, trebat će vam sljedeće:

Korak 1: Zaustavite MySQL uslugu i izradite sigurnosnu kopiju podataka

Najprije zaustavite MySQL uslugu pomoću naredbe systemctl:

Nakon zaustavljanja SQL usluge, sljedeći korak je stvaranje sigurnosnih kopija svih postojećih datoteka u novi direktorij. Koristite zadani direktorij podataka Ubuntua /var/lib/mysql/ za kopiranje svih podataka sustava:

Korak 2: Identificirajte pogrešku

Zatim ćemo započeti našu istragu i identificirati oštećenu tablicu. Ako tablica koristi MyISAM mehanizam za pohranu, upotrijebite izraz CHECK TABLE i provjerite status tablice:

Kao izlaz vidjet ćete poruku koja potvrđuje oštećenu tablicu ili tablice.

Korak 3: Popravite oštećenu tablicu

Ako postoji pogreška na MyISAM tablici i identificirali ste je, upotrijebite izraz REPAIR TABLE kako biste ispravili pogrešku:

Ako je popravak bio uspješan, trebali biste vidjeti sljedeću poruku bez pogrešaka kao izlaz:

Međutim, ako primijetite da se pogreška ponovno pojavljuje, slijedite službeni dokument za MySQL verziju 8.0 kako biste ponovno izgradili ili popravili tablice.

Za razliku od MyISAM mehanizma za pohranu, postupak InnoDB-a uključen u popravak tablica drugačiji je u InnoDB mehanizmu za pohranu. InnoDB je zadani mehanizam za pohranu u MySQL-u 8.0. Sadrži automatizirane operacije provjere i popravka oštećenja. MySQL InnoDB provjerava oštećene stranice izvođenjem kontrolnih zbrojeva na svakoj stranici koju pročita. Ako se otkrije neslaganje, automatski će zaustaviti MySQL poslužitelj.

Zaključak je da rijetko postoji potreba za popravkom InnoDB tablica. InnoDB ima mehanizam za oporavak od rušenja koji može riješiti većinu problema ponovnim pokretanjem.

Pokušajte ponovno pokrenuti MySQL uslugu kako biste vidjeli možete li dobiti pristup poslužitelju:

Ako ne uspijete ponovno izgraditi oštećenu InnoDB tablicu čak ni nakon ponovnog pokretanja, pokušajte s metodom „Dump and Reload” koja se predlaže u MySQL dokumentaciji. Ova metoda uključuje ponovno dobivanje pristupa oštećenoj tablici pomoću alata mysqldump. Mora se stvoriti mapa za pohranu i čuvanje logičke sigurnosne kopije tablice. Nakon što se pogreška ispravi, tablica se ponovno učitava natrag u bazu podataka.

Korak 4: Iskoristite opciju innodb_force_recovery

Ako poslužitelj i dalje ostane srušen ili nedostupan, pokušajte upotrijebiti opciju force_recovery u InnoDB-u. Uključivanje opcije ON the force_recovery izvrstan je način za oporavak MySQL baza podataka. Ovu opciju možete omogućiti izmjenom datoteke mysqld.cnf u uređivaču teksta nano:

Umetnite sljedeći redak ispod odjeljka [mysqld]:

innodb force recovery

Spremite i zatvorite datoteku nakon ponovnog pokretanja MySQL usluge.

Korak 5: Stvorite mysqldump datoteku

Ako možete pristupiti oštećenoj tablici, upotrijebite opciju mysqldump kako biste stavili sve ispise u novu datoteku. Nazovite novu datoteku po želji i svakako dodajte nastavak .sql na kraju. Ovdje datoteku nazivamo demo.sql:

Nakon toga upotrijebite upit DROP TABLE kako biste uklonili tablicu iz baze podataka. Možete upotrijebiti sljedeću sintaksu kako biste izbjegli potrebu za ponovnim otvaranjem MySQL naredbenog retka:

Zatim, pomoću dokumenta ispisa demo.sql koji ste upravo pripremili, obnovite tablicu:

Uspješno ste popravili svoju oštećenu MySQL tablicu i spremni ste za nesmetan rad s bazom podataka.

Zaključak

Oštećenja tablica ili neočekivani padovi sustava vjerojatni su ako radite s velikom količinom podataka. Vrijedi napomenuti da je MySQL InnoDB sustav za pohranu otporniji na pogreške od prethodnog MyISAM sustava. Tablice koje koriste InnoDB sustav za pohranu i dalje se mogu oštetiti, iako je opasnost od oštećenja tablica i kvarova značajno smanjena zahvaljujući njegovim značajkama automatskog oporavka.

Naposljetku, postoji mnogo tema i vodiča o bazama podataka koje možete istražiti na našem blogu:

Sretan rad!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.