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

Instalacja offline klastra MariaDB dla CentOS

Większość kroków instalacyjnych dostępnych w Internecie obejmuje standardową instalację online, zakładając, że hosty bazy danych mają aktywne połączenie internetowe z repozytoriami pakietów i spełniają wszystkie zależności. Jednak kroki instalacji i polecenia są nieco inne w przypadku instalacji w trybie offline. Instalacja offline jest powszechną praktyką w ścisłym i bezpiecznym środowisku, takim jak sektor finansowy i wojskowy, w celu zapewnienia zgodności z bezpieczeństwem, zmniejszenia ryzyka narażenia i zachowania poufności.

W tym poście na blogu zamierzamy zainstalować trzywęzłowy klaster MariaDB w środowisku offline na hostach CentOS. Rozważ następujące trzy węzły dla tej instalacji:

  • mariadb1 - 192.168.0.241
  • mariadb2 - 192.168.0.242
  • mariadb3 - 192.168.0.243

Pobierz pakiety

Najbardziej czasochłonną częścią jest uzyskanie wszystkich pakietów wymaganych do naszej instalacji. Najpierw przejdź do odpowiedniego repozytorium MariaDB, które chcemy zainstalować (w tym przykładzie nasz system operacyjny to CentOS 7 64bit):

  • MariaDB 10.4:http://yum.mariadb.org/10.4/centos7-amd64/rpms/
  • MariaDB 10.3:http://yum.mariadb.org/10.3/centos7-amd64/rpms/
  • MariaDB 10.2:http://yum.mariadb.org/10.2/centos7-amd64/rpms/
  • MariaDB 10.1:http://yum.mariadb.org/10.1/centos7-amd64/rpms/
  • MariaDB 10.0:http://yum.mariadb.org/10.0/centos7-amd64/rpms/

Upewnij się, że pobierasz dokładnie tę samą wersję pomocniczą dla wszystkich pakietów związanych z MariaDB. W tym przykładzie pobraliśmy MariaDB w wersji 10.4.13. W tym repozytorium znajduje się wiele pakietów, ale nie potrzebujemy ich wszystkich tylko do uruchomienia klastra MariaDB. Niektóre pakiety są nieaktualne i służą do debugowania. W przypadku MariaDB Galera 10.4 i CentOS 7 musimy pobrać następujące pakiety z repozytorium MariaDB 10.4:

  • jemalloc
  • galera-3/galera-4
  • libzstd
  • Kopia zapasowa MariaDB
  • serwer MariaDB
  • Klient MariaDB
  • Udostępniono MariaDB
  • MariaDB wspólne
  • Kompatybilność MariaDB

Następujące polecenia wget uprościłyby proces pobierania:

wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Niektóre z tych pakietów są zależne od innych pakietów. Aby zaspokoić je wszystkie, prawdopodobnie najlepiej zamontować obraz ISO systemu operacyjnego i wskazać menedżerowi pakietów yum, aby zamiast tego używał obrazu ISO jako podstawowego repozytorium offline. W przeciwnym razie marnowalibyśmy dużo czasu, próbując pobrać/przenieść pakiety z jednego hosta/media na inny.

Jeśli szukasz starszych pakietów MariaDB, poszukaj ich w repozytorium archiwum tutaj. Po pobraniu przenieś pakiety na wszystkie serwery baz danych za pomocą dysku USB, nagrywarki DVD lub dowolnej pamięci sieciowej podłączonej do hostów bazy danych.

Zamontuj obraz ISO lokalnie

Niektóre zależności muszą być spełnione podczas instalacji, a jednym ze sposobów łatwego osiągnięcia tego jest skonfigurowanie repozytorium offline yum na serwerach bazy danych. Po pierwsze, musimy pobrać obraz ISO DVD CentOS 7 z najbliższej witryny lustrzanej CentOS, w katalogu „isos”:

$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso

Możesz albo przesłać obraz i zamontować go bezpośrednio, albo nagrać go na DVD i użyć napędu DVD i podłączyć go do serwera. W tym przykładzie zamierzamy zamontować obraz ISO jako DVD na serwerze:

$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS

Następnie włącz repozytorium CentOS-Media (c7-media) i wyłącz standardowe repozytoria online (podstawa, aktualizacje, dodatki):

$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media

Jesteśmy teraz gotowi do instalacji.

Instalowanie i konfigurowanie serwera MariaDB

Kroki instalacji są dość proste, jeśli mamy gotowe wszystkie niezbędne pakiety. Po pierwsze, zaleca się wyłączenie SElinux (lub ustawienie go w tryb zezwalający):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Przejdź do katalogu, w którym znajdują się wszystkie pakiety, w tym przypadku /root/installer/. Upewnij się, że są tam wszystkie paczki:

$ cd /root/installer
$ ls -1
galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
libzstd-1.3.4-1.el7.x86_64.rpm
MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Zainstalujmy najpierw zależność mariabackup o nazwie socat, a następnie uruchom polecenie yum localinstall, aby zainstalować pakiety RPM i spełnić wszystkie zależności:

$ yum install socat
$ yum localinstall *.rpm

Uruchom usługę MariaDB i sprawdź stan:

$ systemctl start mariadb
$ systemctl status mariadb

Upewnij się, że nie widzisz błędów w procesie. Następnie uruchom skrypt mysql_secure_installation, aby skonfigurować hasło root i wzmocnienie MySQL:

$ mysql_secure_installation

