Návod na MySQL mysqldump: Kompletní průvodce exportem, zálohováním a obnovou databáze

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

ErrorCauseSolution
ERROR 1049 (42000): Unknown databaseThe target database does not existCreate it in advance with CREATE DATABASE
Access deniedInsufficient permissions or incorrect credentialsRecheck the username, password, and privileges
ERROR 1064 (42000): You have an error in your SQL syntaxSQL format incompatibility between versionsVerify 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-data nebo --no-create-info pro export pouze toho, co potřebujete
  • Použijte volbu --where pro 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, rsync nebo SFTP pro zabezpečený přenos.
  • Kontrola integrity souboru : Po přenosu ověřte integritu pomocí md5sum nebo sha256sum.

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-transaction a --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

  1. Nevytvářejte jen zálohy – ověřte, že je lze obnovit
  2. Připravte se na problémy způsobené rozdíly ve verzích a kódování znaků
  3. Navrhněte operace zálohování s kompresí, automatizací a správnou kontrolou přístupu
  4. 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í.