Kaj je mysqldump in kako ga uporabljam?

Kazalo:

Kaj je mysqldump in kako ga uporabljam?
Kaj je mysqldump in kako ga uporabljam?
Anonim

Kot ena izmed vodilnih prosto dostopnih baz podatkov je MySQL priljubljena izbira za številne spletne aplikacije. Ker je vaša aplikacija izpostavljena internetu, je izpostavljena zlonamernim napadom. Če je vaš strežnik ogrožen, morate v najboljšem primeru znova namestiti aplikacijo; v najslabšem primeru lahko izgubite podatke. Poleg tega se lahko znajdete v situaciji, ko boste morali preseliti bazo podatkov iz enega strežnika v drugega.

Za kaj se uporablja mysqldump?

Orodje mysqldump vam nudi pomoč pri ogrožanju strežnika in situacijah selitve. Njegova osnovna funkcija je, da vzame bazo podatkov MySQL in jo izpiše kot besedilno datoteko. Vendar ne katere koli besedilne datoteke; datoteka je niz stavkov SQL. Ti stavki, ko se izvedejo, rekonstruirajo bazo podatkov v točno stanje, v katerem je bila, ko je bil izveden izpis.

Uporabite mysqldump za ustvarjanje izvozov baze podatkov kot varnostne kopije ali pri premikanju baze podatkov na novega gostitelja. V obeh primerih bo besedilna datoteka uvožena nazaj v strežnik baze podatkov MySQL. Izvedel bo vse stavke SQL v datoteki, ki obnovi bazo podatkov v prvotno stanje. Ta del ne uporablja ukaza mysqldump, vendar tudi brez tega pripomočka ne bi bil mogoč.

Dokumenti MySQL navajajo druge metode za izdelavo varnostnih kopij, vendar imajo te pomanjkljivosti:

  • Hotkopiranje baze podatkov iz MySQL Enterprise je odličen način za izdelavo teh varnostnih kopij – če vas ne moti cena podjetja.
  • Kopiranje podatkovnih imenikov baze podatkov je lahko težavno pri premikanju med operacijskimi sistemi, saj bodo cilji različni.
  • Izvoz v datoteko z ločenim besedilom vam bo dal vsebino, vendar boste morali ponovno ustvariti strukturo.
  • Baze podatkov lahko pogosto varnostno kopirate iz programov GUI, kot je MySQL Workbench. Toda to je ročni postopek; ni nekaj, kar bi lahko skriptirali ali vključili v paketno opravilo.

Namestite orodje mysqldump

Za Windows preverite naša navodila za namestitev MySQL v Windows 7 (postopek namestitve je enak za Windows 10). V macOS si oglejte naša navodila za namestitev MySQL v macOS 10.7 (spet starejši, a še vedno veljaven). Uporabniki sistemov Linux, ki temeljijo na Ubuntuju, lahko za namestitev odjemalca MySQL in pripomočkov uporabijo naslednji ukaz:

sudo apt install mysql-client

Izvlecite izpis MySQL

Ko je nameščen, uporabite mysqldump za popolno varnostno kopijo baze podatkov.

mysqldump -h [ime gostitelja ali IP vašega DB] -u [ime uporabnika DB] -p [ime baze podatkov] > db_backup.sql

Tukaj je opis zastavic, uporabljenih v tem ukazu:

  • - h: Ta zastavica je gostitelj baze podatkov. Lahko je polno ime gostitelja (na primer myhost.domain.com) ali naslov IP. Če izvajate ukaz na istem gostitelju kot strežnik MySQL, pustite prazno.
  • - u: Vaše uporabniško ime.
  • - p: Če ste pravilno zavarovali namestitev MySQL, boste za povezavo potrebovali geslo. Ta zastavica brez argumenta vas pozove k vnosu gesla, ko izvedete ukaz. Včasih je koristno posredovati geslo neposredno kot argument tej zastavici, na primer v varnostnem skriptu. Vendar ob pozivu ne bi smeli, kajti če bi nekdo dobil dostop do vašega računalnika, bi lahko dobil to geslo v zgodovini ukazov.
  • > db_backup.sql: Ta del pove mysqldump-u, naj svoj izhod usmeri v datoteko. Običajno ukaz izpiše vse v konzolo, kar pomeni, da boste na zaslonu videli več stavkov SQL. Simbol > usmeri izhod v imenovano besedilno datoteko. Če ta datoteka ne obstaja, se ustvari samodejno.

