MariaDB Galera Cluster opzetten op Ubuntu 20.04

Load balancing en clustering zijn erg belangrijk in een productie omgeving om hoge beschikbaarheid voor je database systeem te bereiken. MariaDB Galera Cluster biedt een multi-master clustering oplossing en ondersteunt XtraDB/InnoDB storage engines. Een multi-master cluster staat lezen en schrijven toe naar elke clusterknoop. Als je gegevens op een willekeurige node wijzigt, worden ze naar alle andere nodes gerepliceerd. Galera cluster ondersteunt ook cloud en WAN omgevingen om een gedistribueerd cluster over landen en continenten te bouwen.

In dit artikel laten we zien hoe je een MariaDB Galera cluster met drie knooppunten kunt opzetten op een Ubuntu 20.04 server.

Vereisten

  • Drie servers met Ubuntu 20.04.
  • Een root wachtwoord is ingesteld op de server.

Aan de slag

Voor je begint moet je je systeempakketten bijwerken tot de laatste versie. Je kunt ze bijwerken met het volgende commando:

apt-get update -y

Als je server bijgewerkt is, kun je verder gaan met de volgende stap.

MariaDB server installeren

Eerst moet je de MariaDB server op alle knooppunten installeren. Je kunt die installeren door het volgende commando uit te voeren:

apt-get install mariadb-server -y

Als de installatie klaar is, start je de MariaDB service en schakel je ze in om te starten bij het herstarten van het systeem:

systemctl start mariadb
systemctl status mariadb

Vervolgens moet je de MariaDB installatie beveiligen en op elke node een MariaDB root wachtwoord instellen. Je kunt dat doen met het volgende commando:

mysql_secure_installation

Je wordt gevraagd een MariaDB root wachtwoord in te stellen zoals hieronder:

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

Als je MariaDB server beveiligd is, kun je verder gaan met de volgende stap.

Configureer Galera Cluster

Vervolgens moet je op elk knooppunt een Galera configuratiebestand maken, zodat elk knooppunt met elkaar kan communiceren.

Maak op de eerste node een galera.cnf bestand aan met het volgende commando:

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

Voeg de volgende regels toe:

[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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node1-ip-address"
wsrep_node_name="node1"

Sla het bestand op en sluit het als je klaar bent.

Maak op het tweede knooppunt een galera.cnf bestand aan met het volgende commando:

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

Voeg de volgende regels toe:

[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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node2-ip-address"
wsrep_node_name="node2"

Sla het bestand op en sluit het als je klaar bent.

Maak op de derde node een galera.cnf bestand aan met het volgende commando:

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

Voeg de volgende regels toe:

[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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node3-ip-address"
wsrep_node_name="node3"

Sla het bestand op en sluit het als je klaar bent.

Initialiseer de Galera Cluster

Op dit punt zijn alle knooppunten geconfigureerd om met elkaar te communiceren.

Vervolgens moet je de MariaDB dienst op alle knooppunten stoppen. Je kunt het volgende commando uitvoeren om de MariaDB dienst te stoppen:

systemctl stop mariadb

Initialiseer op de eerste node het MariaDB Galera cluster met het volgende commando:

galera_new_cluster

Controleer nu de status van het cluster met het volgende commando:

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

Je zou de volgende uitvoer moeten zien:

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

Op de tweede node start je de MariaDB dienst met het volgende commando:

systemctl start mariadb

Controleer vervolgens de status van het MariaDB Galera cluster met het volgende commando:

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

Je zou de volgende uitvoer moeten zien:

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

Op de derde node start je de MariaDB dienst met het volgende commando:

systemctl start mariadb

Controleer vervolgens de status van het MariaDB Galera cluster met het volgende commando:

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

Je zou de volgende uitvoer moeten zien:

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

Op dit punt is het MariaDB Galera cluster geïnitialiseerd. Je kunt nu verder gaan met de volgende stap.

Verifieer Cluster Replicatie

Vervolgens moet je nagaan of de replicatie werkt of niet.

Maak op de eerste node verbinding met de MariaDB met het volgende commando:

mysql -u root -p

Zodra je verbonden bent, maak je een aantal databases aan met het volgende commando:

MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;

Sluit je vervolgens af van de MariaDB met het volgende commando:

MariaDB [(none)]> exit;

Ga vervolgens naar de tweede node en meld je aan bij de MariaDB met het volgende commando:

mysql -u root -p

Voer vervolgens het volgende commando uit om alle databases te tonen:

MariaDB [(none)]> show databases;

Je zou moeten zien dat beide databases die we op de eerste node gemaakt hebben op de tweede node gerepliceerd worden:

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Ga vervolgens naar de derde node en meld je aan bij de MariaDB met het volgende commando:

mysql -u root -p

Voer vervolgens het volgende commando uit om alle databases te tonen:

MariaDB [(none)]> show databases;

Je zou moeten zien dat beide databases die we op de eerste node gemaakt hebben op de derde node gerepliceerd worden:

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Conclusie

In de bovenstaande gids leerden we hoe je een MariaDB Galera cluster met drie knooppunten kunt opzetten op een Ubuntu 20.04 server. Je kunt nu gemakkelijk meer nodes aan het MariaDB Galera cluster toevoegen. Voel je vrij me te vragen als je vragen hebt.