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 update
shell

Nainštalujte všetky dostupné aktualizácie:

sudo apt upgrade -y
shell

Odporúčame tiež odstrániť zastarané alebo nepoužívané balíky, aby ste vyčistili servery:

sudo apt autoremove -y
shell

Krok 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-server
shell

Po inštalácii môžete spustiť službu MariaDB:

sudo systemctl start mariadb
shell

Pomocou nasledujúceho príkazu nastavte automatickú aktiváciu MariaDB pri každom reštarte systému:

sudo systemctl enable mariadb
shell

Skontrolujte, či je MariaDB spustená:

sudo systemctl status mariadb
shell

Mali by ste tiež vykonať niektoré základné nastavenia zabezpečenia a nakonfigurovať databázu. Na to spustite sprievodcu nastavením:

sudo mysql_secure_installation
shell

Sprievodca 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] Y
shell

Skript 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.cnf
shell

Tento 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=ROW pre formát binárnych protokolov a default-storage-engine=innodb pre predvolený úložný modul.
  • Konfigurácia poskytovateľa Galera: Nastavenia ako wsrep_on=ON sa používajú na povolenie replikácie Galera a wsrep_provider=/usr/lib/galera/libgalera_smm.so na 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"
shell

Teraz 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"
shell

Krok 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/udp
shell

Krok 5: Spustite Galera Cluster MariaDB

Zastavte službu MariaDB, ak už beží:

sudo systemctl stop mariadb
shell

Tento príkaz spustí server MariaDB a inicializuje nový cluster Galera na prvom uzle:

sudo galera_new_cluster
shell

Skontrolujte počet uzlov v klastri:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
shell

Mali by ste dostať nasledujúci výstup:

+---------------------------+-------------+
| Variable_name        | Value       |
+--------------------------+--------------+
| wsrep_cluster_size | 1              |
+--------------------------+------------ -+
shell

Prvý uzol bol úspešne spustený.

Aktivujte druhý uzol:

systemctl start mariadb
shell

Skontrolujte, či sa počet uzlov zvýšil:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
shell

V konzole vidíme:

+---------------------------+-------------+
| Variable_name        | Value       |
+--------------------------+--------------+
| wsrep_cluster_size | 2               |
+--------------------------+--------------+
shell

Teraz začíname tretí uzol:

systemctl start mariadb
shell

Skontrolujte, či uzol funguje správne:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
shell

V klastri by teraz mali byť tri uzly:

+---------------------------+-------------+
| Variable_name        | Value       |
+--------------------------+--------------+
| wsrep_cluster_size | 3              |
+--------------------------+------------ -+
shell

Krok 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 -p
shell

Vytvorte novú testovaciu databázu na jednom z uzlov v klastri:

CREATE DATABASE test_db;
sql

Prihláste sa do ostatných uzlov a skontrolujte, či je testovacia databáza dostupná:

SHOW DATABASES;
sql

Testovacia databáza by sa mala zobraziť v zozname databáz:

+-------------------------------+
| Database                        |
+-------------------------------+
| information_schema   |
| mysql                              |
| performance_schema |
| test_db                          | 
| sys                                  |
+------------------------------+
sql

Pridajte novú testovaciu tabuľku do testovacej databázy:

USE test_db;
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);
sql

Zadajte niektoré testovacie údaje do stĺpca name testovacej tabuľky:

INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');
sql

Skontrolujte ostatné uzly, či bola testovacia tabuľka a vložené údaje prenesené:

USE test_db;
SELECT * FROM test_table;
sql

Výstup nám ukazuje zoznam osôb s ich menami a identifikačnými číslami:

+----+-----------+
| id | name    |
+----+-----------+
| 1  | Alice     |
| 2  | Bob       |
| 3  | Charlie |
+----+----------+
sql

Aktualizácia záznamu údajov v testovacej tabuľke:

UPDATE test_table SET name = 'David' WHERE name = 'Alice';
sql

Skúste vymazať dátový záznam:

DELETE FROM test_table WHERE name = 'Bob';
sql

Skontrolujte ostatné uzly, či boli aktualizácie a vymazania replikované:

SELECT * FROM test_table;
sql

Zmeny sa úspešne zobrazia na každom uzle:

+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
sql
Prejsť na hlavné menu