Ko bo končano, boste imeli datoteko. SQL. To je besedilna datoteka, ki vsebuje stavke SQL. Odprete ga lahko v katerem koli urejevalniku besedil, da pregledate vsebino. Tukaj je izvoz iz baze podatkov WordPress, ki prikazuje, kako so te datoteke sestavljene.

Image
Image

Datoteka je razdeljena na odseke. Prvi razdelek nastavi tabelo za komentarje WordPress. Drugi razdelek poustvari vsebino v teh tabelah (v tem primeru zapise komentarjev). Ko znova uvozite izpis MySQL, ukaz deluje skozi datoteko, izvede stavke in znova zgradi bazo podatkov, kakršna je bila.

Uvoz datoteke izpisa MySQL

Preden uvozite datoteko izpisa, boste potrebovali že ustvarjeno zbirko podatkov ter njeno veljavno uporabniško ime in geslo. Imeti morate tudi vsa dovoljenja za bazo podatkov. Ne potrebujete dovoljenja GRANT, vendar jih je lažje podeliti vsem.

Preberite več o dovoljenjih baze podatkov, preden spremenite varnostne vloge v svoji bazi podatkov.

Za ponovni uvoz vaših podatkov se prijavite v strežnik MySQL z ukazom mysql. V poziv vnesite use [ime baze podatkov] in nadomestite ime baze podatkov. Vnesite source [ime datoteke] in nadomestite ime datoteke izpisa, ki ste jo prej posneli.

Ko končate, se prikaže seznam sporočil, ki opozarjajo, da se stavki SQL izvajajo. Bodite pozorni na napake, a če imate ustrezna dovoljenja, bi moralo biti vse v redu.

Image
Image

Ko je postopek končan, boste imeli dvojnik izvirne baze podatkov. Če želite preveriti podobnost med bazama podatkov, izvedite nov izpis in nato primerjajte oba izhoda. Za primerjavo obeh datotek uporabite urejevalnik besedil ali namensko orodje za razlikovanje.

Image
Image

Med tema datotekama sta dve razliki, ki ju predstavljata rdeči črti na vrhu in na dnu desnega drsnega traku. Prva je vrstica, ki vsebuje ime baze podatkov, in ta je drugačna, ker so bile datoteke poimenovane drugače. Drugi je časovni žig za datoteko izpisa. To je drugače, ker je bila druga baza podatkov ponovno ustvarjena po prvi. V nasprotnem primeru so datoteke popolnoma enake, kar pomeni, da so tudi baze podatkov, ki so jih ustvarile.

FAQ

    Kako popravite napako mysqldump: Dostop zavrnjen pri uporabi zaklenjenih tabel?

    Prosite skrbnika baze podatkov, da vam podeli privilegij ZAKLEPANJE. Če to ne odpravi težave, poskusite zagnati isti ukaz mysqldump in dodati zastavico - -single-transaction, na primer [ $ mysqldump --single-transaction] [-u uporabnik] [-p DBNAME] > backup.sql

    Ali lahko uporabite klavzulo "kje" z mysqldump?

    Uporabite stavek WHERE, ko ustvarjate varnostno kopijo, ki vključuje samo vrstice, ki izpolnjujejo dani pogoj. Na primer, če želite izpisovati podatke samo iz vrstic s stolpcem id, večjim od 100, vnesite "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Priporočena: