Čo je mysqldump a ako ho môžem používať?

Obsah:

Čo je mysqldump a ako ho môžem používať?
Čo je mysqldump a ako ho môžem používať?
Anonim

Ako jedna z popredných voľne dostupných databáz je MySQL obľúbenou voľbou pre mnohé webové aplikácie. Keď je vaša aplikácia vystavená internetu, je vystavená škodlivým útokom. Ak je váš server ohrozený, v najlepšom prípade musíte preinštalovať aplikáciu; v najhoršom prípade môžete prísť o svoje údaje. Okrem toho sa môžete dostať do situácie, keď budete musieť migrovať databázu z jedného servera na druhý.

Na čo sa mysqldump používa?

Nástroj mysqldump vás pokryje v situáciách ohrozenia servera aj migrácie. Jeho základnou funkciou je vziať databázu MySQL a vypísať ju ako textový súbor. Ale nie akýkoľvek textový súbor; súbor je množina príkazov SQL. Tieto príkazy, keď sú spustené, rekonštruujú databázu do presného stavu, v akom bola, keď bol výpis vykonaný.

Použite mysqldump na vytváranie exportov databázy ako zálohy alebo pri presúvaní databázy na nového hostiteľa. V oboch prípadoch bude textový súbor importovaný späť do databázového servera MySQL. Vykoná všetky príkazy SQL v súbore, čím obnoví databázu do pôvodného stavu. Táto časť nepoužíva príkaz mysqldump, ale ani bez tejto pomôcky by to nebolo možné.

Dokumenty MySQL uvádzajú ďalšie metódy na vytváranie záloh, ale tieto majú nevýhody:

  • Hotcopy databázy z MySQL Enterprise je skvelý spôsob, ako dosiahnuť tieto zálohy – ak vám nevadí cenovka Enterprise.
  • Kopírovanie databázových dátových adresárov môže byť zložité pri prechode medzi operačnými systémami, pretože ciele budú odlišné.
  • Export do textového súboru s oddeľovačmi vám poskytne obsah, ale budete musieť znova vytvoriť štruktúru.
  • Často môžete zálohovať databázy z programov GUI, ako je MySQL Workbench. Ale toto je manuálny proces; nie niečo, čo môžete napísať alebo zahrnúť do dávkovej úlohy.

Nainštalovať nástroj mysqldump

Pre Windows si prečítajte naše pokyny na inštaláciu MySQL na Windows 7 (proces inštalácie je rovnaký pre Windows 10). V systéme macOS si pozrite naše pokyny na inštaláciu MySQL na macOS 10.7 (opäť staršie, ale stále použiteľné). Používatelia systémov Linux založených na Ubuntu môžu použiť nasledujúci príkaz na inštaláciu klienta MySQL a pomôcok:

sudo apt install mysql-client

Extrahujte výpis MySQL

Po inštalácii použite mysqldump na získanie úplnej zálohy databázy.

mysqldump -h [názov alebo IP vášho hostiteľa DB] -u [meno používateľa databázy DB] -p [názov databázy] > db_backup.sql

Tu je popis príznakov použitých v tomto príkaze:

  • - h: Tento príznak je hostiteľ databázy. Môže to byť úplný názov hostiteľa (napríklad myhost.domain.com) alebo adresa IP. Ak príkaz spúšťate na rovnakom hostiteľovi ako server MySQL, nechajte toto pole prázdne.
  • - u: Vaše používateľské meno.
  • - p: Ak ste správne zabezpečili inštaláciu MySQL, na pripojenie budete potrebovať heslo. Tento príznak bez argumentu vás pri spustení príkazu vyzve na zadanie hesla. Niekedy je užitočné zadať heslo priamo ako argument tohto príznaku, napríklad v záložnom skripte. Ale na výzvu by ste to nemali, pretože ak by niekto získal prístup k vášmu počítaču, mohol by získať toto heslo v histórii príkazov.
  • > db_backup.sql: Táto časť hovorí mysqldump, aby nasmeroval svoj výstup do súboru. Normálne príkaz odošle všetko do konzoly, čo znamená, že na obrazovke uvidíte niekoľko príkazov SQL. Symbol > vedie výstup do pomenovaného textového súboru. Ak tento súbor neexistuje, vytvorí sa automaticky.

Po dokončení budete mať súbor. SQL. Toto je textový súbor obsahujúci príkazy SQL. Môžete ho otvoriť v ľubovoľnom textovom editore a skontrolovať jeho obsah. Tu je export z databázy WordPress, ktorý ukazuje, ako sú tieto súbory poskladané.

Image
Image

Súbor je rozdelený na sekcie. Prvá časť nastavuje tabuľku pre komentáre WordPress. Druhá časť znova vytvorí obsah v týchto tabuľkách (v tomto príklade záznamy komentárov). Keď znova importujete výpis MySQL, príkaz prejde cez súbor, vykoná príkazy a znovu zostaví databázu tak, ako bola.

Importovať súbor výpisu MySQL

Pred importovaním súboru výpisu budete potrebovať už vytvorenú databázu a jej platné používateľské meno a heslo. Mali by ste mať tiež všetky povolenia pre databázu. Nepotrebujete povolenie GRANT, ale je jednoduchšie udeliť ich všetky.

Pred zmenou bezpečnostných rolí v databáze si prečítajte viac o povoleniach databázy.

Ak chcete znova importovať svoje údaje, prihláste sa na server MySQL pomocou príkazu mysql. Na výzvu zadajte use [názov databázy] a nahraďte názov databázy. Zadajte zdrojový [názov súboru] a nahraďte názov súboru výpisu, ktorý ste predtým vytvorili.

Po dokončení sa zobrazí zoznam správ s upozornením, že sa vykonávajú príkazy SQL. Dávajte pozor na chyby, ale ak máte správne povolenia, mali by ste byť v poriadku.

Image
Image

Po dokončení procesu budete mať duplikát pôvodnej databázy. Ak chcete overiť podobnosť medzi databázami, vykonajte ďalší výpis a porovnajte dva výstupy. Na porovnanie týchto dvoch súborov použite textový editor alebo špeciálny nástroj na porovnávanie.

Image
Image

Medzi týmito súbormi sú dva rozdiely, ktoré predstavujú červené čiary v hornej a dolnej časti pravého posúvača. Prvým je riadok, ktorý obsahuje názov databázy, a to je iné, pretože súbory boli pomenované inak. Druhá je časová pečiatka pre súbor výpisu. Je to iné, pretože druhá databáza bola znovu vytvorená po prvej. V opačnom prípade sú súbory úplne rovnaké, čo znamená, že aj databázy, ktoré ich vygenerovali.

FAQ

    Ako opravíte chybu mysqldump: Prístup odmietnutý pri použití tabuliek zámkov?

    Požiadajte správcu databázy, aby vám udelil privilégium LOCK. Ak sa tým problém nevyrieši, skúste spustiť rovnaký príkaz mysqldump s pridaním príznaku - -single-transaction, napríklad [ $ mysqldump --single-transaction] [-u používateľ] [-p DBNAME] > backup.sql

    Môžete použiť klauzulu „kde“s mysqldump?

    Pri vytváraní zálohy, ktorá obsahuje iba riadky spĺňajúce danú podmienku, použite klauzulu WHERE. Napríklad, ak chcete vypísať údaje iba z riadkov so stĺpcom id väčším ako 100, zadajte "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Odporúča: