Jak skonfigurować replikację master-slave MySQL
- 4617
- 970
- Seweryn Augustyniak
Replikacja MySQL to proces, w którym serwer główny replikuje swoje dane na jeden lub więcej serwerów niewolników. Może to zapewnić kilka korzyści, takich jak zwiększona dostępność danych, lepsza wydajność i łatwiejsze kopie zapasowe. Jednym z ważnych aspektów replikacji jest bezpieczeństwo, aw tym artykule zbadamy, jak skonfigurować replikację master-slave MySQL za pomocą uwierzytelnienia za pomocą certyfikatów SSL.
Korzystając z certyfikatów SSL, możemy upewnić się, że replikowane dane są bezpieczne i mogą uzyskać dostęp tylko przez autoryzowane strony. Ponadto certyfikaty SSL można również użyć do uwierzytelnienia serwerów głównych i niewolników, zapewniając dodatkową warstwę bezpieczeństwa.
W tym artykule przejdziemy proces konfigurowania konfiguracji replikacji mistrzowskiej z certyfikatami SSL, w tym tworzeniem i instalacją certyfikatów, konfiguracji serwerów głównych i niewolników oraz rozwiązywania problemów typowych problemów.
Korzyści z replikacji MySQL
Główne korzyści z replikacji mistrzów mistrzów MySQL są:
- Wydajność: Jedną z głównych zalet jest to, że pozwala na odciążenie zapytań tylko do odczytu z głównej bazy danych do niewolników, poprawę wydajności i skalowalności systemu bazy danych. Wynika to z faktu, że główna baza danych jest odpowiedzialna tylko za obsługę pisemnych transakcji, podczas gdy niewolnicy mogą obsługiwać transakcje odczytu.
- Redundancja i tolerancja błędów: Kolejną zaletą replikacji mistrzów mistrzów MySQL jest to, że zapewnia ona poziom nadmiarowości i tolerancji na usterki. Jeśli główna baza danych spadnie, niewolnicy mogą nadal obsługiwać żądania odczytu, minimalizując przestoje. Dodatkowo, jeśli baza danych niewolników upadnie, można ją zastąpić nowym niewolnikiem, a dane można ponownie zsynchronizować z Master.
- Kopii zapasowych i odzyskiwania: Do kopii zapasowych i odzyskiwania danych MySQL Master-Slave może być również używane. Regularnie przyjmując kopie zapasowe niewolników, możesz mieć kopię danych, które można użyć w przypadku katastrofy w głównej bazie danych.
Ten artykuł pomoże Ci skonfigurować replikację mistrza niewolników między dwoma serwerami MySQL. Ten samouczek jest testowany na Ubuntu 22.04 Instancja Linux z MySQL 8.0 serwer bazy danych.
Szczegóły konfiguracji:
W celu testowania stworzyłem dwa systemy w mojej sieci lokalnej. Oba system mają różne IP tej samej sieci. Zakładając, że serwery bazy danych głównych i niewolników mają poniższe IPS jak poniżej:
Serwer główny: 11.11.11.11 Server Slave: 22.22.22.22
Jeśli używasz różnych - różne wersje MySQL na Master i Slave, użyj tego linku, aby sprawdzić kompatybilność.
Krok 1: Utwórz certyfikaty SSL [Master]
Najpierw musisz wygenerować certyfikat CA. Urząd ds. Certyfikatu (CA) to zaufana organizacja zewnętrzna, która wydaje certyfikaty cyfrowe używane do weryfikacji tożsamości i autentyczności podmiotu. Następnie możemy wygenerować certyfikat cyfrowy dla systemu głównego i klienta podpisanego przez certyfikat CA.
- Utwórz katalog, aby przechowywać nowe certyfikaty SSL.
mkdir/etc/mysql/certs
CD/etc/mysql/certs
- Teraz wygeneruj certyfikat, aby użyć jako organu certyfikatu.
OpenSsl Genrsa 4096> Ca-key.pem
OpenSsl req -new -x509 -nodes -Days 9999 -Key Ca -key.PEM> CA-CERT.pem
- Wygeneruj certyfikat dla serwera głównego MySQL:
OpenSsl Req -Newkey RSA: 4096 -DAYS 9999 -NODES -KEYOUT SERVER -KEY.PEM> serwer-req.pem
OpenSsl x509 -req -in server -req.PEM -DAYS 9999 -CA CA -CERT.pem -cakey ca -key.PEM -SET_SERIAL 01> SERWER -CERT.pem
- Następnie wygeneruj certyfikat systemu klienta (niewolnika).
OpenSsl Req -Newkey RSA: 4096 -DAYS 9999 -NODES -KEYOUT KLINT -KEY.PEM> klient-req.pem
OpenSsl x509 -req -in klient -req.PEM -DAYS 9999 -CA CA -CERT.pem -cakey ca -key.PEM -set_serial 01> Client -CERT.pem
Ważna uwaga: Pamiętaj, aby użyć innego „Nazwa zwyczajowa (fqdn)” dla plików CA niż pliki certyfikatu głównego i klienta.
Krok 2: Zaktualizuj plik konfiguracji MySQL [Master]
Następnie plik konfiguracyjny MySQL (np.:/Etc/mysql/mysql.conf.D/Mysqld.CNF) i dodaj/aktualizuj następujące wpisy:
[mysqld] server-id = 1 binlog-format = mieszany log-bin = mysql-bin innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ssl ssl-ca =/etc/mysql/certs/ca-cert-cert.PEM SSL-CERT =/ETC/MYSQL/CERTS/SERWER-CERT.PEM SSL-key =/etc/mysql/certs/serwer-key.pem1234567891011 | [mysqld] server-id = 1binlog-format = mixedlog-bin = mysql-bininnodb_flush_log_at_trx_commit = 1sync_binlog = 1 sslssl-ca =/etc/mysql/certs/ca-cert.PEMSSL-CERT =/ETC/MYSQL/CERTS/SERWER-CERT.pemssl-key =/etc/mysql/certs/serwer-key.pem |
Krok 3: Utwórz użytkownika replikacji [Master]
W tym etapie utworzymy nowego użytkownika na serwerze MySQL, który będzie używany do uwierzytelniania klientów za pomocą usługi głównej. Zaloguj się więc do serwera MySQL na serwerze głównej bazy danych z uprzywilejowanym użytkownikiem. Następnie utwórz nowego użytkownika, który będzie używany do procesu replikacji.
Połącz się z serwerem MySQL, a następnie wykonaj i wykonaj następujące zapytania, aby utworzyć nowego użytkownika i udzielić im dostępu do niewolników.
mysql> Utwórz użytkownika „replikacja”@'22.22.22.22 „Zidentyfikowane przez„ asecurepa $$ w0rd ”wymaga SSL; mysql> Replikacja dotacji niewolnik na *.* Do „replikacji”@'22.22.22.22 '; mysql> uprawnienia spłukające;123 | mysql> Utwórz użytkownika „replikacja”@'22.22.22.22 „Zidentyfikowane przez„ asecurepa $$ w0rd ”wymagają SSL; MySQL> Grant Replication Slave na *.* Do „replikacji”@'22.22.22.22 '; mysql> uprawnienia spłukiwane; |
Pamiętaj, aby wymienić '22.22.22.22 'z adresem IP instancji niewolników.
Użyj silnego hasła do konta użytkownika.
Krok 4: Zrzucaj bazy danych [Master]
Teraz wyeksportuj wszystkie bazy danych w instancji głównej za pomocą „Mysqldump” pożytek.
mysqldump -uroot -p--Skip-Lock-Stable--Single-Transaction \--Flush-Logs--Hex-Blob--Master-Data = 2 -A | gzip -c> zrzut.SQL.GZ
Skopiuj plik zrzutu na serwer Slave.
Zrzut SCP.SQL.GZ [chroniony e -mail]:
Polecenie wyruszy na zdalne hasło użytkownika. Po uwierzytelnianiu użytkownika plik zostanie skopiowany na serwer zdalny w katalogu domowym konta „root”.
Krok 5: Skopiuj pliki certyfikatów SSL [Master]
Skopiuj klucz klienta i certyfikat i pliki certyfikatu CA do instancji niewolnika. Upewnij się, że „/etc/mysql/certs” Katalog istnieje system zdalny.
SCP/etc/mysql/certs/ca-CERT.PEM [e -mail chroniony]:/etc/mysql/certs/
SCP/etc/mysql/certs/client-CERT.PEM [e -mail chroniony]:/etc/mysql/certs/
SCP/etc/mysql/certs/klient.PEM [e -mail chroniony]:/etc/mysql/certs/
Uwaga: Skonfiguruj klawisze SSH do automatycznego logowania lub użyj haseł do łączenia się z zdalnym.
Krok 6: Przywróć kopię zapasową bazy danych [Slave]
Zaloguj się do serwera klienta replikacji MySQL. Wyodrębnij plik zrzutu za pomocą narzędzia Gunzip. Następnie przywróć bazę danych.
Zrzut gunzip.SQL.GZ
mysql -uroot -p -f < dump.sql
Następnie sprawdź pozycję pliku dziennika w pliku kopii zapasowej.
zrzut głowicy.SQL -N80 | GREP „master_log_pos”
Wyjście będzie wyglądało tak:
Wyjście-Zmień Master to Master_log_file = "Mysql-Bin.000007 ", master_log_pos = 154;
Zanotuj Master_log_file I Master_log_pos Wartości, które zostaną użyte w dalszej części tego artykułu.
Krok 7: Zaktualizuj konfigurację mysql niewolnika [Slave]:
Następnie plik konfiguracyjny MySQL (np.:/Etc/mysql/mysql.conf.D/Mysqld.CNF) i dodaj/aktualizuj wpisy FolloiWng:
[mysqld] server-id = 2 binlog-format = mieszany log-bin = mysql-bin relay-log = mysql-relay-bin-slave-updates = 1 tylko odczyt = 11234567 | [mysqld] server-id = 2binlog-format = mixedlog-bin = mysql-binrelay-log = mysql-relay-binlog-slave-updates = 1read tylko = 1 |
Krok 8: Rozpocznij replikację niewolników [Slave]
Skonfiguruj instancję Slave z adresem IP instancji głównej wraz z użytkownikiem replikacji, ich hasłem i certyfikatem skopiowanym z instancji głównej. Upewnij się, że zaktualizuj „Mysql-bin.###### ''
I „Master_log_pos = ###”
Tak samo jak w kroku 6. Dołącz wszystkie zer.
12345678 | mysql> Zmień master na master_host = '11.11.11.11 ', master_user = „Replikacja”, master_password =' asecurepa $$ w0rd ', master_ssl_ca ='/etc/mysql/certs/ca-CERT.PEM ', master_ssl_cert ='/etc/mysql/certs/client-cert.pem ', master_ssl_key ='/etc/mysql/certs/client-key.PEM ', master_ssl = 1, master_log_file =' mysql-bin.###### ', master_log_pos = ###; |
Na koniec rozpocznij proces replikacji:
mysql> start Slave;1 | mysql> start Slave; |
To umożliwi i rozpocznie proces replikacji.
Krok 9: Sprawdź replikację
Możesz uruchomić „Pokaż status niewolnika”
Zapytanie, aby sprawdzić aktualny status replikacji:
1 | mysql> pokaż status niewolnika \ g |
Wyjście *************************** 1. wiersz *************************.11.11.11 Master_user: Replikacja Master_port: 3306 Connect_retry: 60 Master_log_file: MySQL-Bin.000177 read_master_log_pos: 100443919 przekaźnik_log_file: mysql-relay-bin.000498 Relay_log_pos: 104189538 Relay_master_log_file: mysql-bin.000169 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 104189322 Relay_Log_Space: 972921462 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql /cert/ca-cert.PEM master_ssl_ca_path: master_ssl_cert:/etc/mysql/certs/client-cert.PEM master_ssl_cipher: master_ssl_key:/etc/mysql/certs/klient.PEM Seconds_behind_master: 13803 Master_ssl_verify_server_cert: no last_io_errno: 0 last_io_error: last_sql_erro: 0 last_sql_error: replice_ignore_server_ids: master_server_id: 1 master_uuid: a548db65-A007-111.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Waiting for dependent transaction to commit Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row w zestawie 1 ostrzeżenie (0.00 s)
Sprawdź wartość „Sekund_behind_master”. Wartość zero (0) oznacza, że oba systemy są całkowicie synchronizowane.
Mysql Master-Slave Replikacja została pomyślnie skonfigurowana w twoim systemie i jest w trybie pracy. Dziękujemy za skorzystanie z tego samouczka, uprzejmie nie zapomnij podzielić się nim ze znajomymi.
Wniosek
W tym artykule omówiliśmy proces konfigurowania replikacji master-slave MySQL za pomocą uwierzytelnienia za pomocą certyfikatów SSL. Przeszliśmy kroki tworzenia i instalowania certyfikatów, konfigurowania serwerów głównych i niewolników oraz rozwiązywania problemów typowych. Korzystając z certyfikatów SSL, upewniliśmy się, że replikowane dane są bezpieczne i można je uzyskać jedynie autoryzowane strony. Ponadto certyfikaty SSL zostały użyte do uwierzytelnienia serwerów głównych i niewolników, zapewniając dodatkową warstwę bezpieczeństwa. Takie podejście może pomóc organizacjom w poprawie bezpieczeństwa ich środowiska replikacji oraz zapewnienia uczciwości i poufności ich danych.
Ogólnie rzecz biorąc, replikacja master-slave MySQL jest przydatnym narzędziem do poprawy wydajności, skalowalności i tolerancji błędów w systemie bazy danych MySQL. Umożliwia dystrybucję danych na wielu serwerach i może być używany do tworzenia kopii zapasowych i odzyskiwania danych.