Skip to content

Co je to mysqldump a jak jej používám?

3 de Srpen de 2021
GettyImages 942201142 8fed95f6488c4c32b9e792e54214ff3e

Jako jedna z předních volně dostupných databází je MySQL oblíbenou volbou pro mnoho webových aplikací. Když je vaše aplikace vystavena internetu, je vystavena škodlivým útokům. Pokud je váš server napaden, v nejlepším případě musíte aplikaci přeinstalovat; v nejhorším případě můžete přijít o svá data. Kromě toho se můžete dostat do situace, kdy potřebujete migrovat databázi z jednoho serveru na druhý.

K čemu se používá mysqldump?

Nástroj mysqldump vás pokryje jak pro kompromisy serveru, tak pro situace migrace. Jeho základní funkcí je převzít databázi MySQL a uložit ji jako textový soubor. Ale ne žádný textový soubor; soubor je sada příkazů SQL. Tyto příkazy po spuštění rekonstruují databázi do přesného stavu, ve kterém byla, když byl spuštěn výpis. Pomocí mysqldump můžete vytvářet exporty databáze jako zálohy nebo při přesunu databáze na nového hostitele. V obou případech bude textový soubor importován zpět do databázového serveru MySQL. Spustí všechny příkazy SQL v souboru, který obnoví databázi do původního stavu. Tato část nepoužívá příkaz mysqldump, ale bez tohoto nástroje by to také nešlo. Dokumenty MySQL uvádějí další metody zálohování, ale mají nevýhody:

  • Zkopírování databáze z MySQL Enterprise je skvělý způsob, jak dosáhnout těchto záloh – pokud vám nevadí cenovka Enterprise.
  • Kopírování datových adresářů databáze může být při přesunu mezi operačními systémy obtížné, protože cíle se budou lišit.
  • Export do textového souboru s oddělovači vám poskytne obsah, ale budete muset znovu vytvořit strukturu.
  • Databáze můžete často zálohovat z programů GUI, jako je MySQL Workbench. Ale toto je ruční proces; není to něco, co můžete skriptovat nebo zahrnout do dávkové úlohy.

Nainstalujte nástroj mysqldump

Pro Windows si přečtěte naše pokyny k instalaci MySQL na Windows 7 (proces instalace je stejný pro Windows 10). V systému macOS si přečtěte naše pokyny k instalaci MySQL do systému macOS 10.7 (opět starší, ale stále použitelné). Uživatelé systémů Linux založených na Ubuntu mohou k instalaci klienta a nástrojů MySQL použít následující příkaz: sudo apt install mysql-client

Extrahujte výpis MySQL

Po instalaci použijte mysqldump k získání úplné zálohy databáze. mysqldump -h [your DB host’s name or IP] -u [the DB user’s name] -p [the database name] > db_backup.sql

Zde je popis příznaků použitých v tomto příkazu:

  • -h: Tento příznak je hostitel databáze. Může to být úplné jméno hostitele (například myhost.domain.com) nebo IP adresa. Ponechte toto pole prázdné, pokud spustíte příkaz na stejném hostiteli jako server MySQL.
  • -u: Vaše uživatelské jméno.
  • -p: Pokud jste řádně zajistili instalaci MySQL, budete k připojení potřebovat heslo. Tento příznak bez argumentu vás vyzve k zadání hesla při spuštění příkazu. Někdy je užitečné zadat heslo přímo jako argument tohoto příznaku, například v záložním skriptu. Ale na výzvu byste neměli, protože kdyby někdo získal přístup k vašemu počítači, mohl by toto heslo získat v historii příkazů.
  • > db_backup.sql: Tato část říká mysqldump, aby nasměroval svůj výstup do souboru. Normálně příkaz vydá vše do konzoly, což znamená, že na obrazovce uvidíte několik příkazů SQL. Symbol> převádí výstup do pojmenovaného textového souboru. Pokud tento soubor neexistuje, je vytvořen automaticky.

Až bude hotový, budete mít soubor .SQL. Toto je textový soubor obsahující příkazy SQL. Obsah můžete otevřít v libovolném textovém editoru. Zde je export z databáze WordPress, který ukazuje, jak jsou tyto soubory sestaveny.

Soubor je rozdělen do sekcí. První část nastavuje tabulku pro komentáře WordPress. Druhá část znovu vytvoří obsah v těchto tabulkách (v tomto případě záznamy komentářů). Když znovu importujete výpis MySQL, příkaz pracuje prostřednictvím souboru, provede příkazy a znovu vytvoří databázi tak, jak byla.

Importujte soubor s výpisem MySQL

Před importem souboru s výpisem stavu paměti budete potřebovat již vytvořenou databázi a její platné uživatelské jméno a heslo. Měli byste také mít všechna oprávnění k databázi. Nepotřebujete povolení GRANT, ale je snazší je udělit všem. Než změníte role zabezpečení v databázi, přečtěte si další informace o oprávněních k databázi. Chcete-li znovu importovat data, přihlaste se na server MySQL pomocí mysql příkaz. Typ použití [database name] na výzvu a nahraďte název databáze. Vstupte zdroj [filename], a nahraďte název souboru s výpisem paměti, který jste dříve pořídili. Když skončíte, zobrazí se seznam zpráv s poznámkou, že se provádějí příkazy SQL. Dávejte pozor na chyby, ale pokud máte správná oprávnění, měli byste být v pořádku.

Import souboru mysqldump do nové databáze

Po dokončení procesu budete mít duplikát původní databáze. Chcete -li ověřit podobnost mezi databázemi, proveďte další výpis stavu a poté porovnejte dva výstupy. Porovnejte dva soubory pomocí textového editoru nebo vyhrazeného nástroje diff.

Porovnání souborů výpisu dvou databází

Mezi těmito soubory existují dva rozdíly, které představují červené čáry v horní a dolní části pravého posuvníku. První je řádek, který obsahuje název databáze, a to se liší, protože soubory byly pojmenovány odlišně. Druhým je časové razítko pro soubor s výpisem stavu paměti. To se liší, protože druhá databáze byla znovu vytvořena po první. Jinak jsou soubory úplně stejné, což znamená, že databáze, které je generovaly, jsou také. FAQ

  • Jak opravíte chybu mysqldump: Přístup odepřen při použití zámkových tabulek?

    Požádejte správce databáze o udělení oprávnění LOCK. Pokud se tím problém nevyřeší, zkuste spustit stejný příkaz mysqldump přidáním souboru –jediná transakce vlajka, jako např [$ mysqldump –single-transaction] [-u user] [-p DBNAME ] > backup.sql.

  • Můžete s mysqldump použít klauzuli „kde“?

    Při vytváření zálohy, která obsahuje pouze řádky splňující danou podmínku, použijte klauzuli WHERE. Chcete -li například ukládat data pouze z řádků se sloupcem id větším než 100, zadejte „mysqldump my_db_name my_table_name –where =“ id> 100 „> my_backup.sql“.