Upraveno 6 prosince, 2023 00:19
Pokud spravujete Linuxový server, na kterém zároveň běží MySQL databáze, možná jste přemýšleli nad tím, jak efektivně zálohovat databázi (případně databáze). Pojďme se podívat na automatické zálohování MySQL na Linuxu pomocí příkazu a použití CRONa. Díky tomu si vytvoříme plán, kdy se budou provádět automatické zálohy MySQL každý den v noci do SQL souboru, a zároveň zálohy starší 30 dní se budou mazat.
Výsledek tedy bude takový, že bude na serveru vytvořena lokální záloha databáze (případně databází) a to až na jeden měsíc zpět. Podotýkám, že v tomto případě bude záloha lokální. Tzn., že bude na stejném serveru, jako samotná databáze. Taková záloha Vám dokáže vyřešit situaci, kdy si poškodíte nebo smažete např. tabulku v dotčené databázi. Nevyřeší Vám pád nebo poruchu celého serveru, jelikož záloha bude na stejné úložišti, jako samotná databáze.
Pro kompletní disaster recovery řešení pak používám externí službu Forpsi Cloud Backup, kde si složku se zálohami pravidelně a automaticky přenáším na zálohovací pole. Zálohy MySQL jsou tak dostupné jak na serveru, tak v zrcadlové kopii na externím zálohovacím poli.
Automatické zálohování MySQL na Linuxu
Vytvoření zálohy databáze pomocí příkazu
Pojďme tedy začít od začátku. Uvažujme situaci, že na serveru máme jednu databázi s názvem „prikladcz„. Pomocí příkazu jsme schopní si tuto databázi exportovat do souboru SQL a uložit do nějaké předem určené složky. Vytvořme si tedy nejprve složku /backups/mysql pomocí příkazu:
mkdir -p /backups/mysql
Příkaz mkdir slouží k vytvoření složky. Volba -p zajistí, že vytvoříme složku /backups i v případě, že složka /backups ještě neexistuje. Nyní ještě složce nastavíme potřebná práva:
chmod 700 /backups/mysql
Příkazem chmod změníte práva u souborů a složek. Volba 700 nastaví práva na složku /backups/mysql tak, aby byla viditelná a přístupná pouze vlastníkovi (v tomto případě uživateli, který spouští příkaz).
Složku máme připravenou a nyní můžeme provést první export databáze pomocí příkazu:
mysqldump -u -p prikladcz > /backups/mysql/prikladcz.sql
V tomto příkazu nahraďte <uzivatel> uživatelským jménem s přístupem k MySQL databázi a <heslo> příslušným heslem. Část obsahující cestu /backups/mysql/ je cesta ke složce, kde chcete mít uloženu zálohu. Jméno prikladcz.sql je název souboru, do kterého bude záloha uložena.
Automatizace záloh
Nyní se můžeme přesunout k další části a využít příkaz k tomu, aby server každou noc ve dvě hodiny ráno automaticky uložil zálohu databáze. Zároveň, abychom šetřili místo si uděláme plán záloh na jeden měsíc zpět. Zálohy starší 30 dní se tedy budou automaticky mazat. Každá záloha bude mít navíc v názvu souboru datum, aby bylo na první pohled jasné, kdy byla vytvořená.
Pro tuto akci použijeme CRON
Cron provádí plánování úloh na základě konfiguračního souboru nazývaného "crontab" (Cron table). Každý uživatel může mít svůj vlastní crontab soubor, který obsahuje plánované úlohy pro daného uživatele.
Nyní můžete nastavit cron pro automatické provádění záloh každý den ve 2 hodiny ráno a mazání záloh starších než 30 dní. Spusťte následující příkaz:
crontab -e
Otevře se textový editor pro úpravu CRON úloh. Přidejte následující řádky na konec souboru:
0 2 * * * mysqldump -u -p prikladcz > /backups/mysql/prikladcz_$(date +\%Y\%m\%d).sql
0 2 * * * find /backups/mysql -type f -name 'prikladcz_*.sql' -mtime +30 -exec rm {} \;
V těchto řádcích nahraďte <uzivatel>, <heslo> a /backup/mysql/prikladcz příslušnými hodnotami, které jste použili v prvním příkazu.
Uložte a zavřete soubor. CRON bude nyní spouštět zálohy každý den ve 2 hodiny ráno a mazat zálohy starší než 30 dní.
Poznámka: Ujistěte se, že máte dostatečná oprávnění pro zápis do složky backups/mysql a spouštění příkazů mysqldump a find. Viz první část, kde si příkaz pro účely testu nejprve vyzkoušíte.
Automatické zálohování MySQL na Linuxu
Závěr
Jak jsem uvedl výše, toto zálohování slouží hlavně pro případ, že se Vám stane nějaký problém v databázi. Např. si smažete tabulku, nebo si poškodíte strukturu databáze. Toto není kompletní řešení disaster recovery. Pokud se Vám poškodí server, přijdete jak o databázi, tak o zálohy, protože obojí je na stejném serveru.
Pro kompletní zálohování je dobré složku backups/mysql zrcadlit na jiný vzdálený server nebo úložiště. Služeb k tomu určených je mnoho. Např. služba Forpsi Cloud Backup. Zde můžete opět pomocí automatizovaných úloh každý den složku se zálohami vzít a přesunout ji v kopii na vzdálené úložiště. Teprve potom budete mít kompletní zálohovaní MySQL i pro případ pádu systému či poškození serveru.
Související témata:
Instalace Forpsi backup agenta Evault na Linux server
Instalace Forpsi backup agenta Commvault na Linux server
Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.
Byl pro Vás tento článek užitečný?
Klikni na počet hvězd pro hlasování.
Průměrné hodnocení. 0 / 5. Počet hlasování: 0
Zatím nehodnoceno! Buďte první
Je mi líto, že pro Vás nebyl článek užitečný.
Jak mohu vylepšit článek?
Řekněte mi, jak jej mohu zlepšit.
Odebírejte Newsletter
Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.