Jak exportovat konkrétní tabulky pomocí mysqldump: Kompletní průvodce s příklady a osvědčenými postupy

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á dumpovat
  • table_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í.