MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak skonfigurować replikację między klastrami dla klastra Percona XtraDB lub MariaDB?

W poprzednim blogu ogłosiliśmy nową funkcję ClusterControl 1.7.4 o nazwie Cluster-to-Cluster Replication. Automatyzuje cały proces konfigurowania klastra DR poza klastrem podstawowym, z replikacją pomiędzy nimi. Aby uzyskać bardziej szczegółowe informacje, zapoznaj się z wyżej wspomnianym wpisem na blogu.

Teraz w tym blogu przyjrzymy się, jak skonfigurować tę nową funkcję dla istniejącego klastra. W tym zadaniu założymy, że masz zainstalowany ClusterControl, a Master Cluster został wdrożony przy jego użyciu.

Wymagania dla Master Cluster

Istnieją pewne wymagania, aby Master Cluster działał:

  • Percona XtraDB Cluster w wersji 5.6.x i nowszej lub MariaDB Galera Cluster w wersji 10.x i nowszej.
  • GTID włączone.
  • Logowanie binarne włączone w co najmniej jednym węźle bazy danych.
  • Poświadczenia kopii zapasowej muszą być takie same w klastrze głównym i klastrze podrzędnym.

Przygotowywanie głównego klastra

Główny klaster musi być przygotowany do korzystania z tej nowej funkcji. Wymaga konfiguracji zarówno po stronie ClusterControl, jak i bazy danych.

Konfiguracja ClusterControl

W węźle bazy danych sprawdź kopię zapasową poświadczeń użytkownika przechowywaną w /etc/my.cnf.d/secrets-backup.cnf (dla systemu operacyjnego RedHat) lub w /etc/mysql/secrets-backup .cnf (dla systemu operacyjnego opartego na Debianie).

$ cat /etc/my.cnf.d/secrets-backup.cnf

# Security credentials for backup.

[mysqldump]

user=backupuser

password=cYj0GFBEdqdreZEl



[xtrabackup]

user=backupuser

password=cYj0GFBEdqdreZEl



[mysqld]

wsrep_sst_auth=backupuser:cYj0GFBEdqdreZEl

W węźle ClusterControl edytuj plik konfiguracyjny /etc/cmon.d/cmon_ID.cnf (gdzie ID to numer ID klastra) i upewnij się, że zawiera on te same poświadczenia przechowywane w kopii zapasowej obiektów tajnych. por.

$ cat /etc/cmon.d/cmon_8.cnf

backup_user=backupuser

backup_user_password=cYj0GFBEdqdreZEl

basedir=/usr

cdt_path=/

cluster_id=8

...

Każda zmiana w tym pliku wymaga ponownego uruchomienia usługi cmon:

$ service cmon restart

Sprawdź parametry replikacji bazy danych, aby upewnić się, że masz włączone GTID i rejestrowanie binarne.

Konfiguracja bazy danych

W węźle bazy danych sprawdź plik /etc/my.cnf (dla systemu operacyjnego opartego na RedHat) lub /etc/mysql/my.cnf (dla systemu operacyjnego opartego na Debianie), aby zobaczyć konfigurację związaną z proces replikacji.

Percona XtraDB:

$ cat /etc/my.cnf

# REPLICATION SPECIFIC

server_id=4002

binlog_format=ROW

log_bin = /var/lib/mysql-binlog/binlog

log_slave_updates = ON

gtid_mode = ON

enforce_gtid_consistency = true

relay_log = relay-log

expire_logs_days = 7

Klaster MariaDB Galera:

$ cat /etc/my.cnf

# REPLICATION SPECIFIC

server_id=9000

binlog_format=ROW

log_bin = /var/lib/mysql-binlog/binlog

log_slave_updates = ON

relay_log = relay-log

wsrep_gtid_domain_id=9000

wsrep_gtid_mode=ON

gtid_domain_id=9000

gtid_strict_mode=ON

gtid_ignore_duplicates=ON

expire_logs_days = 7

Zacząłem sprawdzać pliki konfiguracyjne, możesz sprawdzić, czy jest włączony w interfejsie użytkownika ClusterControl. Przejdź do ClusterControl -> Wybierz Cluster -> Węzły. Powinieneś mieć coś takiego:

Dodana rola „Master” w pierwszym węźle oznacza, że ​​logowanie binarne jest włączony.

