Backup i Restore MySQL baze
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.
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.
$ 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
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]
Document Actions