MySQL az egyik legnépszerűbb nyílt forráskódú RDBMS (relációs adatbázis-kezelő rendszer). Szerves részét képezi a gyorsan növekvő LAMP Stack szoftvercsomagnak, és lenyűgöző rajongótábort szerzett a fejlesztők és a rendszergazdák körében. Összehasonlítva a nem relációs adatbázisokkal, az SQL kiváló funkciókat biztosít az adatok hatékony rendszerezéséhez, tárolásához és kezeléséhez. Az SQL adatbázis megkülönböztető táblaelrendezési funkciói és kiemelkedő képességei miatt preferált választás a szervezet minden szintjén, legyen az nagy vagy kicsi.
A MySQL táblák ritka esetekben megsérülhetnek, ami azt jelzi, hogy ilyen hiba történt, és a bennük tárolt adatok olvashatatlanok. Amikor megpróbál adatokat olvasni egy sérült táblából, a szerver összeomlik, és hibát vagy hibalistát dob.
A MySQL táblák sérülésének lehetséges okai
Az alábbiakban bemutatjuk a sérült táblák legjellemzőbb okait:
- A MySQL szolgáltatás összeomlik az újraindítás után.
- A gép váratlanul leáll áramkimaradás miatt.
- Hibás memória vagy hardverhiba.
- Szoftverhibák az OS-ben vagy az SQL kódban.
- A MySQL leáll írás közben.
- A rendszer kikapcsol az SQL frissítése közben.
Mielőtt kijavítana egy feltételezhetően sérült táblát, készítsen biztonsági mentést az adatkönyvtáráról. Ez segít csökkenteni az adatvesztés valószínűségét. Ebben a rövid útmutatóban végigvezetjük a sérült MySQL táblák javításának hibaelhárítási lépésein.
Előfeltételek
Az útmutató követéséhez a következőkre lesz szüksége:
- A legújabb verziójú Ubuntu telepítve a rendszerén.
- A rendszerfelhasználóknak sudo jogosultságokkal kell rendelkezniük..
- Ha nehézségekbe ütközik a sudo fiók elérése során, fontolja meg a MySQL root jelszó megváltoztatását..
- A MySQL-nek telepítve kell lennie a szerverén.
1. lépés: A MySQL szolgáltatás leállítása és adatmentés
Először állítsa le a MySQL szolgáltatást a systemctl paranccsal:
|
1 |
sudo systemctl stop mysql |
Az SQL szolgáltatás leállítása után a következő lépés az összes meglévő fájl biztonsági mentése egy új könyvtárba. Használja az Ubuntu alapértelmezett adatkönyvtárát, a /var/lib/mysql/ az összes rendszeradat másolásához:
|
1 |
cp -r /var/lib/mysql /var/lib/mysql_bkp |
2. lépés: A hiba azonosítása
Ezután megkezdjük a vizsgálatot, és azonosítjuk a sérült táblát. Ha a tábla a MyISAM tárolómotort használja, használja a CHECK TABLE utasítást, és ellenőrizze a tábla állapotát:
|
1 |
mysql> CHECK TABLE table_name; |
A kimenetben egy üzenet fogja megerősíteni a sérült táblát vagy táblákat.
3. lépés: A sérült tábla javítása
Ha hiba van a MyISAM táblában, és azonosította azt, használja a REPAIR TABLE utasítást a hiba javításához:
|
1 |
mysql> REPAIR TABLE table_name; |
Ha a javítás sikeres volt, a következő hibamentes üzenetet kell látnia kimenetként:
|
1 2 3 4 5 6 7 8 9 10 11 |
Output: +--------------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +--------------------------+--------+----------+----------+ | database_name.table_name | repair | status | OK | +--------------------------+--------+----------+----------+ |
Ha azonban a hiba újra jelentkezik, kövesse a MySQL 8.0-s verziójának hivatalos dokumentációját a táblák újraépítéséhez vagy javításához.
A MyISAM tárolómotorral ellentétben az InnoDB táblák javításának folyamata eltér az InnoDB tárolómotorban. Az InnoDB az alapértelmezett tárolómotor a MySQL 8.0-ban. Automatikus sérülésellenőrzési és javítási műveletekkel rendelkezik. A MySQL InnoDB ellenőrzi a sérült oldalakat azáltal, hogy ellenőrző összeget számol minden olvasott oldalon. Ha eltérést észlel, automatikusan leállítja a MySQL szervert.
A lényeg az, hogy ritkán van szükség az InnoDB táblák javítására. Az InnoDB olyan összeomlás-helyreállítási mechanizmussal rendelkezik, amely a legtöbb problémát újraindítással képes megoldani.
Próbálja meg újraindítani a MySQL szolgáltatást, hogy ellenőrizze, hozzáfér-e a szerverhez:
|
1 |
sudo systemctl restart mysql |
If you fail to rebuild a corrupted InnoDB table even after the reboot, try the “Dump and Reload” method suggested in the MySQL documentation. This method involves regaining access to the corrupted table, using the mysqldump utility. A folder must be created to store and retain the logical backup of the table. Once the error gets fixed, it reloads the table back into the database.
Step 4: Leverage innodb_force_recovery Option
If the server stays crashed or unreachable, try using the force_recovery option in InnoDB. Turning ON the force_recovery option is an excellent way to restore MySQL databases. You can enable this option by modifying the mysqld.cnf file in the nano text editor:
|
1 |
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf |
Insert the following line under the [mysqld] section:

Save and close the file after rebooting the MySQL service.
Step 5: Create a mysqldump File
If you are able to access the corrupted table, use the mysqldump option to put all the dumps in the new file. Name the new file as per your preference and make sure to add the .sql extension at the end. Here we are naming the file as demo.sql:
|
1 |
mysqldump database_name table_name > demo.sql |
After that, use the DROP TABLE query to remove the table from the database. You can use the following syntax to avoid needing to reopen the MySQL prompt:
|
1 |
mysql -u user -p --execute="DROP TABLE database_name.table_name" |
Then, using the dump document demo.sql you just prepared, restore the table:
|
1 |
mysql -u user -p --database=database_name < demo.sql |
You have successfully fixed your MySQL corrupt table, and are ready to work the database seamlessly.
Conclusion
Table corruptions or unexpected system crashes are likely to happen if you are working with a large volume of data. It is worth mentioning that the MySQL InnoDB storage engine is more fault-tolerant than the previous MyISAM engine. Tables utilising InnoDB storage engine can still be corrupted, although the danger of table corruption and breakdowns is significantly reduced thanks to its auto-recovery features.
Finally, there are many topics and tutorials on databases that you can explore on our blog:
- How to Install MySQL on Centos 7
- MySQL User — Create and Grant Permissions
- Setting Up Replication in MySQL on Ubuntu
Happy Computing!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.