Când tabelele MySQL devin corupte, datele tale pot dispărea în secundă. Acest gid te salvează cu protocoale testate în producție:
Semnale de Alarmă
MySQL te avertizează prin:
ERROR 145 (HY000): Table './baza_mea/tabela' is marked as crashed SHOW TABLE STATUS LIKE 'tabela'; /* Check_time: NULL */
Alte simptome:
-
Erori neexplicate la citire (
Error 1016
,Error 1034
) -
Performanță degradată brusc
Primul Ajutor: Backup Imediat!
-
Copiază fișierele brute (chiar dacă corupte):
sudo cp -R /var/lib/mysql/baza_mea /backup/
-
Exportă datele recuperabile:
mysqldump -u root -p --single-transaction baza_mea tabela_sana > partial.sql
Reparare în 3 Pași
Pasul 1: Reparare Consolă MySQL
USE baza_mea; REPAIR TABLE tabela_corupta;
Rezultat așteptat: Msg_type: status, Msg_text: OK
Pasul 2: Forțare Reparare cu myisamchk
(pentru MyISAM)
-
Oprește MySQL:
sudo systemctl stop mysql
-
Rulează reparare:
sudo myisamchk -r -q /var/lib/mysql/baza_mea/tabela_corupta.MYI
Opțiuni cheie:
-
-r
: Reparare recursivă -
-q
: Mod rapid
-
Pasul 3: Reparare Extinsă (când pașii 1-2 eșuează)
sudo myisamchk --safe-recover -v /calea/tabela.MYI
Cazuri Extreme: Recuperare Date Pierdute
-
Forțează deschiderea tabelei (doar InnoDB):
SET GLOBAL innodb_force_recovery=6; /* Nivel maxim */
Apoi exportă datele imediat!
-
Folosește
dbsake
(tool specializat):curl -s get.dbsake.net > dbsake chmod u+x dbsake ./dbsake frmdump /var/lib/mysql/tabela_corupta.frm
Prevenție: 4 Reguli de Aur
-
Backup automatizat zilnic:
mysqldump --all-databases | gzip > /backup/full_$(date +%F).sql.gz
-
Verificare periodică tabele:
CHECK TABLE important_table FAST;
-
Configurare InnoDB:
[mysqld] innodb_file_per_table = ON innodb_flush_log_at_trx_commit = 1
-
Monitorizare SMART pentru SSD/HDD
De ce se corup tabelele?
-
Hardware defect: SSD failing, RAM corupt
-
Oprire brută: Prică de curent,
kill -9
-
Bug-uri MySQL: Actualizează întotdeauna la ultimul patch
Avertisment critic: La corupție severă, oprește serverul! Fiecare operație poate agrava pagubele.