MySQL Replikacja na systemie Windows

From Training Material
Revision as of 18:17, 24 November 2014 by Cesar Chew (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
title
MySQL Replikacja na systemie Windows
author
Leszek Albrzykowski (NobleProg Ltd)

Konfiguracja instancji Master ⌘

Wstęp ⌘

MySQL dyrektywy konfiguracyjne przechowuje w plikach o rozszerzeniu *.cnf lub *.ini. Pliki te znajdują się zazwyczaj w folderach instalacji bazy danych. Na potrzeby nieniejszego opisu przyjmujemy, że ścieżką instalacji MySQL jest: C:\Program Files\MySQL\MySQL Server 5.5. W zależności od potrzeby, replikacji możemy dokonać na istniejących bazach (folder data) lub nowo tworzonych. Przyklad opisuje konfigurację nowej instancji na podstawie istniejących już baz.

Kopiowanie folderów z bazami danych ⌘

Foldery i nazewnictwo w tym akapicie są przykładowe i mogą być dowolnie modyfikowane! Tworzymy nowy folder dla replikowanej bazy: C:\Replication\data\ a następnie do niego kopiujemy zawartość z folderu data instalacji MySQL.

Dyrektywy pliku *.cnf (lub *.ini) ⌘

W folderze Replication, tworzymy plik konfiguracyjny my.cnf z poniższymi dyrektywami:

[mysqld]
#Ścieżka do folderu instalacji MySQL
basedir = "C:\Program Files\MySQL\MySQL Server 5.5"
#Ścieżka do folderu z plikami baz danych
datadir = "C:\Replication\data"
#Port MySQL
port = 3307

#Nazwa pliku loga binarnego, który zostanie utworzony
log-bin = "MASTER-BIN"
#Format loga, więcej na ten temat w materiałach szkoleniowych
binlog_format = mixed
#Maksymalna wielkość pliku loga binarnego
max_binlog_size = 50M
#ID instancji
server-id = 1

Jeśli instancje Slave i Master działają na jednym hoście, porty mogą służyć do ich rozróżnienia – Slave może działć na porcie 3308!

Uruchomienie instancji ⌘

W zależności od potrzeb, jako proces w konsoli lub jako serwis uruchamiamy program mysqld.exe, znajdujący się w folderze C:\Program Files\MySQL\MySQL Server 5.5\bin z opcją defaults-file dzięki czemu jesteśmy w stanie uruchomić instancję z konfiguracją określoną samemu w poprzednim paragrafie: mysqld --defaults-file=C:\Replication\my.cnf

Tworzenie użytkownika MySQL na potrzeby replikacji ⌘

Po połączeniu się do działającej instancji Master, należy wykonać kwerendę;

 CREATE USER 'replication_user'@'%' IDENTIFIED BY '123456';
 GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY '123456';

Testowanie i odczyt informacji o instancji Master ⌘

W celu przetestowania instancji oraz uzyskaniu informacji, które potrzebne będą w konfiguracji instancji Slave, wykonujemy kwerendę:

 SHOW MASTER STATUS;

Której efekt może być przykładowo taki jak poniżej:

mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| MASTER-BIN.000002 |      107 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

W przypadku wystąpienia jakiegokolwiek błędu, należy zapoznać się z plikiem loga błędów który może znajdować się w ścieżce z plikami bazy danych np: C:\Replication\data\<Nazwa_pliku>.err!

Konfiguracja instancji Slave ⌘

Dyrektywy pliku *.cnf (lub *.ini) ⌘

Podobnie jak w przypadku instancji Master, musimy utworzyć folder dla replikowanych baz danych oraz utworzyć własny plik konfiguracyjny (analogicznie my-slave.cnf):

[mysqld]
datadir = "C:\Replication\data-slave"
#START - Dla wersji starszych niż 5.5
master-host = localhost
master-user =  replication_user
master-password = 123456
#STOP
port = 3308
server-id=2
Przykład pokazuje konfigurację obydwu instancji na jednym hoście. Z tego też powodu instancję rozróżnione są portem na jakim zostają uruchomione!

Uruchomienie instancji ⌘

Instancje Slave uruchamiamy analogicznie do instancji Master: mysqld --defaults-file=C:\Replication\my-slave.cnf

Konfiguracja użytkownika ⌘

Należy skonfigurować użytkownika, który będzie łączył się do instancji Master. W tym celu wykonujemy kwerendę:

CHANGE MASTER TO MASTER_HOST='localhost',
MASTER_PORT = 3308,
MASTER_USER='replication_user',
MASTER_PASSWORD='123456';

Uruchomienie lub zatrzymanie instancji master odbywa się za pomoca następujących kwerend:

SLAVE START;

lub

SLAVE STOP;

Na koniec, należy podać informację o logu binarnym. Informacje te otrzymaliśmy wcześniej po wykonaniu kwerendy:

SHOW MASTER STATUS;

na instancji Master. Na podstawie tych informacji konfigurujemy instancję Slave podając nazwę loga binarnego i pozycji od jakiej chcemy rozpocząć replikację:

CHANGE MASTER TO
MASTER_LOG_FILE='MASTER-BIN.000002',
MASTER_LOG_POS=107;

Testowanie i odczyt informacji o instancji Slave ⌘

W celu przetestowania instancji oraz uzyskaniu informacji, które potrzebne będą w konfiguracji instancji Slave, wykonujemy kwerendę:

SHOW SLAVE STATUS;

Testowanie ⌘

Aby przetestować działanie skonfigurowanej replikacji wystarczy dodać do dowolnej tabeli na instancji Master rekord i sprawdzić czy analogicznie pojawił się na instancji Slave.