Bekap&Restore MySQL baze (ili baza) kroz komandnu liniju

Kad pričam o komandnoj liniji – pričam o komandoj liniji na Linuksu – kako je na Vindovsu ne znam niti me zanima ali kontam da je sintaksa ista.

Umesto „-p“ u komandama dole možete da ukucate samo „-pLOZINKA“ pa će se bekap ili povratak podataka (restore) raditi odmah – ali je preporučeno da idete ipak samo sa „-p“ kako lozinka za korisnika ne bi ostala u history-ju na Linuksu.

Bekap podataka je bezbedan – sem naravno ako bekapom ne pregazite neki drugi fajl (zato sam u svim primerima dole stavio da se bekap radi u folder /tmp) ali kad radite povratak podataka otvorite četvoro očiju a ako imate kurje otvorite i njih – jer ako imate funkcionalnu bazu podataka pa greškom uradite povratak iste možete napraviti junački karambol i ostati bez podataka.

Bekap baze podataka možete raditi kao root korisnik ili kao specifični korisnik koji ima privilegije nad datom mysql bazom i radi se radi komandom…

# Bekap samo jedne baze podataka koja se zove 'naziv_baze' mysqldump -u DB_KORISNIK -p naziv_baze > /tmp/BEKAP_naziv_baze.sql

Kad se radi povratak podataka (restore) baza će biti kreirana pod korisnikom koji je pokrenuo mysql (korisnik iza sviča -u) ako dati korisnik ima privilegije da kreira baze – a ako nema, napravite praznu bazu pa nad njom uradite povratak podataka. Kao i sa svakim povratak operacijama – oprezno!

# Oporavak podataka, odnosno import u bazu koja se zove 'naziv_baze2' mysql -u DB_KORISNIK -p naziv_baze2 < /tmp/BEKAP_naziv_baze.sql

Bekap nad više baza podataka se može raditi nad bazama koje korisnik vidi u svojoj šemi, odnosno nad bilo kojom bazom ako bekap pokreće root korisnik u mysql-u. Bekap više baza podataka od jednom se može uraditi komandom:

# Bekap dve baze 'naziv_baze1' i 'naziv_baze2' iz jednog poziva mysqldump -u DB_KORISNIK -p --databases naziv_baze1 naziv_baze2 > /tmp/BEKAP_baza1i2.sql

Bekap komplet svih baza podataka se može uraditi ako taj bekap pokreće root korisnik u mysql-u. Ako bekap pokreće specifični korisnik (kao što je u primeru korisnik DB_KORISNIK) napraviće se bekap svih baza nad kojim dati korisnik ima privilegije.

# Bekap svih baza nad kojima korisnik 'DB_KORISNIK' ima privilegije mysqldump -u DB_KORISNIK -p --all-databases > /tmp/BEKAP_svih_baza.sql # BBekap svih baza može da radi root korisnika mysqldump -u root -p --all-databases > /tmp/BEKAP_komplet_svih_baza.sql

Oporavak podataka samo jedne baze podataka iz bekapa gde ste bekapovali sve ili više baza podataka se radi sledećom komandom…

# Restore tj import samo jedne baze iz bekapa u kojem je bekap više baza mysql -u DB_KORISNIK -p --one-database naziv_baze1 < /tmp/BEKAP_svih_baza.sql # Ako ne znate koje sve baze imate u bekapu, to možete proveriti komandom grep -i "Current database:" BEKAP_svih_baza.sql