Włączanie rejestrowania binarnego

Jeśli nie masz włączonego rejestrowania binarnego, przejdź do ClusterControl -> Wybierz Cluster -> Węzły -> Akcje węzłów -> Włącz rejestrowanie binarne.

Następnie musisz określić przechowywanie dziennika binarnego i ścieżkę do przechowywania to. Powinieneś również określić, czy chcesz, aby ClusterControl zrestartował węzeł bazy danych po jego skonfigurowaniu, czy wolisz go zrestartować samodzielnie.

Pamiętaj, że włączenie rejestrowania binarnego zawsze wymaga ponownego uruchomienia usługi bazy danych .

Tworzenie klastra Slave z GUI ClusterControl

Aby utworzyć nowy klaster Slave, przejdź do ClusterControl -> Wybierz Cluster -> Cluster Actions -> Create Slave Cluster.

Klaster Slave można utworzyć poprzez strumieniowe przesyłanie danych z bieżącego klastra głównego lub przy użyciu istniejącej kopii zapasowej.

W tej sekcji musisz również wybrać węzeł główny bieżącego klastra z którego dane będą replikowane.

Gdy przejdziesz do następnego kroku, musisz określić Użytkownika, Klucz lub Hasło i port do łączenia się przez SSH z Twoimi serwerami. Potrzebujesz również nazwy dla swojego klastra Slave i jeśli chcesz, aby ClusterControl zainstalował dla Ciebie odpowiednie oprogramowanie i konfiguracje.

Po skonfigurowaniu informacji o dostępie SSH należy zdefiniować dostawcę bazy danych i wersja, katalog danych, port bazy danych i hasło administratora. Upewnij się, że używasz tego samego dostawcy/wersji i poświadczeń, które są używane przez klaster główny. Możesz także określić, którego repozytorium chcesz użyć.

W tym kroku musisz dodać serwery do nowego klastra Slave. W tym zadaniu możesz wprowadzić adres IP lub nazwę hosta każdego węzła bazy danych.

Możesz monitorować stan tworzenia nowego klastra Slave z poziomu Monitor aktywności ClusterControl. Po zakończeniu zadania możesz zobaczyć klaster na głównym ekranie ClusterControl.

Zarządzanie replikacją między klastrami za pomocą interfejsu GUI ClusterControl

Teraz masz już uruchomioną replikację klastrów do klastrów, możesz wykonać różne czynności w tej topologii za pomocą ClusterControl.

Konfiguruj klastry aktywny-aktywny

Jak widać, domyślnie klaster Slave jest ustawiony w trybie tylko do odczytu. Możliwe jest wyłączenie flagi tylko do odczytu na węzłach jeden po drugim w interfejsie użytkownika ClusterControl, ale należy pamiętać, że klastrowanie Active-Active jest zalecane tylko wtedy, gdy aplikacje dotykają tylko rozłącznych zestawów danych w jednym z klastrów, ponieważ MySQL/MariaDB tego nie robi. oferować dowolne wykrywanie lub rozwiązywanie konfliktów.

Aby wyłączyć tryb tylko do odczytu, przejdź do ClusterControl -> Wybierz urządzenie podrzędne Klaster -> Węzły. W tej sekcji wybierz każdy węzeł i użyj opcji Wyłącz tylko do odczytu.

Odbudowa klastra niewolników

Aby uniknąć niespójności, jeśli chcesz odbudować klaster podrzędny, musi to być klaster tylko do odczytu, co oznacza, że ​​wszystkie węzły muszą być w trybie tylko do odczytu.

Przejdź do ClusterControl -> Wybierz klaster podrzędny -> Węzły -> Wybierz Węzeł połączony z klastrem głównym -> Akcje węzła -> Odbuduj replikację podrzędną.

Zmiany topologii

Jeśli masz następującą topologię:

I z jakiegoś powodu chcesz zmienić węzeł replikacji w Master Grupa. Istnieje możliwość zmiany węzła głównego używanego przez klaster podrzędny na inny węzeł główny w klastrze głównym.

Aby można go było uznać za węzeł główny, musi mieć włączone logowanie binarne .

Przejdź do ClusterControl -> Wybierz klaster podrzędny -> Węzły -> Wybierz Węzeł podłączony do Master Cluster -> Node Actions -> Stop Slave/Start Slave.

