Co je mysqldump a jak jej mohu používat?

Obsah:

Co je mysqldump a jak jej mohu používat?
Co je mysqldump a jak jej mohu používat?
Anonim

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 kompromitován, musíte aplikaci v nejlepším případě přeinstalovat; v nejhorším případě můžete o svá data přijít. Navíc se můžete dostat do situace, kdy budete potřebovat migrovat databázi z jednoho serveru na druhý.

K čemu se mysqldump používá?

Nástroj mysqldump vás pokryje jak v případě kompromitace serveru, tak v situacích migrace. Jeho základní funkcí je vzít databázi MySQL a vypsat ji jako textový soubor. Ale ne žádný textový soubor; soubor je sada příkazů SQL. Tyto příkazy, když jsou provedeny, rekonstruují databázi do přesného stavu, ve kterém se nacházela při spuštění výpisu.

Použijte mysqldump k vytvoření exportů 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. Provede všechny příkazy SQL v souboru, čímž se databáze znovu sestaví do původního stavu. Tato část nepoužívá příkaz mysqldump, ale ani bez této utility by to nebylo možné.

Dokumenty MySQL uvádějí další metody zálohování, ale tyto mají své nevýhody:

  • Hotcopy 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í databázových datových adresářů může být složité při přesunu mezi operačními systémy, protože cíle se budou lišit.
  • Exportem do textového souboru s oddělovači získáte obsah, ale budete muset znovu vytvořit strukturu.
  • Často můžete zálohovat databáze z programů GUI, jako je MySQL Workbench. Ale toto je ruční proces; není to něco, co můžete naskriptovat nebo zahrnout do dávkové úlohy.

Nainstalovat 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 na 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 MySQL a nástrojů 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 [název nebo IP hostitele DB] -u [jméno uživatele databáze] -p [název databáze] > 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ý název hostitele (například myhost.domain.com) nebo IP adresa. Nechte toto prázdné, pokud příkaz spouštíte na stejném hostiteli jako server MySQL.
  • - u: Vaše uživatelské jméno.
  • - p: Pokud jste správně zabezpečili instalaci MySQL, budete pro připojení potřebovat heslo. Tento příznak bez argumentu vás při spuštění příkazu vyzve k zadání hesla. 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 to neměli, protože kdyby někdo získal přístup k vašemu počítači, mohl by získat toto heslo v historii příkazů.
  • > db_backup.sql: Tato část říká mysqldump, aby nasměroval svůj výstup do souboru. Normálně příkaz odešle vše na konzolu, což znamená, že na obrazovce uvidíte několik příkazů SQL. Symbol > přesouvá výstup do pojmenovaného textového souboru. Pokud tento soubor neexistuje, vytvoří se automaticky.

Po dokončení budete mít soubor. SQL. Toto je textový soubor obsahující příkazy SQL. Můžete jej otevřít v libovolném textovém editoru a prohlédnout si jeho obsah. Zde je export z databáze WordPress, který ukazuje, jak jsou tyto soubory poskládány.

Image
Image

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říkladu záznamy komentářů). Když znovu importujete výpis MySQL, příkaz projde souborem, provede příkazy a znovu sestaví databázi tak, jak byla.

Importovat soubor výpisu MySQL

Před importem souboru výpisu budete potřebovat již vytvořenou databázi a její platné uživatelské jméno a heslo. Měli byste mít také všechna oprávnění pro databázi. Nepotřebujete povolení GRANT, ale je jednodušší je udělit všechny.

Před změnou rolí zabezpečení ve vaší databázi si přečtěte další informace o oprávněních k databázi.

Pokud chcete svá data znovu importovat, přihlaste se k serveru MySQL pomocí příkazu mysql. Na výzvu zadejte use [název databáze] a nahraďte název databáze. Zadejte zdrojový [název_souboru] a nahraďte název souboru výpisu, který jste předtím pořídili.

Po dokončení se zobrazí seznam zpráv s upozorněním, ž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.

Image
Image

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 a porovnejte dva výstupy. K porovnání těchto dvou souborů použijte textový editor nebo speciální nástroj pro porovnání.

Image
Image

Mezi těmito soubory jsou 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 jinak. Druhým je časové razítko pro soubor výpisu. 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 vygenerovaly, jsou také.

FAQ

    Jak opravíte chybu mysqldump: Přístup odepřen při použití tabulek zámků?

    Požádejte správce databáze, aby vám udělil oprávnění LOCK. Pokud to problém nevyřeší, zkuste spustit stejný příkaz mysqldump a přidejte příznak - -single-transaction, například [ $ mysqldump --single-transaction] [-u uživatel] [-p DBNAME] > backup.sql

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

    Při vytváření zálohy, která obsahuje pouze řádky splňující danou podmínku, použijte klauzuli WHERE. Chcete-li například vypsat 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".

Doporučuje: