Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Piotr 'Redelek' Redel, ostatnia modyfikacja: 2007-06-06
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.
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.
!#/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.
@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.
Powodzenia!!!
Piotr 'Redelek' Redel
szukaj: kopia zapasowa mysqldump mysql
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org