1. Úvod
MySQL je jedním z nejpoužívanějších relačních systémů pro správu databází (RDBMS) pro webové služby a obchodní aplikace. Databáze postavené na MySQL často slouží jako jádro každodenních operací a služeb. Pokud dojde ke ztrátě dat v důsledku selhání systému nebo lidské chyby, může to mít významný dopad na kontinuitu podnikání.
Zde se stávají klíčovými „backupy“. MySQL poskytuje oficiální nástroj příkazového řádku nazvaný „mysqldump“, který vám umožňuje snadno exportovat obsah databáze a uložit ho jako soubory zálohy.
Pomocí tohoto nástroje můžete zvládnout různé operační potřeby, jako je obnova po katastrofě, migrace do jiného prostředí a periodické archivní úložiště.
V tomto článku vysvětlíme, jak exportovat databáze MySQL pomocí „mysqldump“, pokrýváme vše od základního použití po pokročilé konfigurace. Dokonce i začátečníci mohou sledovat, protože poskytujeme podrobné vysvětlení s praktickými příklady příkazů.
2. Základní použití mysqldump
mysqldump je nástroj příkazového řádku používaný k exportu obsahu databáze MySQL do souboru SQL. Základní syntaxe je velmi jednoduchá a zálohy lze vytvořit jen s několika řádky příkazů. V této sekci vysvětlujeme běžně používané metody exportu.
Export jedné databáze
Nejběžnější použití je export celé jedné databáze.
mysqldump -u username -p database_name > backup.sql
Po spuštění budete vyzváni k zadání hesla a obsah určené databáze bude vypsán do souboru nazvaného backup.sql.
Export více databází
Pokud chcete zálohovat více databází najednou, použijte možnost --databases.
mysqldump -u username -p --databases db1 db2 db3 > multi_backup.sql
V tomto formátu je zahrnut příkaz CREATE DATABASE pro každou databázi, což činí obnovu spolehlivější a pohodlnější.
Export všech databází
K zálohování všech databází na serveru použijte možnost --all-databases.
mysqldump -u username -p --all-databases > all_backup.sql
Tento příkaz exportuje všechny databáze přítomné na serveru MySQL (včetně mysql, information_schema, performance_schema a dalších).
Příklad: Zahrnutí data do názvu výstupního souboru
Pro naplánované zálohy usnadňuje zahrnutí data do názvu výstupního souboru správu. Níže je příklad použití UNIX shellu:
mysqldump -u username -p database_name > backup_$(date +%F).sql
Tímto přístupem je automaticky generován soubor jako backup_2025-04-13.sql, což usnadňuje organizaci záloh.
3. Varianty exportu
mysqldump dokáže více než jen exportovat celou databázi. Podporuje také flexibilní možnosti exportu v závislosti na vašich potřebách. V této sekci představujeme pokročilé techniky, jako je export specifických tabulek, export pouze schématu nebo dat a export filtrovných dat pomocí podmínek.
Export specifických tabulek
Pokud chcete zálohovat pouze specifické tabulky v databázi, můžete je explicitně zadat podle názvů.
mysqldump -u username -p database_name table1 table2 > selected_tables.sql
Příklad:
mysqldump -u root -p mydb users orders > users_orders.sql
Tento příkaz exportuje pouze tabulky users a orders z databáze mydb.
Export pouze dat nebo pouze schématu
mysqldump poskytuje možnosti pro export pouze definic schématu nebo pouze dat.
- Export pouze schématu (struktury):
mysqldump -u username -p --no-data database_name > schema_only.sql
- Export pouze dat (bez příkazů CREATE TABLE):
mysqldump -u username -p --no-create-info database_name > data_only.sql
Tyto možnosti jsou užitečné při sdílení pouze schématu mezi vývojovým a produkčním prostředím nebo při importu inkrementálních dat.
Export dat s podmínkami (–where)
Pro export pouze podmnožiny dat použijte volbu --where. Používá stejnou syntaxi jako SQL klauzule WHERE.
mysqldump -u username -p database_name table_name --where="condition" > filtered_data.sql
Příklad:
mysqldump -u root -p mydb users --where="created_at >= '2025-01-01'" > users_2025.sql
V tomto příkladu jsou exportovány pouze záznamy vytvořené v roce 2025 nebo později z tabulky users.
4. Často Používané Volby a Jejich Vysvětlení
Ačkoliv je mysqldump jednoduchý, kombinace voleb umožňuje bezpečnější a efektivnější zálohy. V této sekci vysvětlujeme často používané volby v praktických prostředích.
–single-transaction: Zachovat Konzistenci Transakce
mysqldump -u username -p --single-transaction database_name > backup.sql
Tato volba je účinná při použití úložišť podporujících transakce, jako je InnoDB. Spouští proces dumpu v rámci jedné transakce, čímž zajišťuje konzistenci během exportu bez použití zámků pro čtení. To je zvláště užitečné, když potřebujete, aby služby během zálohování běžely.
Poznámka: Tato volba nemá žádný vliv na ne‑transakční úložiště, jako je MyISAM.
–quick: Snížit Spotřebu Paměti
mysqldump -u username -p --quick database_name > backup.sql
S touto volbou mysqldump načítá řádky po jednom místo načtení všech dat najednou do paměti. Tím se snižuje spotřeba paměti a zvyšuje stabilita při exportu velkých tabulek.
–routines a –events: Zahrnout Uložené Procedury a Události
Ve výchozím nastavení nejsou do exportu zahrnuty uložené procedury a události. Použijte následující volby pro jejich zahrnutí:
mysqldump -u username -p --routines --events database_name > backup_with_logic.sql
--routines: Zahrnout uložené procedury a funkce--events: Zahrnout naplánované události
Pokud je obchodní logika silně implementována na úrovni databáze, nezapomeňte na tyto volby.
–add-drop-table: Užitečné pro Přepisování Tabulek
mysqldump -u username -p --add-drop-table database_name > backup.sql
Tato volba přidá před každou definici tabulky příkaz DROP TABLE IF EXISTS. Pokud tabulky se stejným názvem již v cílovém prostředí existují, budou před jejich znovuvytvořením odstraněny.
–lock-tables: Efektivní pro MyISAM
mysqldump -u username -p --lock-tables database_name > backup.sql
Ačkoliv je pro InnoDB obvykle zbytečná, tato volba zamyká tabulky, aby zabránila zápisům během exportu při použití MyISAM. Je užitečná, když je konzistence kritická.

