Nawet jeśli niektórzy informatycy słyszą wyrażenie „Replikacja bazy danych „, często kojarzą to z potrzebą posiadania wielu kopii tych samych informacji, aby uniknąć utraty danych w przypadku awarii sprzętu lub uszkodzenia danych. Chociaż w pewnym stopniu jest to prawdą, replikacja bazy danych to znacznie więcej niż powszechna koncepcja tworzenia kopii zapasowych bazy danych i dostępności danych.
Wśród innych zalet replikacji bazy danych w konfiguracji master-slave możemy wymienić:
- Tworzenie kopii zapasowych można wykonać na serwerze podrzędnym bez wpływu (i bez wpływu) na operacje zapisu w serwerze głównym.
- Operacje wymagające dużej ilości zasobów (takie jak analiza danych) mogą być wykonywane na urządzeniu podrzędnym bez wpływu na wydajność urządzenia nadrzędnego.
W tym artykule wyjaśnimy, jak skonfigurować replikację master-slave w MariaDB 10.1 . W przeciwieństwie do klasycznej replikacji, MariaDB wprowadziła koncepcję identyfikatorów transakcji globalnych (identyfikatory GTID ) w v10.0 , który umożliwia zmianę urządzenia podrzędnego w celu łatwego połączenia i replikacji z innego urządzenia nadrzędnego. Ponadto stan urządzenia podrzędnego jest rejestrowany w sposób bezpieczny w przypadku awarii (aktualizacje stanu są wykonywane w tej samej transakcji, co aktualizacje danych).
Jeśli szukasz MySQL replikacja w CentOS/RHEL 6 , postępuj zgodnie z tym przewodnikiem Konfiguracja replikacji MySQL (Master-Slave) na CentOS/RHEL 6
Instalowanie MariaDB 10.1 w CentOS/RHEL 7 i Debianie 8/9
Nasze środowisko testowe składa się z następujących maszyn (oba są CentOS 7) ):
Master:192.168.0.18Slave:192.168.0.19
Aby zainstalować najnowszą wersję MariaDB, będziemy musieli dodać ich repozytoria do naszych serwerów. Jeśli używasz starszej wersji MariaDB, powiedzmy 5.5, rozważ uaktualnienie do najnowszej wersji 10.1, korzystając z poniższego artykułu.
- Aktualizuj MariaDB 5.5 do MariaDB 10.1
W CentOS/RHEL
Utwórz plik o nazwie MariaDB.repo
wewnątrz /etc/yum.repos.d z następującą zawartością na obu Master i Niewolnik systemy:
# Lista repozytoriów MariaDB 10.1 CentOS - utworzona 2016-01-23 14:16 UTC# http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1
Zapisz plik i zainstaluj MariaDB na obu serwerach za pomocą yum:
# mniam aktualizacja i mniam instalacja serwera MariaDB Klient MariaDB
W Debianie/Ubuntu
Dodaj klucz do uwierzytelniania pakietów i repozytorium MariaDB:
# apt-get install software-properties-common# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db# add-apt-repository 'deb [arch=amd64,i386] http:/ /mirror.edatel.net.co/mariadb/repo/10.1/debian jessie główny'
Uwaga :Zastąp dystrybucję nazwa i kryptonim w powyżej podświetlonej linii.
Zainstaluj za pomocą apt-get polecenie:
# apt-get update# apt-get install mariadb-server
Po zainstalowaniu MariaDB uruchom mysql_secure_installation
procedury zarówno na urządzeniu głównym, jak i podrzędnym, skonfigurujmy przykładową testową bazę danych na komputerze głównym.
Konfigurowanie przykładowej bazy danych MySQL na Master
Teraz skonfigurujemy na serwerze głównym Employees
baza danych z https://github.com/datacharmer/test_db (co zapewnia zbiór danych składający się z 4 milion rekordów rozłożonych na sześć tabel) w dwóch prostych krokach:
Sklonuj repozytorium i użyj go do zaimportowania przykładowej bazy danych do instalacji MariaDB:
# klon git https://github.com/datacharmer/test_db# cd test_db# mysqlKonfigurowanie serwera MySQL na Master
Aby skonfigurować urządzenie główne, wykonaj następujące czynności:
KROK 1: Edytuj
/etc/my.cnf
plik. Pod[mysqld]
sekcji, dodaj następujące cztery wiersze:log-binserver_id=1replicate-do-db=employeesbind-address=192.168.0.18i uruchom ponownie MariaDB:
# restart systemctl mariadbKROK 2: Zaloguj się do serwera MariaDB jako root, utwórz użytkownika podrzędnego i przypisz niezbędne uprawnienia:
MariaDB [(brak)]> UTWÓRZ UŻYTKOWNIKA 'slave'@'localhost' ZIDENTYFIKOWANEGO PRZEZ 'SlavePassword';MariaDB [(brak)]> GRANT REPLICATION SLAVE ON *.* DO Slave IDENTYFIKOWANE PRZEZ 'SlavePassword' Z OPCJĄ GRANT;MariaDB [(brak)]> PRZYWILEJE DO PŁUKANIA;MariaDB [(brak)]> STOŁY PODTYNKOWE Z BLOKADĄ ODCZYTU;MariaDB [(brak)]> POKAŻ STATUS MASTER;Ostatni polecenie (POKAŻ STATUS GŁÓWNY ) zwraca bieżącą pozycję w dzienniku binarnym (dokładne współrzędne, które wskazują dokładnie, od którego punktu urządzenie podrzędne powinno rozpocząć replikację:
KROK 3: Wyjdź z monitu MariaDB (za pomocą
exit;
) i użyj następującego polecenia, aby zrobić migawkę bazy danych pracowników. Po naciśnięciu Enter , zostaniesz poproszony o wpisanie hasła roota, które ustawiłeś wcześniej za pomocąmysql_secure_installation
:# mysqldump -u root -p pracownicy> pracownicy-dump.sqlPo zakończeniu zrzutu ponownie połącz się z serwerem bazy danych, aby odblokować tabele, a następnie wyjdź:
MariaDB [(brak)]> ODBLOKUJ TABELE;MariaDB [(brak)]> wyjdź;KROK 4: Skopiuj zrzut do urządzenia podrzędnego:
# scp workers-dump.sql [email protected]:/root/KROK 5: Uruchom
mysql_upgrade
procedura aktualizacji tabel systemowych (zostaniesz poproszony o wprowadzenie hasła root MariaDB):# mysql_upgrade -u root -pKROK 6: Zezwól usłudze bazy danych przez zaporę sieciową:
# firewall-cmd --add-service=mysql# firewall-cmd --add-service=mysql --permanent# firewall-cmd --reloadTeraz skonfigurujmy urządzenie podrzędne.
Konfigurowanie serwera MySQL na serwerze Slave
Aby skonfigurować urządzenie podrzędne, wykonaj następujące kroki:
KROK 1: Utwórz konto, aby wykonać zadania replikacji. Połącz się z lokalnym serwerem MariaDB za pomocą:
# mysql -u root –pi wprowadź ustawione wcześniej hasło.
KROK 2: Po połączeniu z serwerem bazy danych utwórz użytkownika i pustą bazę danych oraz przyznaj uprawnienia:
MariaDB [(brak)]> TWÓRZ BAZĘ DANYCH pracowników;MariaDB [(brak)]> PRZYZNAJ WSZYSTKIE PRZYWILEJE pracownikom.* 'slave'@'localhost' Z OPCJĄ PRZYZNANIA;MariaDB [(brak)]> PRZYWILEJE PŁUKANIA;KROK 3: Zamknij monit MariaDB i załaduj zrzut utworzony na serwerze głównym:
# mysql -u root -p pracownicyKROK 4: Edytuj
/etc/my.cnf
plik do przypisania ID serwera do niewolnika pod[mysqld]
Sekcja. Pamiętaj, że musi to być inna liczba całkowita niż 1 , ponieważ użyliśmy 1 w mistrzu:server_id=2replicate-do-db=pracownicyZrestartuj serwer bazy danych:
# restart systemctl mariadbKROK 5: Uruchom
mysql_upgrade
procedura aktualizacji tabel systemowych (zostaniesz poproszony o wprowadzenie hasła root MariaDB):# mysql_upgrade -u root -pKROK 6: Po zaimportowaniu zrzutu do urządzenia podrzędnego dzieli nas tylko kilka kroków do rozpoczęcia replikacji. Zaloguj się do bazy danych i uruchom następujące polecenia w wierszu MariaDB. Zwróć szczególną uwagę na
MASTER_LOG_FILE
iMASTER_LOG_POS
zmienne, które powinny odpowiadać wartościom zwracanym przez SHOW MASTER STATUS w KROKU 2 „Konfiguracja urządzenia głównego” powyżej.MariaDB [(brak)]> ZMIEŃ MASTER NA MASTER_HOST='192.168.0.18', MASTER_USER='slave', MASTER_PASSWORD='SlavePassword', MASTER_PORT=3306, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=314, MASTER_CONNECT_RETRY_G_pos. /pre>KROK 7: Uruchom urządzenie podrzędne i sprawdź jego stan bez wychodzenia z monitu MariaDB:
MariaDB [(brak)]> START SLAVE;MariaDB [(brak)]> POKAŻ STATUS SLAVE\G;Nie, że potrzebujesz tego teraz, ale pamiętaj, że możesz zatrzymać urządzenie podrzędne za pomocą:
MariaDB [(brak)]> ZATRZYMAJ NIEWOLNIKA;jeśli
SHOW SLAVE STATUS\G;
polecenie zwraca wszelkie błędy. Użyj tych błędów, aby rozwiązać problem, a następnie uruchomSTART SLAVE;
do ponownego przetestowania.Przetestuj replikację bazy danych MySQL/MariaDB
Dodajmy rekord do pracowników tabela na serwerze głównym:
MariaDB [(brak)]> WPISZ DO pracowników (nr_pracy, data_urodzenia, imię, nazwisko, płeć, data_zatrudnienia) WARTOŚCI (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');Następnie sprawdź, czy ta zmiana została zreplikowana w urządzeniu podrzędnym:
MariaDB [(brak)]> USE pracowników;MariaDB [(brak)]> WYBIERZ * OD pracowników GDZIE emp_no=500000;Jak widać, replikacja działa poprawnie od urządzenia nadrzędnego do podrzędnego.
Podsumowanie
W tym artykule wyjaśniliśmy, jak zainstalować najnowszą wersję MariaDB w CentOS/RHEL 7 i Debian 8/9 i omówiliśmy, jak skonfigurować replikację master-slave za pomocą identyfikatorów GTID. Aby uzyskać więcej informacji, zapoznaj się z Przewodnikiem replikacji MariaDB i nie wahaj się skontaktować z nami za pomocą poniższego formularza, jeśli masz pytania lub komentarze.