Upewnij się, że hasło roota MariaDB jest identyczne na wszystkich hostach MariaDB. Utwórz użytkownika MariaDB, aby wykonać kopię zapasową i SST. Jest to ważne, jeśli chcemy użyć zalecanej kopii zapasowej mariabackup jako metody SST dla klastra MariaDB, a także do celów tworzenia kopii zapasowych:

$ mysql -uroot -p
MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];

Musimy zmodyfikować domyślny plik konfiguracyjny, aby załadować funkcje klastra MariaDB. Otwórz /etc/my.cnf.d/server.cnf i upewnij się, że istnieją następujące wiersze dla minimalnej konfiguracji:

[mysqld]
log_error = /var/log/mysqld.log

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
innodb_flush_log_at_trx_commit=2
wsrep_sst_method=mariabackup
wsrep_sst_auth=backup_user:P455w0rd
wsrep_node_address=192.168.0.241 # change this

Nie zapomnij zmienić wartości wsrep_node_address na adres IP węzła bazy danych na potrzeby komunikacji klastra MariaDB. Ponadto wartość wsrep_provider może się różnić w zależności od zainstalowanego serwera MariaDB i wersji klastra MariaDB. Znajdź ścieżkę libgalera_smm.so i podaj ją tutaj.

Powtórz te same kroki we wszystkich węzłach bazy danych i jesteśmy teraz gotowi do uruchomienia naszego klastra.

Rozruch klastra

Ponieważ jest to nowy klaster, możemy wybrać dowolny z węzłów MariaDB jako węzeł referencyjny dla procesu ładowania klastra. Wybierzmy mariadb1. Upewnij się, że MariaDB jest najpierw zatrzymana, a następnie uruchom polecenie galera_new_cluster, aby załadować:

$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb

W pozostałych dwóch węzłach (mariadb2 i mariadb3) uruchomimy go za pomocą standardowego polecenia startowego MariaDB:

$ systemctl stop mariadb
$ systemctl start mariadb

Zweryfikuj, czy wszystkie węzły są częścią klastra, patrząc na stan związany z wsrep na każdym węźle:

MariaDB> SHOW STATUS LIKE 'wsrep%';

Upewnij się, że zgłoszony stan jest następujący:

wsrep_local_state_comment     | Synced
wsrep_cluster_size            | 3
wsrep_cluster_status          | Primary

W przypadku MariaDB 10.4 i Galera Cluster 4 możemy uzyskać informacje o członkach klastra bezpośrednio z tabeli mysql.wsrep_cluster_members w dowolnym węźle MariaDB:

$ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
Enter password:
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| node_uuid                            | cluster_uuid                         | node_name     | node_incoming_address |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local  | AUTO                  |
| 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local  | AUTO                  |
| fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local  | AUTO                  |
+--------------------------------------+--------------------------------------+---------------+-----------------------+

Jeśli coś pójdzie nie tak podczas ładowania klastra, sprawdź dziennik błędów MySQL w /var/log/mysqld.log we wszystkich węzłach MariaDB. Po załadowaniu i uruchomieniu klastra nie uruchamiaj ponownie skryptu galera_new_cluster w celu uruchomienia usługi MariaDB. Wystarczy użyć standardowego polecenia „systemctl start/restart mariadb”, chyba że nie ma już węzła bazy danych w stanie PRIMARY. Sprawdź ten wpis na blogu How to Bootstrap MySQL lub MariaDB Cluster, aby zrozumieć, dlaczego ten krok jest krytyczny.

Krok bonusowy

Teraz masz już klaster bazy danych działający bez żadnych funkcji monitorowania i zarządzania. Dlaczego nie zaimportujesz klastra bazy danych do ClusterControl? Zainstaluj ClusterControl na innym oddzielnym serwerze i skonfiguruj bezhasłowe SSH z serwera ClusterControl do wszystkich węzłów bazy danych. Zakładając, że adres IP serwera ClusterControl to 192.168.0.240, uruchom następujące polecenia na serwerze ClusterControl:

$ whoami
root

$ ssh-keygen -t rsa # generate key, press Enter for all prompts
$ ssh-copy-id [email protected] # root password on 192.168.0.241
$ ssh-copy-id [email protected] # root password on 192.168.0.242
$ ssh-copy-id [email protected] # root password on 192.168.0.243

Następnie przejdź do ClusterControl -> Import -> MySQL Galera i wprowadź wymagane dane SSH:

W drugim kroku w sekcji Zdefiniuj serwery MySQL wyłącz opcję „Automatyczne wykrywanie węzłów ” i podaj wszystkie adresy IP węzłów bazy danych i upewnij się, że obok adresu IP znajduje się zielony znacznik wskazujący, że ClusterControl może połączyć się z węzłem przez SSH bez hasła:

Kliknij opcję Importuj i poczekaj na zakończenie zadania importowania. Powinieneś to zobaczyć pod listą klastrów:

Jesteś teraz w dobrych rękach. Należy pamiętać, że ClusterControl domyślnie będzie korzystać z 30-dniowych pełnych funkcji korporacyjnych, a po jego wygaśnięciu domyślnie powróci do wersji Community Edition, która jest na zawsze bezpłatna.


  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 wyświetlić wszystkie lokalizacje w MariaDB

  2. Jak działa UPDATEXML() w MariaDB

  3. Jak działa IFNULL() w MariaDB

  4. MariaDB CURRENT_TIME () Wyjaśnione

  5. Migracja sieci bez przestojów za pomocą klastra MySQL Galera przy użyciu węzła przekaźnikowego