Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak skonfigurować replikację MySQL w RHEL, Rocky i AlmaLinux?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zresetować hasło root MySQL?

  2. SQL DELETE z JOIN inną tabelą dla warunku WHERE

  3. Czy w MySQL mogę odroczyć sprawdzanie integralności referencyjnej do momentu zatwierdzenia?

  4. Jak naprawić tabelę InnoDB?

  5. PHP i mySQL:Rok 2038 Błąd:Co to jest? Jak to rozwiązać?