5. Jak Importovat Exportovaný Soubor
SQL soubory exportované pomocí mysqldump lze obnovit (importovat) pomocí standardních metod importu MySQL. V této sekci vysvětlujeme základy importu ze záložního souboru, praktické příklady obnovy a hlavní opatření.
Základní Příkaz pro Import
Exportovaný SQL soubor lze snadno importovat pomocí příkazu mysql. Základní syntaxe je následující:
mysql -u username -p database_name < backup.sql
Příklad:
mysql -u root -p mydb < backup.sql
Když spustíte tento příkaz, SQL příkazy obsažené v backup.sql jsou provedeny v pořadí a databáze je obnovena do původního stavu.
Import do Nové Databáze
Protože záložní soubor nemusí obsahovat příkaz CREATE DATABASE, pokud chcete importovat do databáze s jiným názvem, musíte nejprve vytvořit novou databázi.
Příklad: Vytvořit Novou Databázi “mydb_restore” a Importovat
CREATE DATABASE mydb_restore;
mysql -u root -p mydb_restore < backup.sql
Poznámka: SQL exportované s volbou --databases zahrnuje příkazy CREATE DATABASE, takže si uvědomte, že postup se v takovém případě liší.
Import Komprimovaného Souboru (.gz)
Pokud je váš záložní soubor komprimován pomocí gzip nebo podobně, můžete jej importovat přímo během dekomprese:
gunzip < backup.sql.gz | mysql -u username -p database_name
Tato metoda vám umožní rychle obnovit a zároveň ušetřit místo na disku.
Běžné chyby při importu a jak je opravit
| Error | Cause | Solution |
|---|---|---|
ERROR 1049 (42000): Unknown database | The target database does not exist | Create it in advance with CREATE DATABASE |
Access denied | Insufficient permissions or incorrect credentials | Recheck the username, password, and privileges |
ERROR 1064 (42000): You have an error in your SQL syntax | SQL format incompatibility between versions | Verify the dump matches the MySQL version you are using |
Shrnutí: Považujte import za součást procesu zálohování
Záložní soubor vytvořený pomocí mysqldump není užitečný, pokud jej jen vytvoříte. Skutečná hodnota zálohy spočívá v tom, že zajistíte, že ji můžete obnovit, když ji potřebujete. Z tohoto důvodu se doporučuje pravidelně testovat importy a potvrdit, že soubor se načte správně.
6. Praktické tipy a opatření
Ačkoliv je mysqldump snadno použitelný, velké databáze a produkční prostředí někdy vyžadují opatrný provoz a další strategie. V této sekci představujeme užitečné praktické techniky a opatření, která pomáhají předcházet problémům.
Komprimujte velké databáze pomocí gzip
Protože mysqldump vytváří textové SQL soubory, mohou se stát velmi velkými. Pro velké databáze, které přesahují několik gigabajtů, je běžné kombinovat mysqldump s gzip pro kompresi výstupu.
mysqldump -u username -p database_name | gzip > backup.sql.gz
Tato metoda může výrazně snížit využití disku a také snižuje zátěž během vzdálených přenosů.
Udělejte z ověřování exportu a importu zvyk
Záloha je k ničemu, pokud ji nemůžete importovat, když je potřeba. Doporučujeme následující postupy:
- Pravidelně obnovujte zálohy v odděleném prostředí pro testování
- Ověřte integritu souboru pomocí md5sum nebo sha256sum
- Uchovávejte více generací záloh pro kritické databáze
Dbejte na rozdíly ve verzích
Pokud se verze MySQL liší mezi zdrojem exportu a cílem importu, rozdíly v syntaxi a interním chování mohou zabránit správnému provedení SQL souboru.
- Pokud je to možné, pracujte se stejnou verzí
- Pokud musíte přecházet mezi verzemi, ovládejte chování pomocí voleb (např.
--set-gtid-purged=OFF) - Před a po aktualizacích vždy potvrďte kompatibilitu definice schématu
Používejte cron a skripty pro automatizaci
Pokud chcete spouštět automatické denní nebo týdenní zálohy, použití shell skriptů a cronu usnadní správu.
#!/bin/bash
DATE=$(date +%F)
mysqldump -u root -p[password] mydb | gzip > /backup/mydb_$DATE.sql.gz
Umístěním skriptu jako je tento do /etc/cron.daily/ můžete automaticky sbírat zálohy každý den.
Poznámka: Z bezpečnostních důvodů se vyhněte přímému zapisování hesel. Doporučuje se bezpečně spravovat hesla pomocí souboru
.my.cnf.
Zvažte také bezpečnost
Záložní soubory mohou obsahovat citlivé informace. Implementujte následující opatření:
- Nastavte vhodná omezení přístupu k úložišti
- Šifrujte zálohy pro ukládání a přenos (např. pomocí GPG nebo SFTP)
- Při ukládání do cloudu zvažte automatické nastavení záloh a správu životního cyklu
7. Často kladené otázky (FAQ)
V této sekci shrnujeme běžné otázky a často se vyskytující problémy při používání mysqldump ve formátu otázek a odpovědí.
Q1. Proč při exportu dostávám chybu „Access denied“?
A. Zadaný MySQL uživatel může postrádat potřebná oprávnění, jako jsou „SELECT“ nebo „LOCK TABLES“ na cílové databázi. Ověřte potřebná oprávnění a požádejte správce, aby je v případě potřeby přidělil. Pokud selže zamykání tabulek, může v některých případech pomoci volba --single-transaction.
Q2. Velikost záložního souboru je extrémně velká. Existuje způsob, jak ji zmenšit?
A. Pokud máte velké tabulky nebo velké množství dat, může SQL soubor dosáhnout velikosti v gigabajtech. Velikost můžete snížit následujícími metodami:
- Komprimujte pomocí
gzip(příklad:mysqldump ... | gzip > backup.sql.gz) - Použijte
--no-datanebo--no-create-infopro export pouze toho, co potřebujete - Použijte volbu
--wherepro filtrování exportovaných dat (např. konkrétní časová období)
Q3. Jak mohu exportovat jen konkrétní tabulky?
A. Uveďte názvy tabulek na konci příkazu, aby se exportovaly jen vybrané tabulky.
mysqldump -u root -p mydb users orders > selected.sql
Toto je pohodlné, když chcete zálohovat jen určité tabulky místo celé databáze.
Q4. Procedury a události nejsou zahrnuty do exportu. Proč?
A. Ve výchozím nastavení mysqldump neobsahuje uložené procedury (rutiny) ani naplánované události. Chcete‑li je zahrnout, přidejte následující volby:
--routines --events
Také se ujistěte, že uživatel má dostatečná oprávnění k přístupu k těmto objektům.
Q5. Na co si mám dát pozor při přenosu souboru zálohy na jiný server?
A. Klíčové body, které je třeba zvážit:
- Kódování znaků : Pokud se kódování mezi servery liší, může dojít k poškození textu. V případě potřeby explicitně uveďte
--default-character-set=utf8. - Rozdíly ve verzích : Zajistěte kompatibilitu mezi verzemi MySQL na zdrojovém a cílovém serveru.
- Bezpečný přenos souborů : Používejte
scp,rsyncneboSFTPpro zabezpečený přenos. - Kontrola integrity souboru : Po přenosu ověřte integritu pomocí
md5sumnebosha256sum.
Q6. Existují rozdíly mezi příkazy pro Windows a pro Mac/Linux?
A. Základní syntaxe příkazu je stejná, ale rozdíly jsou v chování shellu, dávkovém zpracování a použití příkazu pro datum. Například při generování názvů souborů s datem může Windows použít PowerShell nebo proměnnou %DATE%, zatímco Linux a macOS používají příkaz date.
8. Závěr
V tomto článku jsme se zabývali nástrojem pro zálohování a migraci MySQL „mysqldump“, od základního použití po pokročilé techniky a řešení problémů.
Ačkoliv mysqldump používá jednoduchou syntaxi, výběr správných voleb a konfigurací příkazů podle vašeho účelu má výrazný dopad na kvalitu zálohy a spolehlivost obnovy.
✅ Klíčové poznatky z tohoto článku
- Základní syntaxe mysqldump a tři metody exportu (jedna databáze, více databází a všechny databáze)
- Flexibilní varianty exportu jako jen schéma, jen data nebo vybrané tabulky
- Důležité volby pro reálné nasazení včetně
--single-transactiona--routines - Základní příkazy pro obnovu a jak řešit chyby při importu
- Praktické tipy jako komprese gzip a automatizace pomocí cron
- Užitečné znalosti pro řešení problémů uvedené v sekci FAQ
🛡 Nejlepší postupy pro používání mysqldump
- Nevytvářejte jen zálohy – ověřte, že je lze obnovit
- Připravte se na problémy způsobené rozdíly ve verzích a kódování znaků
- Navrhněte operace zálohování s kompresí, automatizací a správnou kontrolou přístupu
- Zahrňte uložené procedury a události, aby odpovídaly vaší produkční konfiguraci
Správně navržený a provozovaný zálohovací systém využívající mysqldump umožňuje rychlé zotavení v případě neočekávaných selhání a přispívá k spolehlivému provozu systému. Zejména pro podnikovou infrastrukturu a WordPress stránky, kde může být ztráta dat kritická, je pochopení a efektivní používání mysqldump nezbytné.
Použijte tento průvodce jako referenci pro vytvoření optimální zálohovací strategie ve vašem prostředí.


