Šta je mysqldump i kako da ga koristim?

Sadržaj:

Šta je mysqldump i kako da ga koristim?
Šta je mysqldump i kako da ga koristim?
Anonim

Kao jedna od vodećih slobodno dostupnih baza podataka, MySQL je popularan izbor za mnoge web aplikacije. Budući da je izložena internetu, vaša aplikacija je izložena zlonamjernim napadima. Ako je vaš server kompromitovan, u najboljem slučaju, morate ponovo instalirati aplikaciju; u najgorem slučaju, možete izgubiti svoje podatke. Osim toga, možete doći u situaciju da trebate migrirati bazu podataka sa jednog servera na drugi.

Za šta se koristi mysqldump?

Alat mysqldump pokriva vas i za kompromitaciju servera i za situacije migracije. Njegova osnovna funkcija je da uzme MySQL bazu podataka i izbaci je kao tekstualnu datoteku. Ali ne bilo koji tekstualni fajl; datoteka je skup SQL izraza. Ove izjave, kada se izvrše, rekonstruiraju bazu podataka u precizno stanje u kojem je bila kada je dump izvršen.

Koristite mysqldump za kreiranje eksporta baze podataka kao rezervnih kopija ili prilikom premeštanja baze podataka na novi host. U oba slučaja, tekstualni fajl će biti ponovo uvezen u MySQL server baze podataka. Izvršit će sve SQL naredbe u datoteci, čime se baza podataka vraća u prvobitno stanje. Ovaj dio ne koristi naredbu mysqldump, ali ne bi bilo moguće ni bez ovog uslužnog programa.

MySQL dokumenti navode druge metode za pravljenje rezervnih kopija, ali ovi imaju nedostatke:

  • Hot kopiranje baze podataka iz MySQL Enterprise je odličan način za postizanje ovih sigurnosnih kopija - ako vam ne smeta cijena Enterprise.
  • Kopiranje direktorija podataka baze podataka može biti nezgodno kada se krećete preko operativnih sistema, jer će odredišta biti različita.
  • Izvoz u tekstualnu datoteku s razgraničenjima dat će vam sadržaj, ali ćete morati ponovo kreirati strukturu.
  • Često možete napraviti rezervnu kopiju baza podataka iz GUI programa kao što je MySQL Workbench. Ali ovo je ručni proces; nije nešto što možete skriptirati ili uključiti u grupni posao.

Instalirajte mysqldump alat

Za Windows, provjerite naša uputstva za instalaciju MySQL-a na Windows 7 (proces instalacije je isti za Windows 10). Na macOS-u pogledajte naša uputstva za instaliranje MySQL-a na macOS 10.7 (opet, stariji, ali još uvijek primjenjiv). Korisnici Linux sistema baziranih na Ubuntu mogu koristiti sljedeću naredbu za instaliranje MySQL klijenta i uslužnih programa:

sudo apt install mysql-client

Izvucite MySQL dump

Kada se instalira, koristite mysqldump da dobijete potpunu sigurnosnu kopiju baze podataka.

mysqldump -h [ime vašeg DB hosta ili IP] -u [ime korisnika DB-a] -p [ime baze podataka] > db_backup.sql

Evo opisa zastava korištenih u ovoj naredbi:

  • - h: Ova zastavica je host baze podataka. To može biti puno ime hosta (na primjer, myhost.domain.com) ili IP adresa. Ostavite ovo prazno ako izvodite naredbu na istom hostu kao i MySQL server.
  • - u: Vaše korisničko ime.
  • - p: Ako ste ispravno osigurali MySQL instalaciju, trebat će vam lozinka za povezivanje. Ova zastavica bez argumenta traži od vas lozinku kada izvršite naredbu. Ponekad je korisno navesti lozinku direktno kao argument za ovu zastavicu, na primjer, u skripti za sigurnosnu kopiju. Ali na upit, ne biste trebali, jer ako bi neko dobio pristup vašem računaru, mogao bi dobiti ovu lozinku u historiji komandi.
  • > db_backup.sql: Ovaj dio govori mysqldump-u da svoj izlaz usmjeri na datoteku. Normalno, naredba sve šalje na konzolu, što znači da ćete na ekranu vidjeti nekoliko SQL naredbi. Simbol > usmjerava izlaz u imenovanu tekstualnu datoteku. Ako ovaj fajl ne postoji, kreira se automatski.

Kada se završi, imat ćete. SQL datoteku. Ovo je tekstualna datoteka koja sadrži SQL izraze. Možete ga otvoriti u bilo kojem uređivaču teksta da pregledate sadržaj. Evo izvoza iz WordPress baze podataka koji pokazuje kako su ovi fajlovi sastavljeni.

Image
Image

Fajl je podeljen na sekcije. Prvi odjeljak postavlja tabelu za WordPress komentare. Drugi odeljak ponovo kreira sadržaj u tim tabelama (u ovom primeru, zapisi komentara). Kada ponovo uvezete MySQL dump, komanda radi kroz datoteku, izvršava naredbe i ponovo gradi bazu podataka onako kako je bila.

Uvezite MySQL Dump fajl

Prije nego što uvezete dump datoteku, trebat će vam već kreirana baza podataka i njeno važeće korisničko ime i lozinka. Također biste trebali imati sve dozvole za bazu podataka. Ne treba vam GRANT dozvola, ali je lakše dati im sve.

Saznajte više o dozvolama baze podataka prije nego promijenite sigurnosne uloge u vašoj bazi podataka.

Da ponovo uvezete svoje podatke, prijavite se na MySQL server pomoću naredbe mysql. Ukucajte use [naziv baze podataka] na upit i zamijenite ime baze podataka. Unesite source [filename], i zamijenite naziv dump fajla koji ste prethodno snimili.

Kada završite, pojavljuje se lista poruka s napomenom da se SQL naredbe izvršavaju. Pazite na greške, ali ako imate prava dopuštenja, trebali biste biti u redu.

Image
Image

Kada se proces završi, imat ćete duplikat originalne baze podataka. Da biste provjerili sličnost između baza podataka, izvedite još jedan dump, a zatim usporedite dva izlaza. Koristite uređivač teksta ili namjenski alat za razliku da uporedite dva fajla.

Image
Image

Postoje dvije razlike između ovih datoteka, koje su predstavljene crvenim linijama na vrhu i dnu desne trake za pomicanje. Prvi je red koji sadrži ime baze podataka, a ovo je drugačije jer su datoteke drugačije imenovane. Druga je vremenska oznaka za dump datoteku. Ovo je drugačije jer je druga baza podataka ponovo kreirana nakon prve. Inače, datoteke su potpuno iste, što znači da su i baze podataka koje su ih generirale.

FAQ

    Kako da popravite grešku mysqldump: Pristup odbijen kada koristite zaključane tabele?

    Zamolite administratora baze podataka da vam odobri privilegiju LOCK. Ako ovo ne riješi problem, pokušajte pokrenuti istu naredbu mysqldump dodavanjem oznake - -single-transaction, kao što je [ $ mysqldump --single-transaction] [-u korisnik] [-p DBNAME] > backup.sql

    Možete li koristiti klauzulu "gdje" sa mysqldump?

    Koristite klauzulu WHERE kada kreirate rezervnu kopiju koja uključuje samo redove koji ispunjavaju dati uslov. Na primjer, da izvučete podatke samo iz redova sa id stupcem većim od 100, unesite "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Preporučuje se: