Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
You are here: Home / Uputstva / Opšte / Backup i Restore MySQL baze

Backup i Restore MySQL baze

by milobit last modified Apr 17, 2011 07:45 PM
Kratko upustvo kako bekapovati bazu podataka i ponovo je vratiti.

 

Ako radite sa MySQL bazama podataka i imate podatke koje ne želite izgubiti, veoma je važno da redovno pravite sigurnosne kopije vaših podataka (backup) kako bi se zaštitili od gubitka podataka. Ovaj tutorial će vam pokazati dva jednostavna načina za backup i vraćanje podataka u MySQL bazu podataka. Takođe možete koristiti ovaj postupak kako bi premestiti svoje podatke na novi web server.

  • Backup iz komandne linije (koristeći mysqldump)
  • Backup MySQL baza podataka sa kompresijom
  • Vraćanje MySQL baze podataka
  • Backup i vraćanje podataka (restore) pomoću phpMyAdmin

 

Backup iz komandne linije (koristeći mysqldump)

Ako imate ssh pristup svom web serveru, sigurnosnu kopiju svojih podataka možete uraditi pomoću mysqldump naredbe. Ova naredba spaja se na MySQL server i kreira SQL dump fajl. Datoteke s izvatkom sadrži SQL izjave potrebno ponovo stvoriti bazu podataka. Ovdje je pravi sintaksu

$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
  • [uname] korisničko ime koje se koristi za bazu podataka
  • [pass] lozinka za bazu podataka ( VAŽNO --> nema razmaka između -p i lozinke)
  • [dbname] ime baze podataka
  • [backupfile.sql] ime fajla u kome će biti sigurnosna kopija baze podataka
  • [--opt] mysqldump opcije

 

Ovo je primer kako napraviti backup baze po imenu 'Upustva' sa korisničkim imenom 'root' i lozinkom 'pass'. Naziv sigurnosne kopije će se zvati upustva_backup.sql. Da bi se napravila rezerna kopija baze podataka u  upustva_backup.sql potrebno je izvršiti sledeću komandu:

$ mysqldump -u root -ppass Upustva > uputsva_backup.sql

Ova naredba će napraviti  sigurnosnu kopiju "Upustva" baze podataka u datoteku pod nazivom upustva_backup.sql koja će u sebi imati  sve SQL informacije potrebne za ponovno stvaranje baze podataka.

Sa mysqldump naredbom možete napraviti rezerne kopije samo pojedinim tabela baze podataka koje želite sačuvate a da pri tome ne morate da sačuvate kompletnu bazu podataka. Na primer, za backup tabela bash_upustva i python_upustva iz baze 'Upustva' potrebna je sledeća komanda. Svaka tabela mora biti odvojena razmakom.

$ mysqldump -u root-ppass Upustva bash_upustva python_upustva > bash_python_tabele_upustva.sql

Ponekad je potrebno da se više bekapuje više baza podataka odjednom. U tom slučaju možete koristiti --database opciju posle koje slede imena baza podataka odvojena praznim mestom.

$ mysqldump -u root -ppass --database Upustva Članci Vesti > _backup.sql

Ako želite napraviti sigurnosnu kopiju svih baza podataka na serveru to možete učiniti koristeći u jednom trenutku trebate koristiti --all-databases opciju. Ovim će sve MySQL baza podataka bite smestene u sigurnosnu kopiju.

 $ mysqldump -u root -ppass  --all-databases > kompletan_backup_mysql_web_servera.sql

Mysqldump naredba ima i neke druge korisne opcije:

  • --add-drop-table: dodaje DROP TABLE prije svakog CREATE TABLE u sigurnosnu kopiju.
  • --no-data: kopira  samo strukturu baze podataka, a ne i njen sadržaj.
  • --add-locks: Dodaje LOCK TABLE i UNLOCK TABLE izjave koje se mogu vidjeti u sigurnosnoj kopiji.

Mysqldump naredba ima svoje prednosti i nedostatke. Prednosti korištenja mysqldump naredbe su da je jednostavna za korištenje i rešava pitanje zaključavanja umesto vas. Nedostatak je da ova komanda  zaključava tabele. Ako imate velike tabele mysqldump komanda može da zaključa korisnika na duže vreme.


Backup MySQL baza podataka sa kompresijom

Ako je MySQL baza podataka jako velika, a možda želite da je  komprimirate  odmah po završetku mysqldump naredbe, dovoljno je koristiti mysql backup naredbu i na nju pomoću cevovoda (pipe) dodati gzip naredbu. Ovim onda dobijate komprimiranu reyernu kopiju kao gzip datoteku.
$ mysqldump -u [uname] -p[pass] [DBNAME] | gzip -9 > backup.sql.gz

Ako želite optakovati komprimiranu rezernu kopiju to možete uraditi sledećom naredbom:

$ gunzip backup.sql.gz

 

Vraćanje MySQL baze podataka

Pošto smo uspešno naučili kako da napravimo sigurnosnu kopiju baze koju koristimo, vreme je da iz gore navedenih primera vidimo kako i da vratimo sigurnosnu kopiju (restore). Da bi smo ponovo vratili bazu Upustva, potreban su dva koraka:

  • Kreirati novu bazu sa prikladnim imenom na ciljnom računaru
  • Vratiti backup datoteku koristeći mysql naredbu:
$ mysql -u [uname] -p[pass] [db_name_to_restore] < [backupfile.sql]

Da vidimo kako ćemo da vratimo bazu upustva_backup.sql:

Prvo ćemo da kreiramo bazu Upustva na ciljnom računaru sledećom naredbom:

$ mysqladmin create Upustva -p

Kada smo uspešno napravili novu bazu, sada treba da vratimo i kompletan sadržaj. To ćemo učiniti sledećom naredbom:

$ mysql -u root -ppass Upustva  < upustva_backup.sql

Vraćanje komprimirane sigurnosne kopije možemo uraditi sledećom naredbom:

$ gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [DBNAME]

Ako je potrebno vratiti  podatke u već postojeću bazu podataka, moramo koristiti mysqlimport naredbu. Sintaksa za mysqlimport je:

 $ mysqlimport -u [uname] -p[pass] [DBNAME] [backupfile.sql]

 

Backup i vraćanje podataka (restore) pomoću phpMyAdmin

treba još da se napiše...


Document Actions