Het opzetten van een MariaDB-cluster met Galera Cluster verbetert de betrouwbaarheid en vereenvoudigt het schalen van uw database. In onze tutorial laten we u zien hoe u een Galera-cluster op Ubuntu 20.04 installeert.

De vereisten voor een Galera Cluster MariaDB

Om een MariaDB Galera-cluster op Ubuntu 20.04 te installeren, moet u aan de volgende vereisten voldoen:

  • Meerdere servers: Er zijn minimaal drie servers of virtuele machines nodig om een cluster te bouwen. Alle servers moeten zich op hetzelfde netwerk bevinden.
  • Rootrechten: U hebt root-toegang of ten minste beheerdersrechten op de servers nodig.

Hoe Galera Cluster MariaDB stap voor stap op Ubuntu 20.04 te installeren

Een MariaDB Galera-cluster is een praktische databaseoplossing die hoge beschikbaarheid, gegevensintegriteit en schaalbaarheid biedt voor veeleisende toepassingen. In deze stapsgewijze handleiding begeleiden we u bij het opzetten van een MariaDB Galera-cluster op Ubuntu 20.04. Voordat u begint, moet u ervoor zorgen dat u ten minste drie servers of virtuele machines beschikbaar hebt om het cluster op te zetten.

Stap 1: Pakketten bijwerken

U moet eerst uw Ubuntu-systeem updaten naar de nieuwste versie. Dit is essentieel om te zorgen dat u beschikt over de meest recente pakketten en beveiligingsupdates.

Open een terminal en voer de volgende opdracht uit om de pakketbronnen bij te werken:

sudo apt update
shell

Installeer alle beschikbare updates:

sudo apt upgrade -y
shell

We raden ook aan om verouderde of ongebruikte pakketten te verwijderen om de servers op te schonen:

sudo apt autoremove -y
shell

Stap 2: Installeer MariaDB op de servers

Installeer nu MariaDB op al uw servers. Vanaf versie 10.1 worden de Galera-pakketten meegeleverd met MariaDB-servers.

sudo apt install mariadb-server
shell

Na de installatie kunt u de MariaDB-service starten:

sudo systemctl start mariadb
shell

Gebruik de volgende opdracht om MariaDB zo in te stellen dat het automatisch wordt geactiveerd telkens wanneer het systeem opnieuw wordt opgestart:

sudo systemctl enable mariadb
shell

Controleer of MariaDB actief is:

sudo systemctl status mariadb
shell

U moet ook enkele basisbeveiligingsinstellingen uitvoeren en de database configureren. Start hiervoor de installatiewizard:

sudo mysql_secure_installation
shell

De wizard begeleidt u door de stappen, zoals het instellen van een root-wachtwoord, het verwijderen van anonieme gebruikers of het verwijderen van de testdatabase.

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

Het script vraagt eerst om het huidige root-wachtwoord. Als u MariaDB voor het eerst op Ubuntu 20.04 installeert, drukt u gewoon op Enter en voert u vervolgens een nieuw wachtwoord in.

Stap 3: Configureer Galera Cluster MariaDB-knooppunten

Maak een cnf -bestand aan in de map /etc/mysql/conf.d op elke node om de Galera-specifieke instellingen te definiëren.

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

Dit bestand bevat algemene database-instellingen, zoals het binaire protocolformaat en de standaardopslagengine. Het bevat ook configuraties voor het Galera-cluster, waaronder de clusternaam en het clusteradres.

Voeg de volgende regels toe voor het eerste knooppunt:

[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
  • Algemene database-instellingen: Dit omvat instellingen zoals binlog_format=ROW voor het formaat van de binaire logboeken en default-storage-engine=innodb voor de standaard opslagengine.
  • Galera-providerconfiguratie: instellingen zoals wsrep_on=ON worden gebruikt om Galera-replicatie in te schakelen en wsrep_provider=/usr/lib/galera/libgalera_smm.so om het pad naar de Galera-bibliotheek op te geven.
  • Galera-clusterconfiguratie: Dit omvat de clusternaam (wsrep_cluster_name) en het clusteradres (wsrep_cluster_address), dat de IP-adressen of hostnamen van de knooppunten in het cluster bevat.
  • Galera-synchronisatieconfiguratie: configureert de methode voor de State Snapshot Transfer (SST), bijvoorbeeld wsrep_sst_method=rsync.
  • Galera-knooppuntconfiguratie: definieert het IP-adres of de hostnaam van het huidige knooppunt (wsrep_node_address) en de naam van het knooppunt (wsrep_node_name).

Nadat u het bestand hebt opgeslagen, maakt u een bestand voor het tweede knooppunt:

[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

Ga nu verder met het laatste knooppunt:

[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

Stap 4: Wijzig de firewall op servers

Aangezien de knooppunten via specifieke poorten met elkaar communiceren, moet u de firewallinstellingen aanpassen.

Open de volgende poorten in uw firewall:

  • Poort 3306: Dit is de standaardpoort voor MariaDB. Deze wordt gebruikt voor databasecommunicatie en -verzoeken.
  • Galera-poorten: Naast de standaardpoort 3306 gebruikt Galera ook andere poorten voor interne communicatie tussen de knooppunten. Het standaardbereik voor Galera-poorten is meestal 4567, 4568 en 4444 voor de State Snapshot Transfer (SST).

U kunt de firewallinstellingen op uw Ubuntu-server definiëren met de volgende opdracht:

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

Stap 5: Start Galera Cluster MariaDB

Stop de MariaDB-service als deze al actief is:

sudo systemctl stop mariadb
shell

Dit commando start de MariaDB-server en initialiseert een nieuwe Galera-cluster op het eerste knooppunt:

sudo galera_new_cluster
shell

Controleer het aantal knooppunten in het cluster:

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

U zou de volgende uitvoer moeten krijgen:

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

Het eerste knooppunt is succesvol gestart.

Activeer het tweede knooppunt:

systemctl start mariadb
shell

Controleer of het aantal knooppunten is toegenomen:

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

In de console zien we:

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

Nu beginnen we met het derde knooppunt:

systemctl start mariadb
shell

Controleer of het knooppunt correct werkt:

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

Er zouden nu drie knooppunten in het cluster moeten zijn:

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

Stap 6: Test de replicatie

Zorg ervoor dat u verbinding kunt maken met elk knooppunt in het cluster. Gebruik de MariaDB-client om in te loggen als rootgebruiker of als een andere gebruiker met voldoende rechten.

mysql -u root -p
shell

Maak een nieuwe testdatabase aan op een van de knooppunten in het cluster:

CREATE DATABASE test_db;
sql

Log in op de andere knooppunten en controleer of de testdatabase beschikbaar is:

SHOW DATABASES;
sql

De testdatabase moet in de lijst met databases verschijnen:

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

Voeg een nieuwe testtabel toe aan de testdatabase:

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

Voer enkele testgegevens in de kolom name van de testtabel in:

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

Controleer op de andere knooppunten of de testtabel en de ingevoegde gegevens zijn overgedragen:

USE test_db;
SELECT * FROM test_table;
sql

De uitvoer toont ons de lijst met personen met hun namen en ID:

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

Om een gegevensrecord in de testtabel bij te werken:

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

Probeer een gegevensrecord te verwijderen:

DELETE FROM test_table WHERE name = 'Bob';
sql

Controleer op de andere knooppunten of de updates en verwijderingen zijn gerepliceerd:

SELECT * FROM test_table;
sql

De wijzigingen worden op elk knooppunt correct weergegeven:

+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
sql
Ga naar hoofdmenu