Jak se zálohuje MySQL databáze a jaký nejjednodužší příkaz použít? Na to se v rychlosti podíváme a některé příklady si ukážeme. Pokud používáte rozhraní phpMyAdmin, tak zálohování databáze je primitivní, stačí využít záložku pro "Export" a uložit si databázi do souboru. Pokud však phpMyAdmin nepoužíváte a chcete zálohovat databázi přímo z nějakého operačního systému typu Linux, FreeBSD apod., situace je složitější a je třeba využít příkaz mysqldump.
Abyste mohli použít příkaz pro zazálohování databáze mysqldump, musíte být v shellu a nikoli přímo v MySQL. Konkrétní manuál najdete na stránkách 4.5.4. mysqldump — A Database Backup Program.
Výstupem zálohování bude textový soubor, který bude obsahovat SQL příkazy nutné pro obnovu databáze.
Příkaz mysqldump má podobu:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases
Pro vyvolání helpu k příkazu mysqldump stačí také napsat příkaz:
shell> man mysqldump
či
shell> mysqldump --help
Samozřejmě u příkazu mysqldump je spousta voleb. Zde je výpis některých z nich:
--add-locks
Uzamkne a pak odemkne každou tabulku.
-l, --lock-tables
Vobla pozamyká všechny tabulky v dané databází ještě před provedením zálohy.
-A, --all-databases
Zazálohuje všechny databáze. Vobla dělá to samé jako --databases nad vybranými databázemi.
--add-drop-table
Volba přidá příkazy DROP (smazání tabulky) do vygenerovaného souboru. Vkládání příkazu DROP je vhodné v případě, že chcete databázi při načítání ze zálohy kompletně přepsat.
-d, --no-data
Nezapisují se pak žádná data. Volba je vhodná v případě uložení pouze struktury tabulek.
--opt
To samé jako --quick --add-drop-table --add-locks --extended-insert --lock-tables. Jedná se o nejrychlejší zálohu co se týká načítání z MySQL serveru. Navíc si nemusíte pamatovat spoustu voleb, stačí si zapamatovat tuto "optimální", a tedy často používanou.
-q, --quick
Nebafruje výsledek zálohování a rovnou ho posíla na výstup. Vhodné pro veliké zálohy.
-e, --extended-insert
Používá novou rychlejší syntaxi pro INSERT.
-pyour_pass, --password[=your_pass]
"your_pass" je heslo pro přístup k databázi.
-u user_name, --user=user_name
"user_name" je uživatelské jméno pro přístup k databázi.
Příklady použití:
Spuštění příkazu mysqldump bez parametrů --quick nebo --opt, způsobí, že celý výsledek bude načítán nejprve do paměti. To může být problematické u velkých databází!
Vytoření zálohy s daty:
shell> mysqldump --opt database > backup-file.sql
Poznámka: je to to samé jako shell> mysqldump --quick --add-drop-table --add-locks --extended-insert --lock-tables database > backup-file.sql
Příkaz je rychlý, tabulky jsou uzamčeny, vkládá se příkaz DROP a jde o zálohu včetně dat.
Já často používám (pro interní potřeby, kdy vím, že se databáze za běhu nemění):
shell> mysqldump --add-drop-table database > backup-file.sql
Vytvoření zálohy struktury databáze:
shell> mysqldump --no-data database > backup-file.sql
Já často používám:
shell> mysqldump --no-data --add-drop-table database > backup-file.sql
Načtení zálohy databáze zpět do MySQL:
shell> mysql database < backup-file.sql
Záloha všech databází:
shell> mysqldump --all-databases > all_databases.sql
Příklad použití u databáze chráněné jménem a heslem:
shell> mysqldump --opt -uuser_name -pyour_pass database > backup-file.sql
shell> mysql -uuser_name -pyour_pass databaze < backup-file.sql
Poznámka: "database" je název zálohované databáze a "backup-file.sql" je vytvořený záložní textový soubor obsahující SQL příkazy pro obnovu dat či databáze.
Zdroj: www.mysql.com