Ako nastaviť cluster MariaDB Galera na Ubuntu 20.04
Nastavenie klastra MariaDB s Galera Cluster zvyšuje spoľahlivosť a zjednodušuje škálovanie vašej databázy. V našom tutoriáli vám ukážeme, ako nainštalovať Galera cluster na Ubuntu 20.04.
Požiadavky na Galera Cluster MariaDB
Na inštaláciu klastra MariaDB Galera na Ubuntu 20.04 musíte splniť nasledujúce požiadavky:
- Viac serverov: Na vytvorenie klastra sú potrebné minimálne tri servery alebo virtuálne stroje. Všetky servery by mali byť v tej istej sieti.
- Práva root: Potrebujete prístup root alebo aspoň administratívne práva na serveroch.
Ako krok za krokom nastaviť Galera Cluster MariaDB na Ubuntu 20.04
Cluster MariaDB Galera je praktické databázové riešenie, ktoré poskytuje vysokú dostupnosť, integritu údajov a škálovateľnosť pre náročné aplikácie. V tomto podrobnom návode vás prevedieme procesom nastavenia clusteru MariaDB Galera v systéme Ubuntu 20.04. Než začnete, uistite sa, že máte k dispozícii aspoň tri servery alebo virtuálne stroje na nastavenie clusteru.
Krok 1: Aktualizácia balíkov
Najskôr by ste mali aktualizovať svoj systém Ubuntu na najnovšiu verziu. Je to nevyhnutné, aby ste mali aktuálne balíky a bezpečnostné aktualizácie.
Otvorte terminál a vykonajte nasledujúci príkaz na aktualizáciu zdrojov balíkov:
sudo apt updateshellNainštalujte všetky dostupné aktualizácie:
sudo apt upgrade -yshellOdporúčame tiež odstrániť zastarané alebo nepoužívané balíky, aby ste vyčistili servery:
sudo apt autoremove -yshellKrok 2: Inštalácia MariaDB na servery
Teraz nainštalujte MariaDB na všetky svoje servery. Od verzie 10.1 sú balíky Galera súčasťou serverov MariaDB.
sudo apt install mariadb-servershellPo inštalácii môžete spustiť službu MariaDB:
sudo systemctl start mariadbshellPomocou nasledujúceho príkazu nastavte automatickú aktiváciu MariaDB pri každom reštarte systému:
sudo systemctl enable mariadbshellSkontrolujte, či je MariaDB spustená:
sudo systemctl status mariadbshellMali by ste tiež vykonať niektoré základné nastavenia zabezpečenia a nakonfigurovať databázu. Na to spustite sprievodcu nastavením:
sudo mysql_secure_installationshellSprievodca vás prevedie jednotlivými krokmi, ako je nastavenie hesla root, odstránenie anonymných používateľov alebo odstránenie testovacej databázy.
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 najprv požiada o aktuálne heslo root. Ak inštalujete MariaDB na Ubuntu 20.04 po prvýkrát, stačí stlačiť kláves Enter a potom zadať nové heslo.
Krok 3: Konfigurácia uzlov Galera Cluster MariaDB
Vytvorte súbor cnf v adresári /etc/mysql/conf.d na každom uzle, aby ste definovali nastavenia špecifické pre Galera.
nano /etc/mysql/conf.d/galera.cnfshellTento súbor obsahuje všeobecné nastavenia databázy, ako napríklad formát binárneho protokolu a predvolený úložný modul. Obsahuje tiež konfigurácie pre cluster Galera, vrátane názvu a adresy clusteru.
Vložte nasledujúce riadky pre prvý uzol:
[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- Všeobecné nastavenia databázy: Patrí sem napríklad nastavenie
binlog_format=ROWpre formát binárnych protokolov adefault-storage-engine=innodbpre predvolený úložný modul. - Konfigurácia poskytovateľa Galera: Nastavenia ako
wsrep_on=ONsa používajú na povolenie replikácie Galera awsrep_provider=/usr/lib/galera/libgalera_smm.sona určenie cesty k knižnici Galera. - Konfigurácia klastra Galera: Zahŕňa názov klastra (
wsrep_cluster_name) a adresu klastra (wsrep_cluster_address), ktorá obsahuje IP adresy alebo názvy hostiteľov uzlov v klastri. - Konfigurácia synchronizácie Galera: Konfiguruje metódu pre State Snapshot Transfer (SST), napr.
wsrep_sst_method=rsync. - Konfigurácia uzla Galera: Definuje IP adresu alebo názov hostiteľa aktuálneho uzla (
wsrep_node_address) a názov uzla (wsrep_node_name).
Po uložení súboru vytvorte súbor pre druhý uzol:
[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"shellTeraz pokračujte s posledným uzlom:
[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: Zmeňte firewall na serveroch
Keďže uzly komunikujú medzi sebou prostredníctvom špecifických portov, je potrebné upraviť nastavenia brány firewall.
Otvorte nasledujúce porty vo vašej bráne firewall:
- Port 3306: Toto je štandardný port pre MariaDB. Používa sa na komunikáciu s databázou a na požiadavky.
- Porty Galera: Okrem štandardného portu 3306 používa Galera aj iné porty pre internú komunikáciu medzi uzlami. Štandardný rozsah portov Galera je zvyčajne 4567, 4568 a 4444 pre State Snapshot Transfer (SST).
Nastavenia brány firewall na serveri Ubuntu môžete definovať pomocou nasledujúceho príkazu:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellKrok 5: Spustite Galera Cluster MariaDB
Zastavte službu MariaDB, ak už beží:
sudo systemctl stop mariadbshellTento príkaz spustí server MariaDB a inicializuje nový cluster Galera na prvom uzle:
sudo galera_new_clustershellSkontrolujte počet uzlov v klastri:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellMali by ste dostať nasledujúci výstup:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellPrvý uzol bol úspešne spustený.
Aktivujte druhý uzol:
systemctl start mariadbshellSkontrolujte, či sa počet uzlov zvýšil:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellV konzole vidíme:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellTeraz začíname tretí uzol:
systemctl start mariadbshellSkontrolujte, či uzol funguje správne:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellV klastri by teraz mali byť tri uzly:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellKrok 6: Otestujte replikáciu
Uistite sa, že môžete nadviazať spojenie so všetkými uzlami v klastri. Pomocou klienta MariaDB sa prihláste ako používateľ root alebo iný používateľ s dostatočnými právami.
mysql -u root -pshellVytvorte novú testovaciu databázu na jednom z uzlov v klastri:
CREATE DATABASE test_db;sqlPrihláste sa do ostatných uzlov a skontrolujte, či je testovacia databáza dostupná:
SHOW DATABASES;sqlTestovacia databáza by sa mala zobraziť v zozname databáz:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlPridajte novú testovaciu tabuľku do testovacej databázy:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlZadajte niektoré testovacie údaje do stĺpca name testovacej tabuľky:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlSkontrolujte ostatné uzly, či bola testovacia tabuľka a vložené údaje prenesené:
USE test_db;
SELECT * FROM test_table;sqlVýstup nám ukazuje zoznam osôb s ich menami a identifikačnými číslami:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlAktualizácia záznamu údajov v testovacej tabuľke:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlSkúste vymazať dátový záznam:
DELETE FROM test_table WHERE name = 'Bob';sqlSkontrolujte ostatné uzly, či boli aktualizácie a vymazania replikované:
SELECT * FROM test_table;sqlZmeny sa úspešne zobrazia na každom uzle:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql