MySQL Replikacja typu master-slave to procedura, która umożliwia replikację lub kopiowanie plików bazy danych w jednym lub większej liczbie węzłów w sieci. Ta konfiguracja zapewnia nadmiarowość i odporność na awarie, dzięki czemu w przypadku awarii węzła głównego , bazy danych można nadal odzyskać w węźle Slave . Daje to użytkownikom pewność, że w żadnym wypadku nie wszystko zostanie utracone, ponieważ replika baz danych nadal może być pobrana z innego serwera.
W tym przewodniku dowiesz się, jak wykonać MySQL baza danych Master-slave replikacja na Ubuntu 18.04 system.
Wymagania wstępne
W 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
Zanurzmy się teraz i zobaczmy, jak możemy skonfigurować Master-slave konfiguracja replikacji na Ubuntu .
Krok 1:Zainstaluj MySQL na węzłach Master i Slave
Ubuntu repozytoria 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 mysql plik konfiguracyjny.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
W węźle głównym , przewiń i znajdź bind-address
atrybut, jak pokazano poniżej.
bind-address =127.0.0.1
Zmień adres pętli zwrotnej, aby pasował do adresu IP węzła głównego .
bind-address =10.128.0.28


Następnie określ wartość dla server-id
atrybut w [mysqld]
Sekcja. Wybrany numer nie powinien odpowiadać żadnemu innemu numerowi identyfikatora 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 uruchom ponownie 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


Idealny! 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 kontynuuj i 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, który widać poniżej.


Bądź czujny i zwróć uwagę na mysql-bin.000002
wartość i identyfikator pozycji 1643
. Te wartości będą kluczowe podczas konfigurowania serwera podrzędnego .
Krok 3:Skonfiguruj serwer MySQL Slave
Udaj się na serwer podrzędny i tak jak zrobiliśmy to z serwerem głównym , otwórz plik konfiguracyjny MySQL.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Podobnie jak serwer główny , przejdź do edycji następujących wierszy.
bind-address = 10.128.0.29


Tak jak poprzednio, określ wartość dla server-id
atrybut w [mysqld]
Sekcja. Tym razem wybierz inną wartość. Chodźmy z 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 uruchom ponownie serwer MySQL na 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
W tym kroku będziesz musiał dokonać konfiguracji, która pozwoli serwerowi podrzędnemu połączyć się z serwerem głównym . Ale najpierw zatrzymaj wątki podrzędne, jak pokazano.
mysql> STOP SLAVE;
Aby zezwolić serwerowi podrzędnemu do replikowania serwera głównego , uruchom polecenie.
mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;


Jeśli jesteś wystarczająco chętny, zauważysz, że użyliśmy mysql-bin.00002
ID wartości i pozycji 1643
wcześniej wyświetlane po utworzeniu użytkownika replikacji podrzędnej.
Dodatkowo użyto adresu IP serwera głównego, użytkownika replikacji i hasła.
Później uruchom wątek, który wcześniej przerwałeś.
mysql> START SLAVE;
Krok 4:Sprawdź replikację MySQL Master-Slave
Aby sprawdzić, czy konfiguracja rzeczywiście działa zgodnie z oczekiwaniami, utworzymy nową bazę danych na urządzeniu 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 takim 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 wypisz bazy danych za pomocą zapytania.
mysql> SHOW DATABASES;


Zauważysz bazę danych, którą utworzyłeś na master został zreplikowany na slave . Niesamowite ! 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
Z tego przewodnika dowiedziałeś się, jak skonfigurować MySQL Master-slave konfiguracja replikacji na Ubuntu 18.04 .