MySQL Replikacja na systemie Windows
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.