A MariaDB klaszter Galera Cluster segítségével történő beállítása javítja az adatbázis megbízhatóságát és egyszerűsíti annak méretezését. Oktatóanyagunkban bemutatjuk, hogyan telepítheti a Galera klasztert az Ubuntu 20.04 rendszerre.

A Galera Cluster MariaDB követelményei

A MariaDB Galera klaszter Ubuntu 20.04 rendszerre történő telepítéséhez a következő követelményeknek kell megfelelnie:

  • Több szerver: A klaszter létrehozásához legalább három szerver vagy virtuális gép szükséges. Minden szervernek ugyanazon a hálózaton kell lennie.
  • Root jogok: Root hozzáférésre vagy legalább adminisztrátori jogokra van szükség a szervereken.

Hogyan állítsuk be lépésről lépésre a Galera Cluster MariaDB-t Ubuntu 20.04 rendszeren

A MariaDB Galera klaszter egy praktikus adatbázis-megoldás, amely magas rendelkezésre állást, adatintegritást és skálázhatóságot biztosít igényes alkalmazások számára. Ebben a lépésről lépésre bemutatott útmutatóban végigvezetjük Önt a MariaDB Galera klaszter Ubuntu 20.04 rendszeren történő beállításának folyamatán. Mielőtt elkezdené, győződjön meg arról, hogy legalább három szerver vagy virtuális gép áll rendelkezésre a klaszter beállításához.

1. lépés: Csomagok frissítése

Először frissítse Ubuntu rendszerét a legújabb verzióra. Ez elengedhetetlen ahhoz, hogy a csomagok és a biztonsági frissítések naprakészek legyenek.

Nyisson meg egy terminált, és futtassa a következő parancsot a csomagforrások frissítéséhez:

sudo apt update
shell

Telepítsen minden elérhető frissítést:

sudo apt upgrade -y
shell

A szerverek tisztításához javasoljuk az elavult vagy nem használt csomagok eltávolítását is:

sudo apt autoremove -y
shell

2. lépés: Telepítse a MariaDB-t a szerverekre

Most telepítse a MariaDB-t az összes szerverére. A 10.1-es verziótól kezdve a Galera csomagok a MariaDB szerverekhez vannak csomagolva.

sudo apt install mariadb-server
shell

A telepítés után elindíthatja a MariaDB szolgáltatást:

sudo systemctl start mariadb
shell

A következő paranccsal állíthatja be, hogy a MariaDB automatikusan aktiválódjon minden rendszerindításkor:

sudo systemctl enable mariadb
shell

Ellenőrizze, hogy a MariaDB fut-e:

sudo systemctl status mariadb
shell

El kell végeznie néhány alapvető biztonsági beállítást és konfigurálnia kell az adatbázist. Ehhez indítsa el a telepítő varázslót:

sudo mysql_secure_installation
shell

A varázsló végigvezeti Önt a lépéseken, például a root jelszó beállításán, az anonim felhasználók eltávolításán vagy a teszt adatbázis eltávolításán.

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

A szkript először a jelenlegi root jelszót kéri. Ha először telepíti a MariaDB-t az Ubuntu 20.04-re, egyszerűen nyomja meg az Enter billentyűt, majd adjon meg egy új jelszót.

3. lépés: Galera Cluster MariaDB csomópontok konfigurálása

Hozzon létre egy cnf fájlt a /etc/mysql/conf.d könyvtárban minden csomóponton, hogy meghatározza a Galera-specifikus beállításokat.

nano /etc/mysql/conf.d/galera.cnf
shell

Ez a fájl általános adatbázis-beállításokat tartalmaz, például a bináris protokoll formátumát és az alapértelmezett tároló motort. Emellett a Galera klaszter konfigurációit is tartalmazza, beleértve a klaszter nevét és címét.

Az első csomópont esetében illessze be a következő sorokat:

[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
  • Általános adatbázisbeállítások: Ide tartoznak olyan beállítások, mint binlog_format=ROW a bináris naplók formátumához és default-storage-engine=innodb az alapértelmezett tárolómotorhoz.
  • Galera szolgáltató konfiguráció: Az olyan beállítások, mint wsrep_on=ON, a Galera replikáció engedélyezésére szolgálnak, wsrep_provider=/usr/lib/galera/libgalera_smm.so pedig a Galera könyvtár elérési útjának megadására.
  • Galera klaszter konfiguráció: Ide tartozik a klaszter neve (wsrep_cluster_name) és a klaszter címe (wsrep_cluster_address), amely a klaszter csomópontjainak IP-címeit vagy gazdanevét tartalmazza.
  • Galera szinkronizálás konfigurációja: Beállítja a State Snapshot Transfer (SST) módszert, pl. wsrep_sst_method=rsync.
  • Galera csomópont konfiguráció: Meghatározza az aktuális csomópont IP-címét vagy gazdanevét (wsrep_node_address) és a csomópont nevét (wsrep_node_name).

Miután elmentette a fájlt, hozzon létre egyet a második csomópont számára:

[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

Most folytassa az utolsó csomóponttal:

[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

4. lépés: A szerverek tűzfalának módosítása

Mivel a csomópontok meghatározott portokon keresztül kommunikálnak egymással, módosítania kell a tűzfal beállításait.

Nyissa meg a következő portokat a tűzfalon:

  • 3306-os port: Ez a MariaDB standard portja. Adatbázis-kommunikációra és lekérdezésekre használják.
  • Galera portok: A standard 3306-os porton kívül a Galera más portokat is használ a csomópontok közötti belső kommunikációhoz. A Galera portok standard tartománya általában 4567, 4568 és 4444 a State Snapshot Transfer (SST) számára.

Az Ubuntu szerver tűzfal beállításait a következő paranccsal határozhatja meg:

sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udp
shell

5. lépés: Indítsa el a Galera Cluster MariaDB-t

Állítsa le a MariaDB szolgáltatást, ha már fut:

sudo systemctl stop mariadb
shell

Ez a parancs elindítja a MariaDB szervert és inicializál egy új Galera klasztert az első csomóponton:

sudo galera_new_cluster
shell

Ellenőrizze a klaszter csomópontjainak számát:

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

A következő kimenetet kell kapnia:

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

Az első csomópont sikeresen elindult.

Aktiválja a második csomópontot:

systemctl start mariadb
shell

Ellenőrizze, hogy nőtt-e a csomópontok száma:

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

A konzolban a következőket látjuk:

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

Most kezdjük el a harmadik csomópontot:

systemctl start mariadb
shell

Ellenőrizze, hogy a csomópont megfelelően működik-e:

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

Most már három csomópontnak kell lennie a klaszterben:

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

6. lépés: Tesztelje a replikációt

Győződjön meg arról, hogy minden csomóponttal kapcsolatot tud létesíteni a klaszterben. A MariaDB kliens segítségével jelentkezzen be root felhasználóként vagy más, megfelelő jogosultságokkal rendelkező felhasználóként.

mysql -u root -p
shell

Hozzon létre egy új tesztadatbázist a fürt egyik csomópontján:

CREATE DATABASE test_db;
sql

Jelentkezzen be a többi csomópontra, és ellenőrizze, hogy a tesztadatbázis elérhető-e:

SHOW DATABASES;
sql

A tesztadatbázisnak meg kell jelennie az adatbázisok listájában:

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

Adjon hozzá egy új teszt táblázatot a teszt adatbázishoz:

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

Írjon be néhány tesztadatot a teszt táblázat name oszlopába:

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

Ellenőrizze a többi csomópontot, hogy a teszt táblázat és a beillesztett adatok átkerültek-e:

USE test_db;
SELECT * FROM test_table;
sql

A kimenet megmutatja nekünk a személyek listáját a nevükkel és azonosítójukkal együtt:

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

Adatrekord frissítése a teszt táblázatban:

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

Próbáljon meg törölni egy adatrekordot:

DELETE FROM test_table WHERE name = 'Bob';
sql

Ellenőrizze a többi csomópontot, hogy a frissítések és törlések replikálódtak-e:

SELECT * FROM test_table;
sql

A változások minden csomóponton sikeresen megjelennek:

+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
sql
Ugrás a főmenübe