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:
- Najnovija verzija instaliranog Ubuntua na vašem sustavu.
- Korisnici sustava moraju imati sudo privilegije.
- Ako imate poteškoća s pristupom svom sudo računu, razmislite o promjeni MySQL root lozinke.
- Postavljen MySQL na vašem poslužitelju.
Korak 1: Zaustavite MySQL uslugu i izradite sigurnosnu kopiju podataka
Najprije zaustavite MySQL uslugu pomoću naredbe systemctl:
|
1 |
sudo systemctl stop mysql |
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:
|
1 |
cp -r /var/lib/mysql /var/lib/mysql_bkp |
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:
|
1 |
mysql> CHECK TABLE table_name; |
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:
|
1 |
mysql> REPAIR TABLE table_name; |
Ako je popravak bio uspješan, trebali biste vidjeti sljedeću poruku bez pogrešaka kao izlaz:
|
1 2 3 4 5 6 7 8 9 10 11 |
Izlaz: +--------------------------+--------+----------+----------+ | Tablica | Op | Msg_type | Msg_text | +--------------------------+--------+----------+----------+ | database_name.table_name | repair | status | OK | +--------------------------+--------+----------+----------+ |
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:
|
1 |
sudo systemctl restart mysql |
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:
|
1 |
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf |
Umetnite sljedeći redak ispod odjeljka [mysqld]:

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:
|
1 |
mysqldump database_name table_name > 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:
|
1 |
mysql -u user -p --execute="DROP TABLE database_name.table_name" |
Zatim, pomoću dokumenta ispisa demo.sql koji ste upravo pripremili, obnovite tablicu:
|
1 |
mysql -u user -p --database=database_name < demo.sql |
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:
- Kako instalirati MySQL na CentOS 7
- MySQL korisnik — stvaranje i dodjeljivanje dopuštenja
- Postavljanje replikacije u MySQL-u na Ubuntuu
Sretan rad!
Komentari
Još nema komentara. Budite prvi.