Hur man konfigurerar ett MariaDB Galera-kluster på Ubuntu 20.04
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 updateshellInstallera alla tillgängliga uppdateringar:
sudo apt upgrade -yshellVi rekommenderar också att du tar bort föråldrade eller oanvända paket för att rensa upp på servrarna:
sudo apt autoremove -yshellSteg 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-servershellEfter installationen kan du starta MariaDB-tjänsten:
sudo systemctl start mariadbshellAnvä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 mariadbshellKontrollera om MariaDB körs:
sudo systemctl status mariadbshellDu 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_installationshellGuiden 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] YshellSkriptet 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.cnfshellDenna 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=ROWför formatet på binärloggarna ochdefault-storage-engine=innodbför standardlagringsmotorn. - Galera-leverantörskonfiguration: Inställningar som
wsrep_on=ONanvänds för att aktivera Galera-replikering ochwsrep_provider=/usr/lib/galera/libgalera_smm.sofö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"shellFortsä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"shellSteg 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/udpshellSteg 5: Starta Galera Cluster MariaDB
Stoppa MariaDB-tjänsten om den redan körs:
sudo systemctl stop mariadbshellDetta kommando startar MariaDB-servern och initialiserar ett nytt Galera-kluster på den första noden:
sudo galera_new_clustershellKontrollera antalet noder i klustret:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellDu bör få följande utdata:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellDen första noden startades framgångsrikt.
Aktivera den andra noden:
systemctl start mariadbshellKontrollera om antalet noder har ökat:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellI konsolen ser vi:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellNu börjar vi den tredje noden:
systemctl start mariadbshellKontrollera om noden fungerar korrekt:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellDet bör nu finnas tre noder i klustret:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellSteg 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 -pshellSkapa en ny testdatabas på en av noderna i klustret:
CREATE DATABASE test_db;sqlLogga in på de andra noderna och kontrollera om testdatabasen är tillgänglig:
SHOW DATABASES;sqlTestdatabasen ska visas i listan över databaser:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlLägg till en ny testtabell i testdatabasen:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlAnge några testdata i kolumn name i testtabellen:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlKontrollera de andra noderna för att se om testtabellen och de infogade uppgifterna har överförts:
USE test_db;
SELECT * FROM test_table;sqlUtmatningen visar en lista över personer med deras namn och ID:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlFör att uppdatera en datapost i testtabellen:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlFörsök att radera en datapost:
DELETE FROM test_table WHERE name = 'Bob';sqlKontrollera 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