neděle 11. října 2015

MySQL a tabulky InnoDB

MySQL tabulky je možno kopírovat, InnoDB tabulky také, ale v případě běžné nekonzistence dat se sami neobnoví, to se dělá takto:

Zastavit MySQL

V souboru /etc/mysql/my.cnf nastavit

innodb_force_recovery=3

Číslo 3 je možno volit i vyšší, čím vyšší číslo, tím větší brutalita obnovy. Spustit MySQL

Zeptat se, které tabulky jsou poškozené?

mysqlcheck -u root -pheslo --all-databases

Tyto poškozené tabulky dumpnout

mysqldump -u root -pheslo databaze tabulka > tabulka.sql

Dál už zbývá jen poškozené tabulky smazat, vypnout (např. zakomentovat) v nastavení parametr innodb_force_recovery=3 a znovu restartovat MySQL server, ten by nyní mohl naběhnout.

Dál se smazané tabulky znovu obnoví příkazem

mysql -u root -pheslo databaze < tabulka.sql

A to je celá legrace


Viz.: http://blackbird.si/mysql-corrupted-innodb-tables-recovery-step-by-step-guide/

Žádné komentáře:

Okomentovat