Replikacja danych to proces kopiowania danych na wiele serwerów w celu poprawy dostępności danych oraz zwiększenia niezawodności i wydajności aplikacji. W MySQL replikacja, dane są kopiowane z bazy danych z serwera głównego do innych węzłów w czasie rzeczywistym, aby zapewnić spójność danych, a także zapewnić kopie zapasowe i nadmiarowość.
W tym przewodniku pokazujemy, jak skonfigurować MySQL (Master-Slave ) replikacja w dystrybucjach opartych na RHEL, takich jak CentOS , Fedora , Rocky Linux, i AlmaLinux .
Konfiguracja replikacji MySQL
Oto nasz MySQL konfiguracja laboratorium replikacji.
MySQL Master - 10.128.0.14 MySQL Slave - 10.128.15.211
Zacznijmy…
Krok 1:Zainstaluj MySQL na serwerze Master i Slave
Zaczniemy od zainstalowania MySQL baza danych na obu głównym i niewolnik serwery.
$ sudo dnf install @mysql
Po zakończeniu instalacji zwróć uwagę, aby uruchomić serwer bazy danych.
$ sudo systemctl start mysqld
Następnie włącz go, aby rozpocząć uruchamianie systemu lub po ponownym uruchomieniu.
$ sudo systemctl enable mysqld
Następnie potwierdź, że MySQL serwer bazy danych działa jak pokazano:
$ sudo systemctl status mysqld
Krok 2:Zabezpiecz MySQL na serwerze Master i Slave
Następnym krokiem jest zabezpieczenie MySQL baza danych na obu głównym i niewolnik serwery. Dzieje się tak, ponieważ domyślne ustawienia są niepewne i zawierają pewne luki, które hakerzy mogą łatwo wykorzystać.
Tak więc, aby wzmocnić MySQL, uruchom polecenie:
$ sudo mysql_secure_installation
Najpierw będziesz musiał ustawić MySQL hasło roota. Pamiętaj, aby podać silne hasło roota, najlepiej z więcej niż 8 znakami, które są mieszanką wielkich i małych liter, znaków specjalnych i numerycznych.
W przypadku pozostałych monitów wpisz 'Y'
aby dostosować serwer bazy danych do zalecanych ustawień.
Po zakończeniu instalacji i utwardzania MySQL na węźle głównym i podrzędnym, następnym krokiem jest skonfigurowanie węzła głównego.
Krok 3:Skonfiguruj węzeł główny (serwer)
Następnym krokiem jest skonfigurowanie Master węzła i przyznaj slave dostęp do węzła. Najpierw musimy edytować mysql-server.cnf plik konfiguracyjny.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Dodaj następujące wiersze pod [mysqld]
sekcja.
bind-address = 10.128.0.14 server-id = 1 log_bin = mysql-bin
Po zakończeniu zapisz zmiany i wyjdź. Następnie uruchom ponownie MySQL serwer.
$ sudo sysemctl restart mysqld
Następnie zaloguj się do MySQL powłoka.
$ sudo mysql -u root -p
Wykonaj następujące polecenia, aby utworzyć użytkownika bazy danych, który będzie używany do powiązania urządzenia nadrzędnego i podrzędnego w celu replikacji.
mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY '[email protected]'; mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';
Zastosuj zmiany i zamknij MySQL serwer.
mysql> FLUSH PRIVILEGES; mysql> EXIT;
Sprawdź status mastera.
mysql> SHOW MASTER STATUS\G
Zanotuj nazwę pliku i pozycję. Będzie to potrzebne później podczas konfigurowania urządzenia podrzędnego do replikacji. W naszym przypadku mamy nazwę pliku jako mysql-bin.000001
i pozycja 1232 .
Krok 4:Skonfiguruj węzeł podrzędny (serwer)
Teraz wróć do węzła Slave. Jeszcze raz edytuj mysql-server.cnf plik konfiguracyjny.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Tak jak poprzednio, wklej te linie pod [mysqld]
Sekcja. Zmień adres IP, aby odpowiadał adresowi IP urządzenia podrzędnego. Przypisz też inny identyfikator serwera . Tutaj przypisaliśmy mu wartość 2 .
bind-address = 10.128.15.211 server-id = 2 log_bin = mysql-bin
Zapisz zmiany i zamknij plik. Następnie uruchom ponownie serwer bazy danych.
$ sudo systemctl restart mysqld
Aby skonfigurować Slave węzeł do replikacji z węzła głównego, zaloguj się do serwera MySQL urządzenia Slave.
$ sudo mysql -u root -p
Przede wszystkim zatrzymaj wątki replikacji:
mysql> STOP SLAVE;
Następnie wykonaj następujące polecenie, aby skonfigurować węzeł podrzędny do replikowania baz danych z urządzenia nadrzędnego.
mysql> CHANGE MASTER TO MASTER_HOST='10.128.0.14' , MASTER_USER='replica' , MASTER_PASSWORD='[email protected]' , MASTER_LOG_FILE='mysql-bin.000001' , MASTER_LOG_POS=1232;
Pamiętaj, że MASTER_LOG_FILE i MASTER_LOG_POS flagi odpowiadają plikowi i Pozycji wartości z Master węzeł na końcu kroku 1.
MASTER_HOST , MASTER_USER, i MASTER_PASSWORD odpowiadają odpowiednio głównemu adresowi IP, użytkownikowi replikacji i haśle użytkownika replikacji.
Następnie uruchom wątki replikacji podrzędnej:
mysql> START SLAVE;
Krok 4:Testowanie replikacji MySQL Master-Slave
Teraz, aby sprawdzić, czy działa replikacja między węzłem głównym i podrzędnym, zaloguj się do serwera bazy danych MySQL na węźle głównym:
$ sudo mysql -u root -p
Utwórz testową bazę danych. Tutaj nasza testowa baza danych nazywa się replication_db .
mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;
Teraz przejdź do węzła podrzędnego, zaloguj się do serwera MySQL i potwierdź, że replication_db baza danych jest obecna. Z poniższych danych wyjściowych widzimy, że baza danych jest obecna. Jest to potwierdzenie, że nastąpiła replikacja z węzła głównego do węzła podrzędnego.
mysql> SHOW DATABASES;
I to wszystko, z powodzeniem pokazaliśmy, jak skonfigurować MySQL model replikacji master-slave, który może replikować bazy danych z węzła głównego do węzła podrzędnego.