Lastausgleich und Clustering sind in einer Produktionsumgebung sehr wichtig, um eine hohe Verfügbarkeit für Ihr Datenbanksystem zu erreichen. MariaDB Galera Cluster bietet eine Multi-Master-Clustering-Lösung und unterstützt XtraDB/InnoDB-Speicher-Engines. Ein Multi-Master-Cluster ermöglicht Lese- und Schreibzugriff auf jeden Cluster-Knoten. Wenn Sie Daten auf einem Knoten ändern, werden sie auf alle anderen Knoten repliziert. Der 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, wie Sie einen MariaDB Galera-Cluster mit drei Knoten auf einem Ubuntu 20.04-Server einrichten.
Voraussetzungen
- Drei Server mit Ubuntu 20.04.
- Auf dem Server ist ein Root-Passwort konfiguriert.
Erste Schritte
Bevor Sie beginnen, müssen Sie Ihre Systempakete auf die neueste Version aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:
apt-get update -y
Sobald Ihr Server aktualisiert ist, können Sie mit dem nächsten Schritt fortfahren.
MariaDB-Server installieren
Zuerst müssen Sie den MariaDB-Server auf allen Knoten installieren. Sie können es installieren, indem Sie den folgenden Befehl ausführen:
apt-get install mariadb-server -y
Starten Sie nach Abschluss der Installation den MariaDB-Dienst und ermöglichen Sie ihm, beim Systemneustart zu starten:
systemctl start mariadb
systemctl status mariadb
Als Nächstes müssen Sie die MariaDB-Installation sichern und auf jedem Knoten ein MariaDB-Root-Passwort festlegen. Sie können dies mit dem folgenden Befehl tun:
mysql_secure_installation
Sie werden aufgefordert, ein MariaDB-Root-Passwort festzulegen, 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 Ihr MariaDB-Server gesichert ist, können Sie mit dem nächsten Schritt fortfahren.
Galera-Cluster konfigurieren
Als Nächstes müssen Sie auf jedem Knoten eine Galera-Konfigurationsdatei erstellen, damit alle Knoten miteinander kommunizieren können.
Erstellen Sie auf dem ersten Knoten eine galera.cnf-Datei mit dem folgenden Befehl:
nano /etc/mysql/conf.d/galera.cnf
Fügen Sie 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"
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Erstellen Sie auf dem zweiten Knoten eine galera.cnf-Datei mit dem folgenden Befehl:
nano /etc/mysql/conf.d/galera.cnf
Fügen Sie 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"
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Erstellen Sie auf dem dritten Knoten eine galera.cnf-Datei mit dem folgenden Befehl:
nano /etc/mysql/conf.d/galera.cnf
Fügen Sie 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"
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Initialisieren Sie den Galera-Cluster
An diesem Punkt sind alle Knoten so konfiguriert, dass sie miteinander kommunizieren.
Als nächstes müssen Sie den MariaDB-Dienst auf allen Knoten stoppen. Sie können den folgenden Befehl ausführen, um den MariaDB-Dienst zu stoppen:
systemctl stop mariadb
Initialisieren Sie auf dem ersten Knoten den MariaDB Galera-Cluster mit dem folgenden Befehl:
galera_new_cluster
Überprüfen Sie nun den Status des Clusters mit dem folgenden Befehl:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Sie sollten die folgende Ausgabe sehen:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
Starten Sie auf dem zweiten Knoten den MariaDB-Dienst mit dem folgenden Befehl:
systemctl start mariadb
Überprüfen Sie als Nächstes den Status des MariaDB Galera-Clusters mit dem folgenden Befehl:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Sie sollten die folgende Ausgabe sehen:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
Starten Sie auf dem dritten Knoten den MariaDB-Dienst mit dem folgenden Befehl:
systemctl start mariadb
Überprüfen Sie als Nächstes den Status des MariaDB Galera-Clusters mit dem folgenden Befehl:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Sie sollten die folgende Ausgabe sehen:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
An diesem Punkt wird der MariaDB Galera-Cluster initialisiert. Sie können jetzt mit dem nächsten Schritt fortfahren.
Cluster-Replikation überprüfen
Als Nächstes müssen Sie überprüfen, ob die Replikation funktioniert oder nicht.
Verbinden Sie sich auf dem ersten Knoten mit dem folgenden Befehl mit der MariaDB:
mysql -u root -p
Sobald Sie verbunden sind, erstellen Sie eine Datenbank mit dem folgenden Befehl:
MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;
Als nächstes verlassen Sie die MariaDB mit dem folgenden Befehl:
MariaDB [(none)]> exit;
Gehen Sie als Nächstes zum zweiten Knoten und melden Sie sich mit dem folgenden Befehl bei der MariaDB an:
mysql -u root -p
Führen Sie als Nächstes den folgenden Befehl aus, um alle Datenbanken anzuzeigen:
MariaDB [(none)]> show databases;
Sie sollten 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)
Gehen Sie als nächstes zum dritten Knoten und melden Sie sich mit dem folgenden Befehl bei der MariaDB an:
mysql -u root -p
Führen Sie als Nächstes den folgenden Befehl aus, um alle Datenbanken anzuzeigen:
MariaDB [(none)]> show databases;
Sie sollten sehen, dass beide Datenbanken, die wir auf dem ersten Knoten erstellt haben, auf dem dritten Knoten repliziert werden:
+--------------------+ | Database | +--------------------+ | db1 | | db2 | | information_schema | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.001 sec)
Schlussfolgerung
In der obigen Anleitung haben wir gelernt, wie man einen MariaDB Galera-Cluster mit drei Knoten auf einem Ubuntu 20.04-Server einrichtet. Sie können jetzt ganz einfach weitere Knoten zum MariaDB Galera-Cluster hinzufügen. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.