Sådan konfigureres en MariaDB Galera-klynge på Ubuntu 20.04
Opsætning af en MariaDB-klynge med Galera Cluster forbedrer pålideligheden og forenkler skaleringen af din database. I vores vejledning viser vi dig, hvordan du installerer en Galera-klynge på Ubuntu 20.04.
Kravene til en Galera Cluster MariaDB
For at installere en MariaDB Galera-klynge på Ubuntu 20.04 skal du opfylde følgende krav:
- Flere servere: Der kræves mindst tre servere eller virtuelle maskiner for at oprette en klynge. Alle servere skal være på samme netværk.
- Root-rettigheder: Du skal have root-adgang eller mindst administratorrettigheder på serverne.
Sådan konfigureres Galera Cluster MariaDB på Ubuntu 20.04 trin for trin
En MariaDB Galera-klynge er en praktisk databaseløsning, der giver høj tilgængelighed, dataintegritet og skalerbarhed til krævende applikationer. I denne trinvise vejledning vil vi guide dig gennem processen med at opsætte en MariaDB Galera-klynge på Ubuntu 20.04. Før du begynder, skal du sikre dig, at du har mindst tre servere eller virtuelle maskiner til rådighed til at opsætte klyngen.
Trin 1: Opdater pakker
Du bør først opdatere dit Ubuntu-system til den nyeste version. Dette er vigtigt, så du har de nyeste pakker og sikkerhedsopdateringer.
Åbn en terminal og udfør følgende kommando for at opdatere pakkekilderne:
sudo apt updateshellInstaller alle tilgængelige opdateringer:
sudo apt upgrade -yshellVi anbefaler også at fjerne forældede eller ubrugte pakker for at rydde op på serverne:
sudo apt autoremove -yshellTrin 2: Installer MariaDB på serverne
Installer nu MariaDB på alle dine servere. Fra version 10.1 og frem er Galera-pakkerne samlet med MariaDB-servere.
sudo apt install mariadb-servershellEfter installationen kan du starte MariaDB-tjenesten:
sudo systemctl start mariadbshellBrug følgende kommando til at indstille MariaDB til at blive aktiveret automatisk hver gang systemet genstartes:
sudo systemctl enable mariadbshellKontroller, om MariaDB kører:
sudo systemctl status mariadbshellDu bør også foretage nogle grundlæggende sikkerhedsindstillinger og konfigurere databasen. For at gøre dette skal du starte installationsguiden:
sudo mysql_secure_installationshellGuiden leder dig gennem trinene, såsom at indstille en root-adgangskode, fjerne anonyme brugere eller fjerne 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] YshellScriptet beder først om det aktuelle root-adgangskode. Hvis du installerer MariaDB på Ubuntu 20.04 for første gang, skal du blot trykke på Enter og derefter indtaste en ny adgangskode.
Trin 3: Konfigurer Galera Cluster MariaDB-noder
Opret en cnf i biblioteket /etc/mysql/conf.d på hver node for at definere de Galera-specifikke indstillinger.
nano /etc/mysql/conf.d/galera.cnfshellDenne fil indeholder generelle databaseindstillinger, såsom det binære protokolformat og standardlagringsmotoren. Den indeholder også konfigurationer for Galera-klyngen, herunder klyngens navn og adresse.
Indsæt følgende linjer for den første node:
[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- Generelle databaseindstillinger: Dette omfatter indstillinger som
binlog_format=ROWfor formatet af de binære logfiler ogdefault-storage-engine=innodbfor standardlagringsmotoren. - Galera-udbyderkonfiguration: Indstillinger som
wsrep_on=ONbruges til at aktivere Galera-replikering, ogwsrep_provider=/usr/lib/galera/libgalera_smm.sobruges til at angive stien til Galera-biblioteket. - Galera-klyngekonfiguration: Dette omfatter klyngenavnet (
wsrep_cluster_name) og klyngeadressen (wsrep_cluster_address), som indeholder IP-adresserne eller værtsnavnene på noderne i klyngen. - Galera-synkroniseringskonfiguration: Konfigurerer metoden til State Snapshot Transfer (SST), f.eks.
wsrep_sst_method=rsync. - Galera-node-konfiguration: Definerer IP-adressen eller værtsnavnet for den aktuelle node (
wsrep_node_address) og navnet på noden (wsrep_node_name).
Når du har gemt filen, skal du oprette en til den anden node:
[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æt nu med den sidste node:
[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"shellTrin 4: Ændr firewall på servere
Da noderne kommunikerer med hinanden via specifikke porte, skal du justere firewallindstillingerne.
Åbn følgende porte i din firewall:
- Port 3306: Dette er standardporten for MariaDB. Den bruges til databasekommunikation og -anmodninger.
- Galera-porte: Ud over standardporten 3306 bruger Galera også andre porte til intern kommunikation mellem noderne. Standardområdet for Galera-porte er normalt 4567, 4568 og 4444 for State Snapshot Transfer (SST).
Du kan definere firewallindstillingerne på din Ubuntu-server med følgende kommando:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellTrin 5: Start Galera Cluster MariaDB
Stop MariaDB-tjenesten, hvis den allerede kører:
sudo systemctl stop mariadbshellDenne kommando starter MariaDB-serveren og initialiserer en ny Galera-klynge på den første node:
sudo galera_new_clustershellKontroller antallet af noder i klyngen:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellDu bør modtage følgende output:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellDen første node blev startet med succes.
Aktivér den anden node:
systemctl start mariadbshellKontroller, om antallet af noder er steget:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellI konsollen ser vi:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellNu starter vi den tredje node:
systemctl start mariadbshellKontroller, om noden fungerer korrekt:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellDer bør nu være tre noder i klyngen:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellTrin 6: Test replikeringen
Sørg for, at du kan oprette forbindelse til alle noder i klyngen. Brug MariaDB-klienten til at logge ind som root-bruger eller som en anden bruger med tilstrækkelige rettigheder.
mysql -u root -pshellOpret en ny testdatabase på en af noderne i klyngen:
CREATE DATABASE test_db;sqlLog ind på de andre noder og kontroller, om testdatabasen er tilgængelig:
SHOW DATABASES;sqlTestdatabasen skal vises på listen over databaser:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlTilføj en ny testtabel til testdatabasen:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlIndtast nogle testdata i kolonne name i testtabellen:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlKontroller de andre noder for at se, om testtabellen og de indsatte data er blevet overført:
USE test_db;
SELECT * FROM test_table;sqlOutputtet viser os listen over personer med deres navne og ID:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlSådan opdateres en datapost i testtabellen:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlPrøv at slette en datapost:
DELETE FROM test_table WHERE name = 'Bob';sqlKontroller de andre noder for at se, om opdateringerne og sletningerne er blevet replikeret:
SELECT * FROM test_table;sqlÆndringerne vises korrekt på alle noder:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql