1. Úvod
MySQL je systém pro správu databází, který používá mnoho webových stránek a aplikací. Mezi jeho nástroji je příkaz mysqldump, který je zvláště důležitý při provádění záloh nebo migrací databází. Konkrétně když chcete zálohovat jen určité tabulky z velké databáze, tento příkaz se stává mimořádně užitečným.
V tomto článku podrobně vysvětlíme jak dumpovat konkrétní tabulky pomocí příkazu mysqldump. Průvodce je navržen tak, aby byl snadno pochopitelný pro začátečníky, a zároveň představuje možnosti pro středně pokročilé i pokročilé techniky použití.
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 konkrétních tabulek.
Základní syntaxe
Zadáním uživatelského jména, hesla, názvu databáze a názvu tabulky, jak je ukázáno níže, můžete zálohovat konkrétní tabulku.
mysqldump -u username -p database_name table_name > output_file.sql
-u: Určuje uživatelské jméno používané k přístupu k databázi-p: Určuje heslo (budete vyzváni k jeho zadání)database_name: Název databáze, která se má dumpovattable_name: Konkrétní tabulka, která se má dumpovat> output_file.sql: Určuje výstupní soubor
Často používané volby
--single-transaction: Zajišťuje transakční konzistenci při zálohování tabulek InnoDB--skip-lock-tables: Zabraňuje zamykání tabulek během zálohy

3. Jak dumpovat konkrétní tabulky
Dumpování jedné tabulky
Pro zálohování pouze jedné konkrétní tabulky uveďte název tabulky za názvem databáze. V následujícím příkladu je dumpována jen tabulka users.
mysqldump -u root -p my_database users > users_dump.sql
Tento příkaz uloží strukturu a data tabulky users v databázi 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
V uvedeném příkladu jsou najednou dumpovány tři tabulky users, orders a products.
Dumpování pomocí seznamu tabulek
Při dumpování velkého počtu tabulek může být ruční zadávání každého názvu tabulky obtížné. V takových případech 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 ty tabulky, které odpovídají zadanému vzoru.
4. Volby a pokročilé použití
mysqldump poskytuje různé volby, které vám umožní flexibilně vytvářet zálohy podle vašich potřeb. Níže jsou uvedeny některé volby pro konkrétní scénáře.
Dumpování pouze struktury
Pokud nepotřebujete data a chcete zálohovat jen strukturu tabulky, použijte volbu --no-data.
mysqldump -u root -p my_database --no-data users > users_structure.sql
Tento příkaz dumpuje jen strukturu tabulky users a neobsahuje žádná data.
Dumpování pouze dat
Naopak, pokud chcete dumpovat jen data tabulky, použijte volbu --no-create-info.
mysqldump -u root -p my_database --no-create-info users > users_data.sql
Tento příkaz vyloučí strukturu tabulky a dumpuje jen data.
Dumpování dat na základě konkrétních podmínek
Pomocí volby --where můžete dumpovat jen data, která splňují určité podmínky. Například pro dumpování jen řádků, kde id je větší než 100, použijte následující příkaz:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
Tímto můžete extrahovat a zálohovat jen potřebná data z velké databáze.

5. Praktické příklady použití
Případ použití 1: Zálohování jedné tabulky
Pro například, pokud chcete zálohovat pouze tabulku salary v databázi employees, použijte následující příkaz:
mysqldump -u root -p employees salary > salary_dump.sql
Případ použití 2: Zálohování dat s podmínkami
Pro export pouze konkrétního rozsahu dat použijte volbu --where. Například pro zálohování pouze řádků, kde je id v tabulce users větší než 100:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. Důležité poznámky a osvědčené postupy
Problémy se zamykáním tabulek
Při použití mysqldump mohou být tabulky uzamčeny, což brání provádění dalších operací. To může být zvláště problematické v produkčních systémech. Pro zabránění tomuto problému se doporučuje použít volbu --single-transaction. Pro tabulky InnoDB ještě zvýší bezpečnost kombinace s volbou --skip-lock-tables.
Zpracování velkých objemů dat
Pokud vaše databáze obsahuje velmi velké množství dat, může proces dumpování trvat dlouho. Jedním z účinných přístupů je použít gzip k kompresi dumpu v reálném čase.
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
Tento příkaz komprimuje data během procesu dumpování, což pomáhá šetřit místo na disku.
7. Závěr
V tomto článku jsme vysvětlili, jak pomocí příkazu mysqldump exportovat konkrétní tabulky. Pokryli jsme vše od základního použití příkazu po podmíněné dumpy, exporty pouze struktury nebo pouze dat a dokonce i efektivní skriptovací techniky. mysqldump je velmi výkonný nástroj a při správném použití vám umožní plynule provádět zálohy a migrace databází.
V dalším článku se podrobněji podíváme na pokročilejší možnosti mysqldump a porovnáme jej s dalšími nástroji pro zálohování.


