Wyszukiwanie w witrynie

Jak skonfigurować replikację Master-Slave MySQL w systemie Ubuntu 18.04


Replikacja MySQL master-slave to procedura umożliwiająca replikację lub kopiowanie plików bazy danych pomiędzy jednym lub większą liczbą węzłów w sieci. Taka konfiguracja zapewnia redundancję i odporność na awarie, dzięki czemu w przypadku awarii w węźle głównym bazy danych można nadal odzyskać w węźle podrzędnym. Daje to użytkownikom pewność, że w żadnej sytuacji nic nie zostanie utracone, ponieważ replikę baz danych można nadal pobrać z innego serwera.

W tym przewodniku dowiesz się, jak przeprowadzić replikację bazy danych MySQL Master-slave w systemie Ubuntu 18.04.

Warunki wstępne

Podczas konfiguracji będziemy mieć dwa serwery z systemem Ubuntu 18.04 z następującymi adresami IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Przyjrzyjmy się teraz bliżej i zobaczmy, jak możemy skonfigurować konfigurację replikacji master-slave w Ubuntu.

Krok 1: Zainstaluj MySQL na węzłach głównych i podrzędnych

Repozytoria Ubuntu zawierają wersję 5.7 MySQL. Aby skorzystać z nowych funkcji i uniknąć potencjalnych problemów, należy zainstalować najnowszą wersję MySQL. Ale najpierw zaktualizujmy dwa węzły za pomocą następującego polecenia apt.

sudo apt update

Aby zainstalować MySQL na obu węzłach, wykonaj polecenie.

sudo apt install mysql-server mysql-client

Następnie otwórz plik konfiguracyjny mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

W węźle głównym przewiń i znajdź atrybut bind-address, jak pokazano poniżej.

bind-address 	 =127.0.0.1

Zmień adres pętli zwrotnej, aby odpowiadał adresowi IP węzła głównego.

bind-address  	=10.128.0.28

Następnie określ wartość atrybutu server-id w sekcji [mysqld]. Wybrany numer nie powinien odpowiadać żadnemu innemu numerowi identyfikacyjnemu serwera. Przypiszmy wartość 1.

server-id	 =1

Na samym końcu pliku konfiguracyjnego skopiuj i wklej poniższe linie.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Wyjdź z pliku konfiguracyjnego i zrestartuj usługę MySQL, aby zmiany odniosły skutek w węźle głównym.

sudo systemctl restart mysql

Aby sprawdzić, czy serwer MySQL działa zgodnie z oczekiwaniami, wydaj polecenie.

sudo systemctl status mysql

Doskonały! Serwer MySQL działa zgodnie z oczekiwaniami!

Krok 2: Utwórz nowego użytkownika do replikacji w węźle głównym

W tej sekcji utworzymy użytkownika replikacji w węźle głównym. Aby to osiągnąć, zaloguj się do serwera MySQL, jak pokazano.

sudo mysql -u root -p

Następnie wykonaj poniższe zapytania, aby utworzyć użytkownika repliki i przyznać dostęp do urządzenia podrzędnego replikacji. Pamiętaj, aby użyć swojego adresu IP.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Następnie uruchom następujące polecenie.

mysql> SHOW MASTER STATUS\G

Wynik powinien być podobny do tego, co widać poniżej.

Bądź czujny i zanotuj wartość mysql-bin.000002 oraz identyfikator pozycji 1643. Wartości te będą kluczowe podczas konfigurowania serwera podrzędnego.

Krok 3: Skonfiguruj serwer podrzędny MySQL

Przejdź do serwera podrzędnego i tak jak to zrobiliśmy w przypadku serwera głównego, otwórz plik konfiguracyjny MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Podobnie jak w przypadku serwera głównego, edytuj następujące wiersze.

bind-address           = 10.128.0.29

Tak jak poprzednio, określ wartość atrybutu server-id w sekcji [mysqld]. Tym razem wybierz inną wartość. Przejdźmy do 2.

server-id		=2 

Ponownie wklej poniższe linie na samym końcu pliku konfiguracyjnego.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Następnie zrestartuj serwer MySQL w węźle podrzędnym.

sudo systemctl restart mysql

Po zakończeniu zapisz i wyjdź z edytora tekstu

Następnie zaloguj się do powłoki MySQL, jak pokazano.

sudo mysql -u root -p

Na tym etapie będziesz musiał dokonać konfiguracji, która umożliwi serwerowi podrzędnemu połączenie się z serwerem głównym. Ale najpierw zatrzymaj wątki podrzędne, jak pokazano.

mysql> STOP SLAVE; 

Aby umożliwić serwerowi podrzędnemu replikację serwera głównego, uruchom polecenie.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Jeśli jesteś wystarczająco bystry, zauważysz, że użyliśmy wartości mysql-bin.00002 i identyfikatora pozycji 1643 wcześniej wyświetlonych po utworzeniu użytkownika replikacji podrzędnej.

Dodatkowo wykorzystano adres IP serwera Master, użytkownika replikacji oraz hasło.

Później rozpocznij wątek, który wcześniej zatrzymałeś.

mysql> START SLAVE;

Krok 4: Sprawdź replikację master-slave MySQL

Aby sprawdzić, czy konfiguracja rzeczywiście działa zgodnie z oczekiwaniami, utworzymy nową bazę danych na serwerze głównym i sprawdzimy, czy została zreplikowana na serwerze MySQL Slave.

Zaloguj się do MySQL na serwerze głównym.

sudo mysql -u root -p

Stwórzmy testową bazę danych. W tym przypadku utworzymy bazę danych o nazwie replication_db.

mysql> CREATE DATABASE replication_db;

Teraz zaloguj się do swojej instancji MySQL na serwerze podrzędnym.

sudo mysql -u root -p

Teraz wylistuj bazy danych za pomocą zapytania.

mysql> SHOW DATABASES;

Zauważysz, że baza danych, którą utworzyłeś na master, została zreplikowana na slave. Wspaniały ! Twoja replikacja MySQL Master-Slave działa zgodnie z oczekiwaniami! Możesz teraz mieć pewność, że w przypadku jakiejkolwiek awarii kopie plików bazy danych zostaną zreplikowane na serwer podrzędny.

Wniosek

W tym przewodniku dowiesz się, jak skonfigurować replikację MySQL Master-slave w Ubuntu 18.04.