1. Úvod
MySQL je široce používaný systém pro správu databází pro mnoho webových stránek a aplikací. Mezi jeho nástroje patří příkaz mysqldump, který je nezbytný pro vytváření záloh databází a provádění migrací. Tento příkaz je zvláště užitečný, když potřebujete zálohovat jen konkrétní tabulky z velké databáze.
V tomto článku podrobně vysvětlíme jak dumpovat konkrétní tabulky pomocí příkazu mysqldump. Průvodce je přátelský k začátečníkům, ale také pokryjeme pokročilé možnosti a praktické případy použití pro středně pokročilé uživatele.
2. Základní syntaxe příkazu mysqldump
Nejprve si projděme základní použití příkazu mysqldump. Tento příkaz slouží k dumpování (zálohování) struktury a dat celé databáze nebo vybraných tabulek.
Základní syntaxe
Zadáním uživatelského jména, hesla, názvu databáze a názvu tabulky můžete zálohovat konkrétní tabulku, jak je ukázáno níže:
mysqldump -u username -p database_name table_name > output_file.sql
-u: určuje uživatelské jméno databáze-p: vyzve k zadání hesla databázedatabase_name: název databáze, kterou chcete dumpovattable_name: název konkrétní tabulky, kterou chcete dumpovat> output_file.sql: výstupní soubor, kam se dump uloží
Často používané volby
--single-transaction: Zajišťuje konzistenci transakcí při zálohování InnoDB tabulek--skip-lock-tables: Zabraňuje zamykání tabulek během procesu zálohování

3. Dumpování konkrétních tabulek
Dumpování jedné tabulky
Pro zálohování pouze jedné tabulky uveďte název tabulky za názvem databáze. Například následující příkaz dumpuje jen tabulku users:
mysqldump -u root -p my_database users > users_dump.sql
Tento příkaz uloží strukturu a data tabulky users z databáze my_database do souboru users_dump.sql.
Dumpování více tabulek
Pokud chcete zálohovat více tabulek najednou, uveďte názvy tabulek oddělené mezerami:
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
Tento příkaz dumpuje tabulky users, orders a products najednou.
Použití seznamu tabulek
Při práci s velkým počtem tabulek může být ruční zadávání všech názvů obtížné. V takovém případě můžete použít příkaz SHOW TABLES nebo skript, který automaticky vygeneruje seznam tabulek k dumpování:
mysql -u root -p my_database -N -e "SHOW TABLES LIKE 'hoge%'" > table_list.txt
mysqldump -u root -p my_database `cat table_list.txt` > partial_dump.sql
Tato metoda vám umožní efektivně zálohovat jen tabulky, které odpovídají konkrétnímu vzoru.
4. Volby a pokročilé použití
Příkaz mysqldump obsahuje různé možnosti, které vám umožní přizpůsobit zálohy podle vašich potřeb. Níže jsou uvedeny některé užitečné případy.
Dumpování pouze struktury
Pokud potřebujete jen strukturu tabulky bez dat, použijte volbu --no-data:
mysqldump -u root -p my_database --no-data users > users_structure.sql
Tento příkaz dumpuje pouze strukturu tabulky users.
Dumpování pouze dat
Pokud chcete jen data bez struktury tabulky, použijte volbu --no-create-info:
mysqldump -u root -p my_database --no-create-info users > users_data.sql
Tento příkaz dumpuje jen data tabulky users.
Podmíněné dumpy
Můžete použít volbu --where k dumpování jen řádků, které splňují konkrétní podmínky. Například dumpovat jen řádky, kde je id větší než 100:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
To je užitečné pro zálohování jen požadované podmnožiny dat z velkých tabulek.

5. Praktické příklady
Případ použití 1: Zálohování jedné tabulky
Například pro zálohování jen tabulky salary z databáze employees:
mysqldump -u root -p employees salary > salary_dump.sql
Případ použití 2: Zálohování dat s podmínkami
Pro výpis pouze podmnožiny dat použijte volbu --where. Například pro zálohování pouze řádků, kde je id větší než 100, z tabulky users:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. Nejlepší postupy a úvahy
Vyhýbání se problémům se zamčením tabulek
Při použití mysqldump mohou být tabulky zamčeny, což brání ostatním operacím. Na produkčních systémech se doporučuje použít volbu --single-transaction, aby se předešlo výpadkům. U tabulek InnoDB je ještě bezpečnější kombinovat ji s volbou --skip-lock-tables.
Zpracování velkých objemů dat
U velmi velkých databází může proces výpisu trvat dlouho. Běžnou praxí je komprimovat výstup v reálném čase pomocí gzip:
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
Tento příkaz šetří místo na disku tím, že komprimuje výpis během jeho vytváření.

7. Závěr
V tomto článku jsme se zabývali tím, jak pomocí příkazu mysqldump exportovat konkrétní tabulky. Od základní syntaxe po podmíněné výpisy, exporty pouze struktury nebo pouze dat a dokonce automatizaci pomocí skriptů – prozkoumali jsme širokou škálu případů použití. Příkaz mysqldump je výkonný nástroj, který při správném použití výrazně usnadňuje zálohování a migraci databází.
V dalším článku se ponoříme do pokročilejších možností mysqldump a porovnáme jej s dalšími nástroji pro zálohování databází.


