Vyvažování zátěže a klastrování jsou v produkčním prostředí velmi důležité pro dosažení vysoké dostupnosti vašeho databázového systému. MariaDB Galera Cluster poskytuje multimaster clusteringové řešení a podporuje XtraDB/InnoDB storage engine. Multi-master cluster umožňuje čtení a zápis do libovolného uzlu clusteru. Pokud upravíte data na libovolném uzlu, budou replikována do všech ostatních uzlů. Cluster Galera také podporuje cloudová a WAN prostředí k vybudování distribuovaného clusteru napříč zeměmi a kontinenty.
V tomto příspěvku si ukážeme, jak nastavit tříuzlový cluster MariaDB Galera na serveru Ubuntu 20.04.
Předpoklady
- Tři servery se systémem Ubuntu 20.04.
- Na serveru je nakonfigurováno heslo uživatele root.
Začínáme
Než začnete, budete muset aktualizovat systémové balíčky na nejnovější verzi. Můžete je aktualizovat pomocí následujícího příkazu:
apt-get update -y
Jakmile je váš server aktualizován, můžete přejít k dalšímu kroku.
Nainstalujte server MariaDB
Nejprve budete muset nainstalovat server MariaDB na všechny uzly. Můžete jej nainstalovat spuštěním následujícího příkazu:
apt-get install mariadb-server -y
Po dokončení instalace spusťte službu MariaDB a povolte jejich spuštění při restartu systému:
systemctl start mariadb
systemctl status mariadb
Dále budete muset zabezpečit instalaci MariaDB a nastavit root heslo MariaDB na každém uzlu. Můžete to udělat pomocí následujícího příkazu:
mysql_secure_installation
Budete požádáni o nastavení rootovského hesla MariaDB, jak je uvedeno níže:
Enter current password for root (enter for none): Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Jakmile bude váš server MariaDB zabezpečen, můžete přejít k dalšímu kroku.
Konfigurovat cluster Galera
Dále budete muset vytvořit konfigurační soubor Galera na každém uzlu, aby každý uzel mohl mezi sebou komunikovat.
Na prvním uzlu vytvořte soubor galera.cnf pomocí následujícího příkazu:
nano /etc/mysql/conf.d/galera.cnf
Přidejte následující řádky:
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="node1-ip-address" wsrep_node_name="node1"
Po dokončení uložte a zavřete soubor.
Na druhém uzlu vytvořte soubor galera.cnf pomocí následujícího příkazu:
nano /etc/mysql/conf.d/galera.cnf
Přidejte následující řádky:
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="node2-ip-address" wsrep_node_name="node2"
Po dokončení uložte a zavřete soubor.
Na třetím uzlu vytvořte soubor galera.cnf pomocí následujícího příkazu:
nano /etc/mysql/conf.d/galera.cnf
Přidejte následující řádky:
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="node3-ip-address" wsrep_node_name="node3"
Po dokončení uložte a zavřete soubor.
Inicializace clusteru Galera
V tomto okamžiku jsou všechny uzly nakonfigurovány tak, aby spolu komunikovaly.
Dále budete muset zastavit službu MariaDB na všech uzlech. Pro zastavení služby MariaDB můžete spustit následující příkaz:
systemctl stop mariadb
Na prvním uzlu inicializujte cluster MariaDB Galera pomocí následujícího příkazu:
galera_new_cluster
Nyní zkontrolujte stav clusteru pomocí následujícího příkazu:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Měli byste vidět následující výstup:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
Na druhém uzlu spusťte službu MariaDB následujícím příkazem:
systemctl start mariadb
Dále zkontrolujte stav clusteru MariaDB Galera pomocí následujícího příkazu:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Měli byste vidět následující výstup:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
Na třetím uzlu spusťte službu MariaDB následujícím příkazem:
systemctl start mariadb
Dále zkontrolujte stav clusteru MariaDB Galera pomocí následujícího příkazu:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Měli byste vidět následující výstup:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
V tomto okamžiku je inicializován cluster MariaDB Galera. Nyní můžete přejít k dalšímu kroku.
Ověřit replikaci clusteru
Dále budete muset ověřit, zda replikace funguje nebo ne.
Na prvním uzlu se připojte k MariaDB pomocí následujícího příkazu:
mysql -u root -p
Jakmile budete připojeni, vytvořte databázi pomocí následujícího příkazu:
MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;
Dále ukončete MariaDB pomocí následujícího příkazu:
MariaDB [(none)]> exit;
Dále přejděte do druhého uzlu a přihlaste se do MariaDB pomocí následujícího příkazu:
mysql -u root -p
Dále spusťte následující příkaz pro zobrazení všech databází:
MariaDB [(none)]> show databases;
Měli byste vidět, že obě databáze, které jsme vytvořili na prvním uzlu, jsou replikovány na druhém uzlu:
+--------------------+ | Database | +--------------------+ | db1 | | db2 | | information_schema | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.001 sec)
Dále přejděte do třetího uzlu a přihlaste se do MariaDB pomocí následujícího příkazu:
mysql -u root -p
Dále spusťte následující příkaz pro zobrazení všech databází:
MariaDB [(none)]> show databases;
Měli byste vidět, že obě databáze, které jsme vytvořili na prvním uzlu, jsou replikovány na třetím uzlu:
+--------------------+ | Database | +--------------------+ | db1 | | db2 | | information_schema | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.001 sec)
Závěr
Ve výše uvedené příručce jsme se naučili, jak nastavit tříuzlový cluster MariaDB Galera na serveru Ubuntu 20.04. Nyní můžete snadno přidat další uzly do clusteru MariaDB Galera. Neváhejte se mě zeptat, pokud máte nějaké otázky.