Crearea de copii de siguranta
In procesul de administrare a unei baze de date o deosebita importanta o prezinta salvarea si restaurarea datelor. Cea mai populara modalitate pentru realizarea unei copii de siguranta a unei baze de date (database backup), in MySQL, o constituie utilitarul mysqldump.
Utilitarul mysqldump poate fi utilizat pentru a descarca o baza de date sau o colectie de baze de date, pentru salvarea sau transferul acestora pe un alt server de baze de date. In cadrul acestui proces se utilizeaza comenzi SQL pentru crearea tabelelor si/sau popularea lor cu date.
Apelul utilitarului mysqldump se poate realiza prin intermediul urmatoarei comezi:
$ mysqldump [options] > file.sql
Utilitarul mysqldump accepta o serie de argumente/optiuni prin intermediul carora pot fi specificate, atat datele de conectare la serverul de baze de date pe care sunt stocate colectiile de date care urmeaza a fi descarcate, cat si modul in care sunt salvate datele corespunzatoare acestora. In tabelul de mai jos sunt evidentiate o serie de astfel de optiuni, precum si semnificatia acestora.
Optiune | Semnificatie |
---|---|
–databases | creeaza copii de siguranta pentru bazele de date precizate explicit |
–all-databases | creeaza copii de siguranta pentru toate bazele de date |
–host | hostname sau adresa IP server |
–user | nume utilizator conectare server |
–password | parola utilizator conectare server |
–no-data | continutul tabelelor nu va fi descarcat |
–comment | adauga comentarii in fisierul generat |
–add-drop-database | adauga DROP DATABASE inaintea comenzii CREATE DATABASE |
–add-drop-table | adauga DROP TABLE inaintea comenzii CREATE TABLE |
–add-locks | adauga LOCK TABLES si UNLOCK TABLES pentru fiecare tabel |
–xml | rezultatul va fi generat folosind cod XML |
Pentru stabilirea conexiunii la serverul de baze de date, comanda de apelare a utilitarului mysqldump cuprinde in general optiunile –host, –user, –password sau formele scurte ale acestor trei optiuni: -h, -u, -p.
$ mysqldump --host hostname --user user --password database > file.sql
$ mysqldump -h hostname -u user -p database > file.sql
Crearea unei copii de siguranta pentru baza de date sakila, stocata pe serverul de baza de date virtualcampus.ro, prin intermediul utilizatorului airman se realizeaza astfel:
$ mysqldump -h virtualcampus.ro -u airman -p sakila > sakila.sql
Dupa finalizarea procesului de backup, la nivelul directorului curent poate fi identificat fisierul corespunzator copiei de siguranta (sakila.sql).
$ ls -lh
total 3.3M -rw-r--r-- 1 airman airman 3.3M Jan 23 20:57 sakila.sql
Prezenta argumentului –databases in comanda de apelare a utilitarului mysqldump permite introducerea unei liste de baze de date pentru care se doreste realizarea de copii de siguranta.
$ mysqldump --databases sakila world -h virtualcampus.ro -u airman-p > databases.sql
Cea de-a treia modalitatea de apelare a utilitarului mysqldump permite salvarea tuturor bazelor de date de pe un server intr-un fisier text.
$ mysqldump --all-databases -h virtualcampus.ro -u airman -p > all-databases.sql
Restaurarea unei baze de date
Restaurarea unei baze de date, folosind un fisier care contine o copie de siguranta a bazei de date, poate fi realizata prin specificarea fisierului sursa in apelarea utilitarului linie de comanda.
$ mysql -h virtualcampus.ro -u airman -p sakila < sakila.sql
Trebuie avut in vedere faptul ca inaintea apelarii utilitarului linie de comanda (exemplul precedent) este necesara crearea bazei de date care urmeaza a fi restaurata din sursa prezenta in fisierul text (sakila.sql).
O alta modalitate de restaurare a bazei de date o constituie rularea fisierului sursa prin intermediul comenzii SOURCE. Comanda SOURCE poate fi rulata pe serverul de baze de date, daca in prealabil a fost realizata conectarea la server.
$ mysql -h virtualcampus.ro -u airman -p
mysql> CREATE DATABASE IF NOT EXISTS sakila; Query OK, 1 row affected (0.08 sec) mysql> USE sakila; Database changed mysql> SOURCE sakila.sql; Query OK, 0 rows affected (0.00 sec) ... mysql> SHOW TABLES; +----------------------------+ | Tables_in_sakila | +----------------------------+ | actor | | actor_info | | address | | category | | city | | country | | customer | | customer_list | | film | | film_actor | | film_category | | film_list | | film_text | | inventory | | language | | nicer_but_slower_film_list | | payment | | rental | | sales_by_film_category | | sales_by_store | | staff | | staff_list | | store | +----------------------------+ 23 rows in set (0.19 sec)