Zatrzymaj/uruchom replikację podrzędną

Możesz zatrzymywać i uruchamiać urządzenia podrzędne replikacji w łatwy sposób za pomocą ClusterControl.

Przejdź do ClusterControl -> Wybierz klaster podrzędny -> Węzły -> Wybierz Węzeł podłączony do Master Cluster -> Node Actions -> Stop Slave/Start Slave.

Zresetuj podrzędną replikację

Za pomocą tej akcji możesz zresetować proces replikacji za pomocą opcji RESETUJ SLAVE lub RESETUJ SLAVE WSZYSTKO. Różnica między nimi polega na tym, że RESET SLAVE nie zmienia żadnego parametru replikacji, takiego jak host główny, port i poświadczenia. Aby usunąć te informacje, musisz użyć polecenia RESETUJ SLAVE WSZYSTKO, które usuwa całą konfigurację replikacji, więc użycie tego polecenia spowoduje zniszczenie łącza replikacji klastrów do klastrów.

Przed użyciem tej funkcji należy zatrzymać proces replikacji (proszę zapoznać się z poprzednią funkcją).

Przejdź do ClusterControl -> Wybierz klaster podrzędny -> Węzły -> Wybierz Węzeł podłączony do Master Cluster -> Akcje węzła -> Resetuj Slave/Reset Slave All.

Zarządzanie replikacją między klastrami za pomocą interfejsu wiersza polecenia ClusterControl

W poprzedniej sekcji można było zobaczyć, jak zarządzać replikacją między klastrami za pomocą interfejsu użytkownika ClusterControl. Zobaczmy teraz, jak to zrobić za pomocą wiersza poleceń.

Uwaga:jak wspomnieliśmy na początku tego bloga, założymy, że masz zainstalowany ClusterControl i Master Cluster został wdrożony przy jego użyciu.

Utwórz klaster niewolników

Najpierw spójrzmy na przykładowe polecenie tworzenia klastra podrzędnego za pomocą CLI Control CLI:

$ s9s cluster --create --cluster-name=Galera1rep --cluster-type=galera  --provider-version=10.4 --nodes="192.168.100.166;192.168.100.167;192.168.100.168"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=root --db-admin-passwd=xxxxxxxx --vendor=mariadb --remote-cluster-id=11 --log

Teraz masz uruchomiony proces tworzenia podrzędnego, zobaczmy każdy użyty parametr:

  • Klaster:do wyświetlania i manipulowania klastrami.
  • Utwórz:utwórz i zainstaluj nowy klaster.
  • Nazwa klastra:nazwa nowego klastra podrzędnego.
  • Typ klastra:typ klastra do zainstalowania.
  • Wersja dostawcy:Wersja oprogramowania.
  • Węzły:Lista nowych węzłów w Klastrze Slave.
  • Os-user:nazwa użytkownika dla poleceń SSH.
  • Plik klucza systemu operacyjnego:plik klucza używany do połączenia SSH.
  • Db-admin:nazwa użytkownika administratora bazy danych.
  • Db-admin-passwd:hasło administratora bazy danych.
  • Remote-cluster-id:identyfikator głównego klastra dla replikacji klaster-klaster.
  • Dziennik:Poczekaj i monitoruj wiadomości o zadaniach.

Używając flagi --log, będziesz mógł zobaczyć logi w czasie rzeczywistym:

Verifying job parameters.

Checking ssh/sudo on 3 hosts.

All 3 hosts are accessible by SSH.

192.168.100.166: Checking if host already exists in another cluster.

192.168.100.167: Checking if host already exists in another cluster.

192.168.100.168: Checking if host already exists in another cluster.

192.168.100.157:3306: Binary logging is enabled.

192.168.100.158:3306: Binary logging is enabled.

Creating the cluster with the following:

wsrep_cluster_address = 'gcomm://192.168.100.166,192.168.100.167,192.168.100.168'

Calling job: setupServer(192.168.100.166).

192.168.100.166: Checking OS information.

…

Caching config files.

Job finished, all the nodes have been added successfully.

Konfiguruj klastry aktywny-aktywny

Jak widać było wcześniej, możesz wyłączyć tryb tylko do odczytu w nowym klastrze, wyłączając go w każdym węźle, więc zobaczmy, jak to zrobić z wiersza poleceń.

