publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
skomentuj »

TAGI: mysql , replikacja , backup , baza danych

2009-08-20 16:06  |  Tomasz Lisiewicz

Replikacja baz w MySQL: jak to zrobić?

Replikacja baz w MySQL: jak to zrobić?

Dzisiaj praktycznie każdy większy serwis internetowy (a często i niewielkie blogi) korzysta z baz danych. W sytuacji, gdy większość danych niezbędnych do działania witryny znajduje się w bazie, ważne się staje, aby regularnie tworzyć jej kopie bezpieczeństwa. Jednym z najlepszych sposobów na tworzenie backupu bazy jest jej replikacja, czyli takie zestawienie, w którym każda zmiana zawartości na głównym serwerze prowadzi do identycznej zmiany na serwerze zapasowym. Oczywiście nie chroni to nas przed błędami (ktoś np. zrobił DROP TABLE), ale może rozwiązać problem awarii sprzętowych.

Aby zestawić replikację dla MySQL-a, wykorzystamy dwa serwery, nieważne czy fizyczne, czy wirtualne (choć oczywiście użycie zdalnego fizycznego serwera to większe bezpieczeństwo, niż użycie wirtualnej maszyny na lokalnym serwerze). Od tej pory serwer główny będziemy nazywać Master, a serwer zapasowy – Slave. Na obu maszynach musi działać serwer mysqld, obie muszą się wzajemnie „widzieć” w sieci, do obu musimy mieć też prawo dostępu na poziomie roota.

Konfiguracja serwera Master

Aby skonfigurować mastera, otwieramy plik /etc/mysql/my.conf i szukamy tam linii:

#skip-networking
#bind-address = 127.0.0.1

Odkomentowujemy je, usuwając znak #. Następnie dodajemy do pliku konfiguracyjnego linie:

log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=moja_baza
server-id=1

Służą one do wybrania pliku z logiem, nazwy bazy którą będziemy replikować i ustawienia statusu tej właśnie bazy jako mastera.

Następnie restartujemy bazę (/etc/init.d/mysql restart) i łączymy się z jej konsolą administracyjną (mysql -u root -p). Tutaj będziemy musieli przyznać prawa do replikacji. Robimy to następującym poleceniem:

GRANT REPLICATION SLAVE ON *.* TO 'UZYTKOWNIK'@'%' IDENTIFIED BY 'HASLO';

Oczywiście 'uzytkownik' i 'haslo' to realny użytkownik z uprawnieniami do replikacji i jego hasło. Teraz wydajemy kolejno polecenia

FLUSH PRIVILEGES;
USE moja_baza;
FLUSH TABLES WITH READ LOCK;

i sprawdzamy czy wszystko jest w porządku poleceniem

SHOW MASTER STATUS;

Jeśli wszystko jest dobrze, powinniśmy otrzymać listing z mojej_bazy, wśród której znajdzie się dwie pozycje, na które musimy zwrócić uwagę – File name oraz Position. Ich wartości zapisujemy gdzieś pod ręką, przydadzą się później.

«poprzednia 1 2 następna »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
skomentuj »

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł