Android

Jak skonfigurować mysql master

How to Configure MySQL Database Replication with Master and Slave on CentOS

How to Configure MySQL Database Replication with Master and Slave on CentOS

Spisu treści:

Anonim

Replikacja MySQL to proces, który umożliwia automatyczne kopiowanie danych z jednego serwera bazy danych na jeden lub więcej serwerów.

MySQL obsługuje wiele topologii replikacji, przy czym topologia Master / Slave jest jedną z najbardziej znanych topologii, w których jeden serwer bazy danych działa jako master, podczas gdy jeden lub więcej serwerów działa jako slave. Domyślnie replikacja jest asynchroniczna, gdy master wysyła zdarzenia opisujące modyfikacje bazy danych do swojego dziennika binarnego, a urządzenia slave żądają zdarzeń, gdy są gotowe.

W tym samouczku wyjaśnimy, jak skonfigurować replikację Master / Slave MySQL z jednym serwerem master i jednym serwerem slave w CentOS 7. Te same kroki dotyczą MariaDB.

Ten typ topologii replikacji najlepiej nadaje się do wdrażania replik odczytu w celu skalowania odczytu, tworzenia kopii zapasowych baz danych na żywo w celu odzyskiwania po awarii i zadań analitycznych.

Wymagania wstępne

W tym przykładzie zakładamy, że masz dwa serwery z systemem CentOS 7, które mogą komunikować się ze sobą za pośrednictwem sieci prywatnej. Jeśli dostawca usług hostingowych nie udostępnia prywatnych adresów IP, możesz użyć publicznych adresów IP i skonfigurować zaporę ogniową tak, aby zezwalała na ruch na porcie 3306 tylko z zaufanych źródeł.

Serwery w tym przykładzie mają następujące adresy IP:

Master IP: 192.168.121.59 Slave IP: 192.168.121.14

Zainstaluj MySQL

Domyślne repozytoria CentOS 7 nie zawierają pakietów MySQL, dlatego MySQL zostanie zainstalowany z ich oficjalnego repozytorium Yum. Aby uniknąć problemów, zainstalujemy tę samą wersję MySQL 5.7 na obu serwerach.

Zainstaluj MySQL na serwerach Master i Slave:

sudo yum localinstall sudo yum install mysql-community-server

Po zakończeniu instalacji uruchom usługę MySQL i włącz automatyczne uruchamianie przy starcie:

sudo systemctl enable mysqld sudo systemctl start mysqld

Gdy serwer MySQL uruchamia się po raz pierwszy, dla użytkownika root MySQL generowane jest tymczasowe hasło. Aby znaleźć hasło, użyj następującego polecenia grep:

sudo grep 'temporary password' /var/log/mysqld.log

Uruchom komendę mysql_secure_installation aby ustawić nowe hasło roota i poprawić bezpieczeństwo instancji MySQL:

mysql_secure_installation

Wprowadź tymczasowe hasło roota i odpowiedz Y (tak) na wszystkie pytania.

Nowe hasło musi mieć co najmniej 8 znaków i zawierać co najmniej jedną wielką literę, jedną małą literę, jedną cyfrę i jeden znak specjalny.

Skonfiguruj serwer główny

Najpierw skonfigurujemy główny serwer MySQL i wprowadzimy następujące zmiany:

  • Ustaw serwer MySQL tak, aby nasłuchiwał na prywatnym IP. Ustaw unikalny identyfikator serwera. Włącz rejestrowanie binarne.

W tym celu otwórz plik konfiguracyjny MySQL i dodaj następujące wiersze w Sekcja:

sudo nano /etc/my.cnf master: /etc/my.cnf

bind-address = 192.168.121.59 server-id = 1 log_bin = mysql-bin

Po zakończeniu zrestartuj usługę MySQL, aby zmiany odniosły skutek

sudo systemctl restart mysqld

Następnym krokiem jest utworzenie nowego użytkownika replikacji. Zaloguj się do serwera MySQL jako użytkownik root:

mysql -uroot -p

Z poziomu wiersza MySQL uruchom następujące zapytania SQL, które utworzą użytkownika replica i REPLICATION SLAVE uprawnienie REPLICATION SLAVE :

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14'; Upewnij się, że zmieniłeś adres IP swoim niewolniczym adresem IP. Możesz nazwać użytkownika tak, jak chcesz.

Pozostając w wierszu polecenia MySQL, wykonaj następujące polecenie, aby wydrukować binarną nazwę pliku i pozycję.

SHOW MASTER STATUS\G

*************************** 1. row *************************** File: mysql-bin.000001 Position: 1427 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)

Zanotuj nazwę pliku „mysql-bin.000001” i pozycję „1427”. Będziesz potrzebował tych wartości podczas konfigurowania serwera podrzędnego. Te wartości prawdopodobnie będą różne na twoim serwerze.

Skonfiguruj serwer slave

Podobnie jak w przypadku powyższego serwera głównego, dokonamy następujących zmian w serwerze podrzędnym:

  • Ustaw serwer MySQL tak, aby nasłuchiwał na prywatnym IPS Ustaw unikalny serwer ID Włącz rejestrowanie binarne

Otwórz plik konfiguracyjny MySQL i edytuj następujące linie:

sudo nano /etc/my.cnf slave: /etc/my.cnf

bind-address = 192.168.121.14 server-id = 2 log_bin = mysql-bin

Uruchom ponownie usługę MySQL:

sudo systemctl restart mysqld

Następnym krokiem jest skonfigurowanie parametrów, które będą używane przez serwer podrzędny do łączenia się z serwerem głównym. Zaloguj się do powłoki MySQL:

mysql -uroot -p

Najpierw zatrzymaj wątki niewolników:

STOP SLAVE;

Uruchom następujące zapytanie, które skonfiguruje urządzenie podrzędne do replikacji urządzenia nadrzędnego:

CHANGE MASTER TO MASTER_HOST='192.168.121.59', MASTER_USER='replica', MASTER_PASSWORD='strong_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1427;

Upewnij się, że używasz prawidłowego adresu IP, nazwy użytkownika i hasła. Nazwa i pozycja pliku dziennika muszą być takie same, jak wartości uzyskane z serwera głównego.

Po zakończeniu rozpocznij wątki slave.

START SLAVE;

Przetestuj konfigurację

W tym momencie powinieneś mieć działającą konfigurację replikacji Master / Slave.

Aby sprawdzić, czy wszystko działa zgodnie z oczekiwaniami, utworzymy nową bazę danych na serwerze głównym:

mysql -uroot -p

CREATE DATABASE replicatest;

Zaloguj się do podrzędnej powłoki MySQL:

mysql -uroot -p

Uruchom następujące polecenie, aby wyświetlić listę wszystkich baz danych:

SHOW DATABASES;

Zauważysz, że baza danych utworzona na serwerze głównym jest replikowana na urządzeniu podrzędnym:

+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | replicatest | | sys | +--------------------+ 5 rows in set (0.00 sec)

Wniosek

W tym samouczku pokazaliśmy, że tworzysz replikację MySQL Master / Slave na CentOS 7.

Jeśli masz jakieś pytania, zostaw komentarz.

centos mysql mariadb