Většina kroků instalace dostupných na internetu pokrývá standardní online instalaci za předpokladu, že hostitelé databáze mají aktivní internetové připojení k úložištím balíčků a splňují všechny závislosti. Instalační kroky a příkazy jsou však pro offline instalaci trochu jiné. Offline instalace je běžnou praxí v přísném a bezpečném prostředí, jako je finanční a vojenský sektor, kvůli dodržování bezpečnostních předpisů, snížení rizik expozice a zachování důvěrnosti.
V tomto příspěvku na blogu nainstalujeme tříuzlový klastr MariaDB v offline prostředí na hostitele CentOS. Zvažte následující tři uzly pro tuto instalaci:
- mariadb1 – 192.168.0.241
- mariadb2 – 192.168.0.242
- mariadb3 – 192.168.0.243
Stáhnout balíčky
Časově nejnáročnější částí je získání všech balíčků potřebných pro naši instalaci. Nejprve přejděte do příslušného úložiště MariaDB, které chceme nainstalovat (v tomto příkladu je náš operační systém 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/
Ujistěte se, že stahujete přesně stejnou vedlejší verzi pro všechny balíčky související s MariaDB. V tomto příkladu jsme stáhli MariaDB verze 10.4.13. V tomto úložišti je spousta balíčků, ale nepotřebujeme je všechny jen ke spuštění MariaDB Clusteru. Některé balíčky jsou zastaralé a slouží k ladění. Pro MariaDB Galera 10.4 a CentOS 7 si musíme stáhnout následující balíčky z úložiště MariaDB 10.4:
- jemalloc
- galera-3/galera-4
- libzstd
- Záloha MariaDB
- Server MariaDB
- Klient MariaDB
- Sdílená MariaDB
- MariaDB common
- Compat MariaDB
Následující příkazy wget by zjednodušily proces stahování:
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
Některé z těchto balíčků jsou závislé na jiných balíčcích. Chcete-li je všechny uspokojit, je pravděpodobně nejlepší připojit obraz ISO operačního systému a nasměrovat správce balíčků yum, aby místo něj použil obraz ISO jako offline základní úložiště. Jinak bychom ztratili spoustu času stahováním/přenosem balíčků z jednoho hostitele/média na druhý.
Pokud hledáte starší balíčky MariaDB, vyhledejte je v jejím archivním úložišti zde. Po stažení přeneste balíčky na všechny databázové servery prostřednictvím jednotky USB, vypalovačky DVD nebo jakéhokoli síťového úložiště připojeného k hostitelům databáze.
Připojit obraz ISO lokálně
Některé ze závislostí je potřeba splnit během instalace a jedním ze způsobů, jak toho snadno dosáhnout, je nastavení offline úložiště yum na databázových serverech. Nejprve si musíme stáhnout ISO obraz CentOS 7 DVD z nejbližšího zrcadlového webu CentOS v adresáři "isos":
$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
Můžete buď přenést bitovou kopii a připojit ji přímo, nebo ji vypálit na disk DVD a použít jednotku DVD a připojit ji k serveru. V tomto příkladu se chystáme připojit obraz ISO jako DVD na server:
$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS
Potom povolte úložiště CentOS-Media (c7-media) a deaktivujte standardní online úložiště (základ, aktualizace, doplňky):
$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media
Nyní jsme připraveni k instalaci.
Instalace a konfigurace serveru MariaDB
Instalační kroky jsou docela jednoduché, pokud máme připraveny všechny potřebné balíčky. Nejprve se doporučuje zakázat SElinux (nebo jej nastavit do permisivního režimu):
$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Přejděte do adresáře, kde jsou umístěny všechny balíčky, v tomto případě /root/installer/. Ujistěte se, že tam jsou všechny balíčky:
$ 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
Nejprve nainstalujme závislost mariabackup nazvanou socat a poté spusťte příkaz yum localinstall k instalaci balíčků RPM a uspokojení všech závislostí:
$ yum install socat
$ yum localinstall *.rpm
Spusťte službu MariaDB a zkontrolujte stav:
$ systemctl start mariadb
$ systemctl status mariadb
Ujistěte se, že v procesu nevidíte žádnou chybu. Poté spusťte skript mysql_secure_installation pro konfiguraci kořenového hesla MySQL a zpevnění:
$ mysql_secure_installation
Ujistěte se, že kořenové heslo MariaDB je stejné na všech hostitelích MariaDB. Vytvořte uživatele MariaDB, který bude provádět zálohování a SST. To je důležité, pokud chceme použít doporučený mariabackup jako metodu SST pro MariaDB Cluster a také pro účely zálohování:
$ 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];
Musíme upravit výchozí konfigurační soubor, aby se nahrály funkce klastru MariaDB. Otevřete /etc/my.cnf.d/server.cnf a ujistěte se, že existují následující řádky pro minimální konfiguraci:
[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
Nezapomeňte změnit hodnotu wsrep_node_address s IP adresou databázového uzlu pro komunikaci MariaDB Cluster. Hodnota wsrep_provider se také může lišit v závislosti na serveru MariaDB a verzi clusteru MariaDB, kterou jste nainstalovali. Vyhledejte cestu libgalera_smm.so a patřičně ji zde zadejte.
Opakujte stejné kroky na všech databázových uzlech a nyní jsme připraveni spustit náš cluster.
Zavedení clusteru
Protože se jedná o nový cluster, můžeme vybrat kterýkoli z uzlů MariaDB, který se stane referenčním uzlem pro proces bootstrapping clusteru. Vyberme mariadb1. Nejprve se ujistěte, že je MariaDB zastavena, a poté spusťte příkaz galera_new_cluster pro zavedení:
$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb
Na dalších dvou uzlech (mariadb2 a mariadb3) jej spustíme pomocí standardního příkazu MariaDB start:
$ systemctl stop mariadb
$ systemctl start mariadb
Ověřte, zda jsou všechny uzly součástí clusteru tím, že se podíváte na stav související s wsrep na každém uzlu:
MariaDB> SHOW STATUS LIKE 'wsrep%';
Ujistěte se, že nahlášený stav je následující:
wsrep_local_state_comment | Synced
wsrep_cluster_size | 3
wsrep_cluster_status | Primary
Pro MariaDB 10.4 a Galera Cluster 4 můžeme získat informace o členech clusteru přímo z tabulky mysql.wsrep_cluster_members na libovolném uzlu 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 |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
Pokud se během zavádění clusteru něco pokazí, zkontrolujte protokol chyb MySQL na adrese /var/log/mysqld.log na všech uzlech MariaDB. Jakmile je cluster bootstrapped a spuštěn, nespouštějte znovu skript galera_new_cluster, abyste spustili službu MariaDB. Mělo by stačit použití standardního příkazu "systemctl start/restart mariadb", pokud již žádný databázový uzel není ve stavu PRIMARY. Podívejte se na tento blogový příspěvek How to Bootstrap MySQL nebo MariaDB Cluster, abyste pochopili, proč je tento krok kritický.
Bonusový krok
Nyní již máte spuštěný databázový cluster bez jakýchkoli funkcí monitorování a správy. Proč neimportujete databázový cluster do ClusterControl? Nainstalujte ClusterControl na jiný samostatný server a nastavte SSH bez hesla ze serveru ClusterControl do všech databázových uzlů. Předpokládejme, že IP server ClusterControl je 192.168.0.240, spusťte na serveru ClusterControl následující příkazy:
$ 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
Potom přejděte na ClusterControl -> Import -> MySQL Galera a zadejte požadované podrobnosti SSH:
Ve druhém kroku v části Definovat servery MySQL vypněte možnost Automatické zjišťování uzlů “ a zadejte všechny IP adresy databázových uzlů a ujistěte se, že je vedle IP adresy zelené zaškrtnutí, což znamená, že ClusterControl je schopen dosáhnout uzlu přes SSH bez hesla:
Klikněte na Importovat a počkejte, dokud se nedokončí úloha importu. Měli byste to vidět pod seznamem clusterů:
Nyní jste v dobrých rukou. Všimněte si, že ClusterControl bude ve výchozím nastavení používat 30denní plné podnikové funkce a po vypršení platnosti se vrátí zpět na Community Edition, která je navždy zdarma.