Jak nastavit cluster MariaDB Galera na Ubuntu 20.04
Nastavení clusteru MariaDB s Galera Cluster zvyšuje spolehlivost a zjednodušuje škálování vaší databáze. V našem tutoriálu vám ukážeme, jak nainstalovat Galera cluster na Ubuntu 20.04.
Požadavky na Galera Cluster MariaDB
Chcete-li nainstalovat cluster MariaDB Galera na Ubuntu 20.04, musíte splnit následující požadavky:
- Více serverů: K vytvoření clusteru jsou zapotřebí alespoň tři servery nebo virtuální stroje. Všechny servery by měly být ve stejné síti.
- Práva root: Potřebujete root přístup nebo alespoň administrátorská práva na serverech.
Jak krok za krokem nastavit Galera Cluster MariaDB na Ubuntu 20.04
Cluster MariaDB Galera je praktické databázové řešení, které poskytuje vysokou dostupnost, integritu dat a škálovatelnost pro náročné aplikace. V tomto podrobném průvodci vás provedeme procesem nastavení clusteru MariaDB Galera na Ubuntu 20.04. Než začnete, ujistěte se, že máte k dispozici alespoň tři servery nebo virtuální stroje pro nastavení clusteru.
Krok 1: Aktualizujte balíčky
Nejprve byste měli aktualizovat svůj systém Ubuntu na nejnovější verzi. To je nezbytné, abyste měli k dispozici aktuální balíčky a bezpečnostní aktualizace.
Otevřete terminál a proveďte následující příkaz k aktualizaci zdrojů balíčků:
sudo apt updateshellNainstalujte všechny dostupné aktualizace:
sudo apt upgrade -yshellDoporučujeme také odstranit zastaralé nebo nepoužívané balíčky, aby se servery vyčistily:
sudo apt autoremove -yshellKrok 2: Nainstalujte MariaDB na servery
Nyní nainstalujte MariaDB na všechny vaše servery. Od verze 10.1 jsou balíčky Galera součástí serverů MariaDB.
sudo apt install mariadb-servershellPo instalaci můžete spustit službu MariaDB:
sudo systemctl start mariadbshellPomocí následujícího příkazu nastavte automatickou aktivaci MariaDB při každém restartu systému:
sudo systemctl enable mariadbshellZkontrolujte, zda běží MariaDB:
sudo systemctl status mariadbshellMěli byste také provést základní nastavení zabezpečení a nakonfigurovat databázi. Chcete-li to provést, spusťte průvodce nastavením:
sudo mysql_secure_installationshellPrůvodce vás provede jednotlivými kroky, jako je nastavení hesla root, odstranění anonymních uživatelů nebo odstranění testovací databáze.
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] YshellSkript nejprve požádá o aktuální heslo root. Pokud instalujete MariaDB na Ubuntu 20.04 poprvé, stačí stisknout klávesu Enter a zadat nové heslo.
Krok 3: Konfigurace uzlů Galera Cluster MariaDB
Vytvořte soubor cnf v adresáři /etc/mysql/conf.d na každém uzlu, abyste definovali nastavení specifická pro Galeru.
nano /etc/mysql/conf.d/galera.cnfshellTento soubor obsahuje obecná nastavení databáze, jako je formát binárního protokolu a výchozí úložný engine. Obsahuje také konfigurace pro cluster Galera, včetně názvu clusteru a adresy clusteru.
Vložte následující řádky pro první uzel:
[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://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_1-ip-address"
wsrep_node_name="node_1"shell- Obecná nastavení databáze: Patří sem nastavení jako
binlog_format=ROWpro formát binárních protokolů adefault-storage-engine=innodbpro výchozí úložný engine. - Konfigurace poskytovatele Galera: Nastavení jako
wsrep_on=ONse používá k povolení replikace Galera awsrep_provider=/usr/lib/galera/libgalera_smm.sok určení cesty k knihovně Galera. - Konfigurace clusteru Galera: Zahrnuje název clusteru (
wsrep_cluster_name) a adresu clusteru (wsrep_cluster_address), která obsahuje IP adresy nebo názvy hostitelů uzlů v clusteru. - Konfigurace synchronizace Galera: Konfiguruje metodu pro přenos stavového snímku (SST), např.
wsrep_sst_method=rsync. - Konfigurace uzlu Galera: Definuje IP adresu nebo název hostitele aktuálního uzlu (
wsrep_node_address) a název uzlu (wsrep_node_name).
Po uložení souboru vytvořte soubor pro druhý uzel:
[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://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_2-ip-address"
wsrep_node_name="node_2"shellNyní pokračujte s posledním uzlem:
[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://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_3-ip-address"
wsrep_node_name="node_3"shellKrok 4: Změňte nastavení brány firewall na serverech
Jelikož uzly mezi sebou komunikují prostřednictvím specifických portů, je nutné upravit nastavení brány firewall.
Otevřete následující porty ve vaší bráně firewall:
- Port 3306: Jedná se o standardní port pro MariaDB. Používá se pro komunikaci s databází a požadavky.
- Porty Galera: Kromě standardního portu 3306 používá Galera také další porty pro interní komunikaci mezi uzly. Standardní rozsah portů Galera je obvykle 4567, 4568 a 4444 pro State Snapshot Transfer (SST).
Nastavení brány firewall na serveru Ubuntu můžete definovat pomocí následujícího příkazu:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellKrok 5: Spusťte Galera Cluster MariaDB
Zastavte službu MariaDB, pokud již běží:
sudo systemctl stop mariadbshellTento příkaz spustí server MariaDB a inicializuje nový cluster Galera na prvním uzlu:
sudo galera_new_clustershellZkontrolujte počet uzlů v clusteru:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellMěli byste získat následující výstup:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellPrvní uzel byl úspěšně spuštěn.
Aktivujte druhý uzel:
systemctl start mariadbshellZkontrolujte, zda se počet uzlů zvýšil:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellV konzoli vidíme:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellNyní spustíme třetí uzel:
systemctl start mariadbshellZkontrolujte, zda uzel funguje správně:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellV clusteru by nyní měly být tři uzly:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellKrok 6: Otestujte replikaci
Ujistěte se, že můžete navázat spojení se všemi uzly v clusteru. Pomocí klienta MariaDB se přihlaste jako uživatel root nebo jako jiný uživatel s dostatečnými oprávněními.
mysql -u root -pshellVytvořte novou testovací databázi na jednom z uzlů v clusteru:
CREATE DATABASE test_db;sqlPřihlaste se k ostatním uzlům a zkontrolujte, zda je testovací databáze dostupná:
SHOW DATABASES;sqlTestovací databáze by se měla objevit v seznamu databází:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlPřidejte novou testovací tabulku do testovací databáze:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlZadejte některé testovací údaje do sloupce name testovací tabulky:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlZkontrolujte ostatní uzly, zda byla přenesena testovací tabulka a vložené údaje:
USE test_db;
SELECT * FROM test_table;sqlVýstup nám ukazuje seznam osob s jejich jmény a identifikačními čísly:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlAktualizace datového záznamu v testovací tabulce:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlZkuste smazat datový záznam:
DELETE FROM test_table WHERE name = 'Bob';sqlZkontrolujte ostatní uzly, zda byly aktualizace a odstranění replikovány:
SELECT * FROM test_table;sqlZměny se úspěšně projeví na všech uzlech:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql