Wie man MariaDB Galera Cluster auf Ubuntu 20.04 einrichtet

Load Balancing und Clustering sind in einer Produktionsumgebung sehr wichtig, um eine hohe Verfügbarkeit für dein Datenbanksystem zu erreichen. MariaDB Galera Cluster bietet eine Multi-Master-Clustering-Lösung und unterstützt XtraDB/InnoDB Storage Engines. Ein Multi-Master-Cluster erlaubt Lese- und Schreibzugriffe auf jeden Clusterknoten. Wenn du Daten auf einem beliebigen Knoten modifizierst, werden sie auf alle anderen Knoten repliziert. Galera-Cluster unterstützt auch Cloud- und WAN-Umgebungen, um einen verteilten Cluster über Länder und Kontinente hinweg aufzubauen.

In diesem Beitrag zeigen wir dir, wie du einen MariaDB Galera Cluster mit drei Knoten auf einem Ubuntu 20.04 Server einrichtest.

Voraussetzungen

  • Drei Server, auf denen Ubuntu 20.04 läuft.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Bevor du beginnst, musst du deine Systempakete auf die neueste Version aktualisieren. Du kannst sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald dein Server aktualisiert ist, kannst du mit dem nächsten Schritt fortfahren.

MariaDB Server installieren

Zuerst musst du den MariaDB Server auf allen Nodes installieren. Du kannst ihn installieren, indem du den folgenden Befehl ausführst:

apt-get install mariadb-server -y

Sobald die Installation abgeschlossen ist, starte den MariaDB Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start mariadb
systemctl status mariadb

Als nächstes musst du die MariaDB-Installation sichern und ein MariaDB-Root-Passwort auf jedem Knoten setzen. Das kannst du mit dem folgenden Befehl tun:

mysql_secure_installation

Du wirst aufgefordert, ein MariaDB Root-Passwort zu setzen, wie unten gezeigt:

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

Sobald dein MariaDB Server gesichert ist, kannst du mit dem nächsten Schritt fortfahren.

Galera Cluster konfigurieren

Als nächstes musst du eine Galera-Konfigurationsdatei auf jedem Knoten erstellen, damit die Knoten miteinander kommunizieren können.

Erstelle auf dem ersten Knoten eine galera.cnf Datei mit dem folgenden Befehl:

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

Füge die folgenden Zeilen hinzu:

[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"

Speichere und schließe die Datei, wenn du fertig bist.

Erstelle auf dem zweiten Knoten eine galera.cnf Datei mit dem folgenden Befehl:

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

Füge die folgenden Zeilen hinzu:

[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"

Speichere und schließe die Datei, wenn du fertig bist.

Erstelle auf dem dritten Knoten eine galera.cnf Datei mit dem folgenden Befehl:

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

Füge die folgenden Zeilen hinzu:

[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"

Speichere und schließe die Datei, wenn du fertig bist.

Initialisiere den Galera Cluster

An diesem Punkt sind alle Knoten so konfiguriert, dass sie miteinander kommunizieren können.

Als nächstes musst du den MariaDB Dienst auf allen Knoten stoppen. Du kannst den folgenden Befehl ausführen, um den MariaDB Dienst zu stoppen:

systemctl stop mariadb

Auf dem ersten Knoten initialisierst du den MariaDB-Galera-Cluster mit dem folgenden Befehl:

galera_new_cluster

Überprüfe nun den Status des Clusters mit dem folgenden Befehl:

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

Du solltest die folgende Ausgabe sehen:

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

Starte auf dem zweiten Knoten den MariaDB-Dienst mit dem folgenden Befehl:

systemctl start mariadb

Überprüfe nun den Status des MariaDB-Galera-Clusters mit dem folgenden Kommando:

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

Du solltest die folgende Ausgabe sehen:

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

Starte auf dem dritten Knoten den MariaDB-Dienst mit dem folgenden Befehl:

systemctl start mariadb

Prüfe als nächstes den Status des MariaDB Galera Clusters mit dem folgenden Befehl:

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

Du solltest die folgende Ausgabe sehen:

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

An diesem Punkt ist der MariaDB Galera-Cluster initialisiert. Du kannst nun mit dem nächsten Schritt fortfahren.

Überprüfe die Cluster-Replikation

Als nächstes musst du überprüfen, ob die Replikation funktioniert oder nicht.

Verbinde dich auf dem ersten Knoten mit der MariaDB mit dem folgenden Befehl:

mysql -u root -p

Sobald du verbunden bist, erstelle eine Datenbank mit dem folgenden Befehl:

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

Als nächstes beende die MariaDB mit dem folgenden Kommando:

MariaDB [(none)]> exit;

Als nächstes gehst du zum zweiten Knoten und loggst dich mit dem folgenden Befehl in die MariaDB ein:

mysql -u root -p

Führe als nächstes den folgenden Befehl aus, um alle Datenbanken anzuzeigen:

MariaDB [(none)]> show databases;

Du solltest sehen, dass beide Datenbanken, die wir auf dem ersten Knoten erstellt haben, auf dem zweiten Knoten repliziert werden:

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

Als nächstes gehst du zum dritten Knoten und loggst dich mit dem folgenden Befehl in die MariaDB ein:

mysql -u root -p

Als nächstes führst du den folgenden Befehl aus, um alle Datenbanken anzuzeigen:

MariaDB [(none)]> show databases;

Du solltest sehen, dass beide Datenbanken, die wir auf dem ersten Knoten erstellt haben, auf dem dritten Knoten repliziert sind:

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

Fazit

In der obigen Anleitung haben wir gelernt, wie man einen MariaDB Galera-Cluster mit drei Knoten auf einem Ubuntu 20.04 Server einrichtet. Du kannst nun ganz einfach weitere Knoten zum MariaDB Galera Cluster hinzufügen. Wenn du noch Fragen hast, kannst du mich gerne fragen.

Das könnte dich auch interessieren …