Minulý týden se mi po spolehlivém návodu na internetu sesypal systém. Využil jsem částečnou obnovu Windows 8, která odstraní všechny programy, ale zanechá data. Zálohu DB jsem neměl. Našel jsem ale v instalační složce MySQL všechny databáze a data. Překopírovat je bohužel nestačí.
Vytvoření databází
Prvně nainstalujeme nový MySQL server. Pomocí SQL příkazů vytvoříme databáze, které budete chtít obnovit. Ty poznáte podle názvů složek v adresáři data, v instalační složce mysql. Pro Windows je často v C:\xampp\mysql\data\.
Nyní je nutné MySQL server vypnout, jinak se vám nepodaří následující soubory přepsat. Do nových složek nakopírujte vše z původních dat. Poté musíte také přepsat soubory ib_logfile0, ib_logfile1 a ibdata1, které jsou přímo ve složce data.
Máme například databázi blog a v ní tabulku articles uloženou pomocí MyISAM a comments pomocí InnoDB. Soubory, které musíte zkopírovat:
ib_logfile0 ib_logfile1 ibdata1 blog/articles.frm blog/articles.MYD blog/articles.MYI blog/comments.frm blog/comments.ibd
Po přepsání souborů MySQL server zase zapněte.
Úložiště MyISAM
Pro MyISAM není potřeba žádné další kroky. Stačí nakopírovat .frm, .MYD a .MYI soubory a nyní budete k daným tabulkám mít plný přístup.
Úložiště InnoDB
Horší to je ale s tabulkami, uloženými pomocí enginu InnoDB. Tabulky sice uvidíme, ale nebudeme schopní je přečíst. Je potřeba zapnout recovery mód pomocí příkazového řádku.
Pro lehčí práci se pomocí příkazu cd přesuneme do složky MySQL. Pro Windows nejspíše C:\xampp\mysql\bin a pro Linux /usr/sbin/.
# Linux cd /usr/sbin # Windows C: cd \xampp\mysql\bin
Spustíme nyní program mysqld.exe pro Windows a mysqld pro Linux, se dvěma parametry. První je velikost ib_logfile0 v bajtech, která je nejčastěji 5242880, a druhý úroveň obnovy.
# Linux mysqld -innodb_log_file_size=5242880 -innodb_force_recovery=6 # Windows mysqld.exe -innodb_log_file_size=5242880 -innodb_force_recovery=6
Pokud máte nainstalovaný nějaký nástroj pro práci s MySQL, jako Adminer, nyní byste měli otevřít také tabulky s InnoDB enginem.
Záloha pomocí příkazové řádky
Pokud žádný nástroj nemáte, můžete udělat zálohu pomocí MySQL dump. Pro Windows je nezbytnost zůstat stále ve složce s binárkami MySQL jak jsme popsali výše.
root za přepínačem –u je název uživatele. Přepínač –p použijte, pokud máte pro uživatele heslo a databaze je název databáze kterou chcete zálohovat. databaze.sql je název souboru pro uložení souboru. Někdy může být lepší zadat cestu do jiné složky, než kde jsou binárky MySQL.
# Linux mysqldump -u root -p databaze > databaze.sql # Windows mysqldump -u root -p databaze > databaze.sql
Přeinstalování MySQL serveru
Nyní bych doporučil MySQL server přeinstalovat, protože hodně souborů jsme nahradili serveru pod rukama. Minimálně by bylo dobré nastavit innodb_force_recovery na 0.
K tomuto článku již není možné přidávat další komentáře