$ s9s node --set-read-write --nodes="192.168.100.166" --cluster-id=16 --log

Zobaczmy każdy parametr:

  • Węzeł:do obsługi węzłów.
  • Ustaw-odczyt-zapis:Ustaw węzeł w trybie odczytu-zapisu.
  • Węzły:węzeł, w którym należy to zmienić.
  • Identyfikator klastra:identyfikator klastra, w którym znajduje się węzeł.

Następnie zobaczysz:

192.168.100.166:3306: Setting read_only=OFF.

Odbudowa klastra niewolników

Możesz odbudować klaster Slave za pomocą następującego polecenia:

$ s9s replication --stage --master="192.168.100.157:3306" --slave="192.168.100.166:3306" --cluster-id=19 --remote-cluster-id=11 --log

Parametry to:

  • Replikacja:Do monitorowania i kontrolowania replikacji danych.
  • Etap:Etapowanie/odbudowa niewolnika replikacji.
  • Master:wzorzec replikacji w klastrze głównym.
  • Slave:urządzenie podrzędne replikacji w klastrze podrzędnym.
  • Identyfikator klastra:identyfikator klastra podrzędnego.
  • Remote-cluster-id:identyfikator nadrzędnego klastra.
  • Dziennik:Poczekaj i monitoruj wiadomości o zadaniach.

Dziennik zadań powinien być podobny do tego:

Rebuild replication slave 192.168.100.166:3306 from master 192.168.100.157:3306.

Remote cluster id = 11

Shutting down Galera Cluster.

192.168.100.166:3306: Stopping node.

192.168.100.166:3306: Stopping mysqld (timeout=60, force stop after timeout=true).

192.168.100.166: Stopping MySQL service.

192.168.100.166: All processes stopped.

192.168.100.166:3306: Stopped node.

192.168.100.167:3306: Stopping node.

192.168.100.167:3306: Stopping mysqld (timeout=60, force stop after timeout=true).

192.168.100.167: Stopping MySQL service.

192.168.100.167: All processes stopped.

…

192.168.100.157:3306: Changing master to 192.168.100.166:3306.

192.168.100.157:3306: Changed master to 192.168.100.166:3306

192.168.100.157:3306: Starting slave.

192.168.100.157:3306: Collecting replication statistics.

192.168.100.157:3306: Started slave successfully.

192.168.100.166:3306: Starting node

Writing file '192.168.100.167:/etc/mysql/my.cnf'.

Writing file '192.168.100.167:/etc/mysql/secrets-backup.cnf'.

Writing file '192.168.100.168:/etc/mysql/my.cnf'.

Zmiany topologii

Możesz zmienić swoją topologię za pomocą innego węzła w Master Cluster, z którego replikowane są dane, więc możesz na przykład uruchomić:

$ s9s replication --failover --master="192.168.100.161:3306" --slave="192.168.100.163:3306" --cluster-id=10 --remote-cluster-id=9 --log

Sprawdźmy używane parametry.

  • Replikacja:Do monitorowania i kontrolowania replikacji danych.
  • Przełączanie awaryjne:przejmij rolę mistrza od nieudanego/starego mistrza.
  • Master:nowy wzorzec replikacji w Master Cluster.
  • Slave:Slave replikacji w Klastrze Slave.
  • Cluster-id:identyfikator klastra slave.
  • Remote-Cluster-id:identyfikator klastra głównego.
  • Dziennik:Poczekaj i monitoruj wiadomości o zadaniach.

Zobaczysz ten dziennik:

192.168.100.161:3306 belongs to cluster id 9.

192.168.100.163:3306: Changing master to 192.168.100.161:3306

192.168.100.163:3306: My master is 192.168.100.160:3306.

192.168.100.161:3306: Sanity checking replication master '192.168.100.161:3306[cid:9]' to be used by '192.168.100.163[cid:139814070386698]'.

192.168.100.161:3306: Executing GRANT REPLICATION SLAVE ON *.* TO 'cmon_replication'@'192.168.100.163'.

Setting up link between  192.168.100.161:3306 and 192.168.100.163:3306

192.168.100.163:3306: Stopping slave.

192.168.100.163:3306: Successfully stopped slave.

192.168.100.163:3306: Setting up replication using MariaDB GTID: 192.168.100.161:3306->192.168.100.163:3306.

