webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Kopia zapasowa w MySQL

autor: Piotr 'Redelek' Redel, ostatnia modyfikacja: 2007-06-06

szukaj: kopia zapasowa kopia zapasowa mysqldump mysqldump mysql mysql

Kopia bezpieczeństwa baz danych w dzisiejszych czasach to drugie zadanie dla administratorów i programistów. Jest to bardzo ważne, bo któż z nas chciałby stracić kilku godzinną lub kilkudniową pracę. W tym artykule pokażę jedno z podstawowych poleceń, które jest bardzo często wykorzystywane do robienia takich kopii zapasowych. Kopia może być całkowita lub częściowa, ale o tym w dalszej części artykułu. Polecenie występuje praktycznie od początku ukazania się serwera MySQL. Nie powiem dokładnie, od której wersji jest ono dostępne standardowo, ale na pewno jest to 3.X i wyżej. Polecenie nazywa się mysqldump.

Polecenie to, a raczej program, jest dostępny w każdej instalacji serwera MySQL czy to Windows czy Linux. W Windows możemy go znaleźć w katalogu serwera w podfolderze bin. W Linux po zainstalowaniu serwera od razu mamy dostęp do niego poprzez shell.

Opis polecenia i wybrane funkcje

musqldump:

Opisałem tu kilka opcji potrzebnych do prawidłowego wykonania kopi bezpieczeństwa serwera MySQL. Tych z Was, którzy chcą zgłębić tę wiedzę, zapraszam na stronę producenta lub do zapoznania się z pomocą polecenia mysqldump (Windows mysqldump.exe –-help, Linux man mysqldump).

Jak zauważyliście w nawiasach podałem dodatkowe opcje np. -p. Oznacza to że możemy stosować skróty zamiast wprowadzać pełne polecenia.

Tak jak obiecałem, zrobimy dwa małe skrypty, które można będzie dowolnie rozbudować i polepszać. Ich zadaniem będzie pokazanie jak w prosty sposób można tego dokonać i jak skrypty samodzielnie wykonają tę czynność za nas. Pokazane skrypty mają cel szkoleniowy i nie zostały zabezpieczone przed pomyłkami lub wprowadzeniem błędnych danych.

Skrypt dla Linux (kopia zapasowa bazy):

!#/bin/bash
datka=`date +%y%M%%d`
gdzie='/var/tmp'
u='uzytkowni' # tu oczywiście wpisujemy swojego użytkownika
pass='haslo' # tu wpisujemy swoje hasło
echo "Rozpoczynam wykonywanie kopi serwera MySQL"
mysqldump -u $u -databases > $gdzie/nazwa_bazy_$datka.sql -p $pass
echo "Kopia wykonana pomyślnie "

Jak można zobaczyć skrypt działa i wykonuje kopię bazy danych całego serwera MySQL i nie pyta się o hasło, ani inne ustawienia. Taki skrypt można dodać sobie do cron-a i z powodzeniem o wyznaczonych godzinach wykona nam się kopia zapasowa serwera. Oczywiście można go rozbudować i zmodernizować by usunąć podstawowe błędy, ale to zostawiam już czytelnikowi.

Skrypt dla Windows (kopia zapasowa bazy):

@ECHO OFF
SET dir=C:\
SET u=uzytkowni
SET p=haslo
SET dt=%date:~0,13%
ECHO ## Zgrywanie bazy ##
ECHO.
ECHO Dzialam ... :-)
ECHO.
X: 
cd Program Files\MySQL\Bin
mysqldump.exe -u%u% --all-databases > %dir%%dt%.sql -p%p%
ECHO ## Wykonalem kopie ##
:END

Dzięki tym prosty skryptom będziemy mieli pełną kopię bazy danych i będziemy mogli spać spokojnie :). Jeśli chodzi o przywracanie bazy z pliku do serwera MySQL robi się to tak:

Linux = mysql -u uzytkownik baza1 < baza1_kopia.sql -p
Windows = mysql -u uzytkownik baza1 < baza1_kopia.sql -p

Proszę PAMIĘTAJCIE, dane w skryptach dotyczące katalogów, użytkowników, haseł, oraz nazw bazy danych są przykładowe. Nie będą one działać na waszych serwerach!! Dodatkowymi narzędziami służącymi do robienia kopii zapasowych są np. PhpMyAdmin, MySQL Administrator, MySQL Front i wiele wiele innych.

Źródła:

Powodzenia!!!

Piotr 'Redelek' Redel

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org