Jak použít mysqldump k zálohování konkrétních tabulek v MySQL

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áze
  • database_name : název databáze, kterou chcete dumpovat
  • table_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í.