Záloha MySQL databáze

Aktualizováno: 10. 11. 2019, datum vydání: 23. 4. 2011

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

Další články