Kako napraviti bekap i vratiti MySQL bazu podataka
Ako čuvate podatke u MySQL bazi i želite da ih ne izgubite, potrebno je redovno praviti bekap. Ovaj vodič će vas naučiti kako brzo iz komandne linije praviti bekap i vraćati bazu, kao i kako preneti podatke na drugi server.
- Kako napraviti bekap pomoću komandne linije (mysqldump)
- Kako napraviti bekap MySQL baze sa kompresijom
- Kako vratiti MySQL bazu iz bekapa
- Bekap i vraćanje pomoću Adminera
Kako napraviti bekap pomoću komandne linije (mysqldump)
Ako imate pristup serveru preko konzole (SSH), možete brzo praviti bekape i vraćati ih. Ovaj metod omogućava kreiranje dump fajla baze (dump je tekstualni zapis baze) i njegovo brzo vraćanje, brže nego preko phpMyAdmin, Adminer i slično. Dump sadrži SQL komande za kreiranje kopije baze. Komanda za kreiranje dump-a je:
$ mysqldump --opt -u [korisnik] -p[lozinka] [ime_baze] > [backupfile.sql]
[korisnik] - korisničko ime baze (npr. root)
[lozinka] - lozinka, može se napisati spojeno bez razmaka ako nema specijalnih znakova, npr. -proot, -ppassword
[ime_baze] - ime baze
[backupfile.sql] - ime fajla gde će biti sačuvan bekap
[--opt] - opcije za mysqldump, može se izostaviti
Primer: baza DrupalDB, korisnik root sa lozinkom password, fajl backup.sql
$ mysqldump -u root -ppassword DrupalDB > backup.sql
Ako lozinka sadrži razmake ili specijalne znakove, ili želite da unesete lozinku zasebno, koristite:
$ mysqldump -u root -p DrupalDB > backup.sql
Možete praviti bekap pojedinačnih tabela tako što ih navedete:
$ mysqldump -u root -p DrupalDB tabela1 tabela2 > backup.sql
Možete praviti bekap više baza istovremeno pomoću opcije --databases:
$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql
Ako želite da napravite bekap cele MySQL instalacije, koristite --all-databases:
$ mysqldump -u root -p --all-databases > alldb_backup.sql
Korisne opcije mysqldump komande:
- --add-drop-table - dodaje DROP TABLE pre CREATE TABLE u dump-u, što omogućava brisanje tabela pre vraćanja;
- --no-data - pravi dump samo strukture baze, bez podataka (korisno za keš tabele koje su velike i nepotrebne za bekap);
- --add-lock - dodaje LOCK TABLES i UNLOCK TABLES tokom bekapa, može blokirati tabele ako je baza velika.
Kako napraviti bekap MySQL baze sa kompresijom
Najbolja opcija za velike baze jer se fajl smanji i do 10-20 puta. Koristimo gzip:
$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz
Da samo raspakujete arhivu, bez vraćanja baze:
$ gunzip backup.sql.gz
Kako vratiti MySQL bazu iz bekapa
Za vraćanje baze vam je potrebna prazna baza (tabele možete obrisati putem Adminer-a ili phpMyAdmin-a). Ako ste koristili opciju --add-drop-table, tabele će biti obrisane automatski prilikom vraćanja, pa prethodno brisanje nije potrebno.
Komanda za vraćanje baze iz dump fajla:
$ mysql -u root -p DrupalDB < backup.sql
Ako je bekap sažet gzip-om, koristite:
gunzip < backup.sql.gz | mysql -u root -p DrupalDB
Bekap i vraćanje pomoću Adminera (zamena za phpMyAdmin)
Adminer je zamena za phpMyAdmin, sa istim funkcijama, ali u jednom malom fajlu, što je praktično:
Kopirajte fajl u root direktorijum sajta i pristupite mu preko browsera:
http://ime-vaseg-sajta/adminer-4.2.1.php (možete preimenovati u adminer.php za lakši pristup)
Prijavite se i uđite u željenu bazu, npr. Drupal7.
Kliknite na Eksport (Dump) da izvezete podatke. Možete izostaviti keš podatke ako nisu potrebni:
Za vraćanje dump fajla koristite karticu Import: