Att konfigurera ett MariaDB-kluster med Galera Cluster förbättrar tillförlitligheten och förenklar skalningen av din databas. I vår handledning visar vi dig hur du installerar ett Galera-kluster på Ubuntu 20.04.

Kraven för ett Galera Cluster MariaDB

För att installera ett MariaDB Galera-kluster på Ubuntu 20.04 måste du uppfylla följande krav:

  • Flera servrar: Minst tre servrar eller virtuella maskiner krävs för att bygga ett kluster. Alla servrar ska finnas i samma nätverk.
  • Root-rättigheter: Du behöver root-åtkomst eller åtminstone administratörsrättigheter på servrarna.

Hur man konfigurerar Galera Cluster MariaDB på Ubuntu 20.04 steg för steg

Ett MariaDB Galera-kluster är en praktisk databaslösning som erbjuder hög tillgänglighet, dataintegritet och skalbarhet för krävande applikationer. I denna steg-för-steg-guide går vi igenom processen för att konfigurera ett MariaDB Galera-kluster på Ubuntu 20.04. Innan du börjar, se till att du har minst tre servrar eller virtuella maskiner tillgängliga för att konfigurera klustret.

Steg 1: Uppdatera paket

Du bör först uppdatera ditt Ubuntu-system till den senaste versionen. Detta är viktigt för att du ska ha uppdaterade paket och säkerhetsuppdateringar.

Öppna en terminal och kör följande kommando för att uppdatera paketkällorna:

sudo apt update
shell

Installera alla tillgängliga uppdateringar:

sudo apt upgrade -y
shell

Vi rekommenderar också att du tar bort föråldrade eller oanvända paket för att rensa upp på servrarna:

sudo apt autoremove -y
shell

Steg 2: Installera MariaDB på servrarna

Installera nu MariaDB på alla dina servrar. Från och med version 10.1 ingår Galera-paketen i MariaDB-servrarna.

sudo apt install mariadb-server
shell

Efter installationen kan du starta MariaDB-tjänsten:

sudo systemctl start mariadb
shell

Använd följande kommando för att ställa in MariaDB så att det aktiveras automatiskt varje gång systemet startas om:

sudo systemctl enable mariadb
shell

Kontrollera om MariaDB körs:

sudo systemctl status mariadb
shell

Du bör också göra några grundläggande säkerhetsinställningar och konfigurera databasen. För att göra detta startar du installationsguiden:

sudo mysql_secure_installation
shell

Guiden leder dig genom stegen, såsom att ställa in ett root-lösenord, ta bort anonyma användare eller ta bort testdatabasen.

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

Skriptet frågar först efter det aktuella root-lösenordet. Om du installerar MariaDB på Ubuntu 20.04 för första gången trycker du bara på Enter och anger sedan ett nytt lösenord.

Steg 3: Konfigurera Galera Cluster MariaDB-noder

Skapa en cnf fil i katalogen /etc/mysql/conf.d på varje nod för att definiera de Galera-specifika inställningarna.

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

Denna fil innehåller allmänna databasinställningar, såsom binärt protokollformat och standardlagringsmotor. Den innehåller även konfigurationer för Galera-klustret, inklusive klusternamn och klusteradress.

Infoga följande rader för den första noden:

[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
  • Allmänna databasinställningar: Detta inkluderar inställningar som binlog_format=ROW för formatet på binärloggarna och default-storage-engine=innodb för standardlagringsmotorn.
  • Galera-leverantörskonfiguration: Inställningar som wsrep_on=ON används för att aktivera Galera-replikering och wsrep_provider=/usr/lib/galera/libgalera_smm.so för att ange sökvägen till Galera-biblioteket.
  • Galera-klusterkonfiguration: Detta inkluderar klusternamnet (wsrep_cluster_name) och klusteradressen (wsrep_cluster_address), som innehåller IP-adresserna eller värdnamnen för noderna i klustret.
  • Galera-synkroniseringskonfiguration: Konfigurerar metoden för State Snapshot Transfer (SST), t.ex. wsrep_sst_method=rsync.
  • Galera-nodkonfiguration: Definierar IP-adressen eller värdnamnet för den aktuella noden (wsrep_node_address) och namnet på noden (wsrep_node_name).

När du har sparat filen skapar du en för den andra noden:

[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

Fortsätt nu med den sista noden:

[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

Steg 4: Ändra brandväggen på servrarna

Eftersom noderna kommunicerar med varandra via specifika portar måste du justera brandväggsinställningarna.

Öppna följande portar i din brandvägg:

  • Port 3306: Detta är standardporten för MariaDB. Den används för databaskommunikation och förfrågningar.
  • Galera-portar: Förutom standardporten 3306 använder Galera även andra portar för intern kommunikation mellan noderna. Standardintervallet för Galera-portar är vanligtvis 4567, 4568 och 4444 för State Snapshot Transfer (SST).

Du kan definiera brandväggsinställningarna på din Ubuntu-server med följande kommando:

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

Steg 5: Starta Galera Cluster MariaDB

Stoppa MariaDB-tjänsten om den redan körs:

sudo systemctl stop mariadb
shell

Detta kommando startar MariaDB-servern och initialiserar ett nytt Galera-kluster på den första noden:

sudo galera_new_cluster
shell

Kontrollera antalet noder i klustret:

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

Du bör få följande utdata:

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

Den första noden startades framgångsrikt.

Aktivera den andra noden:

systemctl start mariadb
shell

Kontrollera om antalet noder har ökat:

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

I konsolen ser vi:

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

Nu börjar vi den tredje noden:

systemctl start mariadb
shell

Kontrollera om noden fungerar korrekt:

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

Det bör nu finnas tre noder i klustret:

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

Steg 6: Testa replikeringen

Se till att du kan upprätta en anslutning till varje nod i klustret. Använd MariaDB-klienten för att logga in som root-användare eller som en annan användare med tillräckliga rättigheter.

mysql -u root -p
shell

Skapa en ny testdatabas på en av noderna i klustret:

CREATE DATABASE test_db;
sql

Logga in på de andra noderna och kontrollera om testdatabasen är tillgänglig:

SHOW DATABASES;
sql

Testdatabasen ska visas i listan över databaser:

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

Lägg till en ny testtabell i testdatabasen:

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

Ange några testdata i kolumn name i testtabellen:

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

Kontrollera de andra noderna för att se om testtabellen och de infogade uppgifterna har överförts:

USE test_db;
SELECT * FROM test_table;
sql

Utmatningen visar en lista över personer med deras namn och ID:

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

För att uppdatera en datapost i testtabellen:

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

Försök att radera en datapost:

DELETE FROM test_table WHERE name = 'Bob';
sql

Kontrollera de andra noderna för att se om uppdateringarna och raderingarna har replikerats:

SELECT * FROM test_table;
sql

Ändringarna visas korrekt på alla noder:

+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
sql
Gå till huvudmeny