Å sette opp en MariaDB-klynge med Galera Cluster forbedrer påliteligheten og forenkler skaleringen av databasen din. I vår veiledning viser vi deg hvordan du installerer en Galera-klynge på Ubuntu 20.04.

Kravene til en Galera Cluster MariaDB

For å installere en MariaDB Galera-klynge på Ubuntu 20.04 må du oppfylle følgende krav:

  • Flere servere: Det kreves minst tre servere eller virtuelle maskiner for å bygge en klynge. Alle servere må være på samme nettverk.
  • Root-rettigheter: Du trenger root-tilgang eller minst administratorrettigheter på serverne.

Hvordan konfigurere Galera Cluster MariaDB på Ubuntu 20.04 trinn for trinn

En MariaDB Galera-klynge er en praktisk databaseløsning som gir høy tilgjengelighet, dataintegritet og skalerbarhet for krevende applikasjoner. I denne trinnvise veiledningen vil vi gå gjennom prosessen med å konfigurere en MariaDB Galera-klynge på Ubuntu 20.04. Før du begynner, må du sørge for at du har minst tre servere eller virtuelle maskiner tilgjengelig for å konfigurere klyngen.

Trinn 1: Oppdater pakker

Du bør først oppdatere Ubuntu-systemet til den nyeste versjonen. Dette er viktig for at du skal ha oppdaterte pakker og sikkerhetsoppdateringer.

Åpne en terminal og utfør følgende kommando for å oppdatere pakkekildene:

sudo apt update
shell

Installer alle tilgjengelige oppdateringer:

sudo apt upgrade -y
shell

Vi anbefaler også å fjerne utdaterte eller ubrukte pakker for å rydde opp i serverne:

sudo apt autoremove -y
shell

Trinn 2: Installer MariaDB på serverne

Nå kan du installere MariaDB på alle serverne dine. Fra versjon 10.1 er Galera-pakkene inkludert i MariaDB-serverne.

sudo apt install mariadb-server
shell

Etter installasjonen kan du starte MariaDB-tjenesten:

sudo systemctl start mariadb
shell

Bruk følgende kommando for å angi at MariaDB skal aktiveres automatisk hver gang systemet startes på nytt:

sudo systemctl enable mariadb
shell

Kontroller om MariaDB kjører:

sudo systemctl status mariadb
shell

Du bør også foreta noen grunnleggende sikkerhetsinnstillinger og konfigurere databasen. For å gjøre dette, start installasjonsveiviseren:

sudo mysql_secure_installation
shell

Veiviseren guider deg gjennom trinnene, for eksempel å angi et root-passord, fjerne anonyme brukere 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] Y
shell

Skriptet ber først om det gjeldende root-passordet. Hvis du installerer MariaDB på Ubuntu 20.04 for første gang, trykker du bare Enter og skriver inn et nytt passord.

Trinn 3: Konfigurer Galera Cluster MariaDB-noder

Opprett en cnf -fil i katalogen /etc/mysql/conf.d på hver node for å definere Galera-spesifikke innstillinger.

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

Denne filen inneholder generelle databaseinnstillinger, for eksempel binærprotokollformat og standard lagringsmotor. Den inneholder også konfigurasjoner for Galera-klyngen, inkludert klyngenavnet og klyngeadressen.

Sett inn følgende linjer for den første 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
  • Generelle databaseinnstillinger: Dette inkluderer innstillinger som binlog_format=ROW for formatet på binærloggene og default-storage-engine=innodb for standard lagringsmotor.
  • Galera-leverandørkonfigurasjon: Innstillinger som wsrep_on=ON brukes til å aktivere Galera-replikering og wsrep_provider=/usr/lib/galera/libgalera_smm.so til å angi banen til Galera-biblioteket.
  • Galera-klyngekonfigurasjon: Dette inkluderer klyngenavnet (wsrep_cluster_name) og klyngeadressen (wsrep_cluster_address), som inneholder IP-adressene eller vertsnavnene til nodene i klyngen.
  • Galera-synkroniseringskonfigurasjon: Konfigurerer metoden for State Snapshot Transfer (SST), f.eks. wsrep_sst_method=rsync.
  • Galera-nodekonfigurasjon: Definerer IP-adressen eller vertsnavnet til den aktuelle noden (wsrep_node_address) og navnet på noden (wsrep_node_name).

Etter at du har lagret filen, oppretter du en for den andre 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

Fortsett nå med den siste 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

Trinn 4: Endre brannmuren på serverne

Siden nodene kommuniserer med hverandre via bestemte porter, må du justere brannmurinnstillingene.

Åpne følgende porter i brannmuren din:

  • Port 3306: Dette er standardporten for MariaDB. Den brukes til databasekommunikasjon og forespørsler.
  • Galera-porter: I tillegg til standardporten 3306 bruker Galera også andre porter for intern kommunikasjon mellom nodene. Standardområdet for Galera-porter er vanligvis 4567, 4568 og 4444 for State Snapshot Transfer (SST).

Du kan definere brannmurinnstillingene på Ubuntu-serveren din med følgende kommando:

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

Trinn 5: Start Galera Cluster MariaDB

Stopp MariaDB-tjenesten hvis den allerede kjører:

sudo systemctl stop mariadb
shell

Denne kommandoen starter MariaDB-serveren og initialiserer en ny Galera-klynge på den første noden:

sudo galera_new_cluster
shell

Kontroller antall noder i klyngen:

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

Du bør få følgende utdata:

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

Den første noden ble startet uten problemer.

Aktiver den andre noden:

systemctl start mariadb
shell

Kontroller om antall noder har økt:

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

I konsollen ser vi:

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

Nå starter vi den tredje noden:

systemctl start mariadb
shell

Kontroller om noden fungerer som den skal:

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

Det skal nå være tre noder i klyngen:

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

Trinn 6: Test replikeringen

Sørg for at du kan opprette en forbindelse til alle noder i klyngen. Bruk MariaDB-klienten til å logge inn som root-bruker eller som en annen bruker med tilstrekkelige rettigheter.

mysql -u root -p
shell

Opprett en ny testdatabase på en av nodene i klyngen:

CREATE DATABASE test_db;
sql

Logg inn på de andre nodene og sjekk om testdatabasen er tilgjengelig:

SHOW DATABASES;
sql

Testdatabasen skal vises i listen over databaser:

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

Legg til en ny testtabell i testdatabasen:

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

Skriv inn noen testdata i kolonne name i testtabellen:

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

Kontroller de andre nodene for å se om testtabellen og de innsatte dataene er overført:

USE test_db;
SELECT * FROM test_table;
sql

Utdataene viser oss listen over personer med navn og ID:

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

For å oppdatere en datapost i testtabellen:

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

Prøv å slette en datapost:

DELETE FROM test_table WHERE name = 'Bob';
sql

Sjekk de andre nodene for å se om oppdateringene og slettingene er replikert:

SELECT * FROM test_table;
sql

Endringene vises som forventet på alle noder:

+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
sql
Go to Main Menu