192.168.100.163:3306: Changing Master using master_use_gtid=slave_pos.

192.168.100.163:3306: Changing master to 192.168.100.161:3306.

192.168.100.163:3306: Changed master to 192.168.100.161:3306

192.168.100.163:3306: Starting slave.

192.168.100.163:3306: Collecting replication statistics.

192.168.100.163:3306: Started slave successfully.

192.168.100.160:3306: Flushing logs to update 'SHOW SLAVE HOSTS'

Zatrzymaj/uruchom replikację podrzędną

Możesz zatrzymać replikację danych z Master Cluster w ten sposób:

$ s9s replication --stop --slave="192.168.100.166:3306" --cluster-id=19 --log

Zobaczysz to:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Stopping slave.

192.168.100.166:3306: Successfully stopped slave.

Teraz możesz zacząć od nowa:

$ s9s replication --start --slave="192.168.100.166:3306" --cluster-id=19 --log

Więc zobaczysz:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Starting slave.

192.168.100.166:3306: Collecting replication statistics.

192.168.100.166:3306: Started slave successfully.

Teraz sprawdźmy używane parametry.

  • Replikacja:Do monitorowania i kontrolowania replikacji danych.
  • Stop/Start:Aby urządzenie podrzędne zatrzymało/rozpoczęło replikację.
  • Slave:węzeł podrzędny replikacji.
  • Identyfikator klastra:identyfikator klastra, w którym znajduje się węzeł podrzędny.
  • Dziennik:Poczekaj i monitoruj wiadomości o zadaniach.

Zresetuj podrzędną replikację

Za pomocą tego polecenia możesz zresetować proces replikacji za pomocą opcji RESET SLAVE lub RESET SLAVE ALL. Aby uzyskać więcej informacji na temat tego polecenia, sprawdź jego użycie w poprzedniej sekcji interfejsu użytkownika ClusterControl.

Przed użyciem tej funkcji należy zatrzymać proces replikacji (proszę zapoznać się z poprzednim poleceniem).

ZRESETUJ PODRĘCZNIK:

$ s9s replication --reset  --slave="192.168.100.166:3306" --cluster-id=19 --log

Dziennik powinien wyglądać następująco:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Executing 'RESET SLAVE'.

192.168.100.166:3306: Command 'RESET SLAVE' succeeded.

ZRESETUJ WSZYSTKIE WSZYSTKIE:

$ s9s replication --reset --force  --slave="192.168.100.166:3306" --cluster-id=19 --log

I ten dziennik powinien być:

192.168.100.166:3306: Ensuring the datadir '/var/lib/mysql' exists and is owned by 'mysql'.

192.168.100.166:3306: Executing 'RESET SLAVE /*!50500 ALL */'.

192.168.100.166:3306: Command 'RESET SLAVE /*!50500 ALL */' succeeded.

Zobaczmy używane parametry zarówno dla RESETUJ SLAVE, jak i RESETUJ SLAVE WSZYSTKO.

  • Replikacja:Do monitorowania i kontrolowania replikacji danych.
  • Reset:Zresetuj węzeł podrzędny.
  • Wymuś:Używając tej flagi użyjesz polecenia RESET SLAVE ALL na węźle podrzędnym.
  • Slave:węzeł podrzędny replikacji.
  • Identyfikator klastra:identyfikator klastra podrzędnego.
  • Dziennik:Poczekaj i monitoruj wiadomości o zadaniach.

Wnioski

Ta nowa funkcja ClusterControl umożliwia szybkie tworzenie replikacji Cluster-to-Cluster i zarządzanie nią w łatwy i przyjazny sposób. To środowisko poprawi topologię bazy danych/klastra i będzie przydatne w przypadku planu odzyskiwania po awarii, środowiska testowego i jeszcze innych opcji wymienionych w blogu przeglądowym.


  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 RADIANS() działa w MariaDB

  2. Jak CHAR_LENGTH() działa w MariaDB

  3. Migracja bazy danych Azure dla MySQL/MariaDB na serwer lokalny

  4. Jak zaktualizować MariaDB 5.5 do MariaDB 10.1 w CentOS/RHEL 7 i systemach Debian

  5. Jedzenie własnej karmy dla psów – bieganie JIRA na MariaDB