Beim Datenbank-Clustering werden mehrere Server kombiniert, indem sie mit einer einzigen Datenbank verbunden werden. Clustering verbessert die Verfügbarkeit Ihrer Datenbank, indem die Last auf verschiedene Server verteilt wird. Wenn ein Server ausfällt, sind andere schnell verfügbar, um den Dienst fortzusetzen.
MariaDB Galera ist eine Multi-Master-Clustering-Lösung, mit der Sie auf jedem Knoten im Cluster lesen und schreiben können. Mit MariaDB Galera wird eine an einem Knoten vorgenommene Änderung auf alle Knoten repliziert. MariaDB Galera unterstützt die XtraDB/InnoDB-Speicher-Engines und ist nur unter Linux verfügbar.
Funktionen
- Aktiv-Aktiv-Multi-Master-Topologie
- Automatischer Knotenbeitritt
- Lese- und Schreibfähigkeit auf jedem Cluster-Knoten
- Automatische Mitgliedschaftskontrolle, ausgefallene Knoten werden aus dem Cluster gelöscht
- Automatische Knotenbereitstellung
In diesem Tutorial zeigen wir Ihnen, wie Sie einen MariaDB Galera-Cluster mit drei Knoten unter Ubuntu 18.04 einrichten.
Voraussetzungen
- Drei neue Ubuntu 18.04 VPS auf der Atlantic.Net Cloud Platform.
- Ein auf allen Servern konfiguriertes Root-Passwort.
Für dieses Tutorial verwenden wir drei Server mit der folgenden Konfiguration:
server1 :192.168.0.101
server2 :192.168.0.102
server3 :192.168.0.103
Schritt 1 – Erstellen Sie einen Atlantic.Net Cloud-Server
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 18.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 18.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Schritt 2 – MariaDB Server auf allen Servern installieren
Fügen Sie zuerst den MariaDB-Repository-Schlüssel mit dem folgenden Befehl hinzu:
apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Als nächstes fügen Sie das Repository mit dem folgenden Befehl hinzu:
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
Sobald das Repository hinzugefügt wurde, aktualisieren Sie das Repository mit dem folgenden Befehl:
apt-get update -y
Installieren Sie schließlich den MariaDB-Server mit dem folgenden Befehl:
apt-get install mariadb-server -y
Ab Version 10.1 ist die Galera-Cluster-Funktion in MariaDB gebündelt. Das MariaDB Galera Server-Paket wird automatisch mit dem MariaDB-Server installiert.
Sie können es mit dem folgenden Befehl einrichten:
mysql_secure_installation
Beantworten Sie alle Fragen wie unten gezeigt:
Enter current password for root (enter for none): Provide your root user password 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
Hinweis :Bitte wiederholen Sie die obigen Schritte auf allen drei Servern.
Schritt 3 – Konfigurieren Sie jeden Server im Cluster
Zu diesem Zeitpunkt haben wir den MariaDB-Server auf jedem Server installiert und konfiguriert. Als Nächstes müssen Sie den Galera-Cluster für die Kommunikation zwischen den Servern konfigurieren. Dazu müssen Sie auf jedem Server eine gemeinsame Konfigurationsdatei erstellen.
In diesem Abschnitt zeigen wir Ihnen, wie Sie jeden Server im Cluster konfigurieren.
Ersten Server konfigurieren
Melden Sie sich zunächst beim ersten Server an und erstellen Sie mit dem folgenden Befehl eine Galera-Konfigurationsdatei:
nano /etc/mysql/conf.d/galera.cnf
Fügen Sie die folgenden Zeilen hinzu (stellen Sie sicher, dass Sie Ihre eigenen Server-IP-Adressen eingeben):
[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://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.101" wsrep_node_name="server1"
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Als nächstes können Sie mit dem zweiten Server fortfahren.
Zweiten Server konfigurieren
Melden Sie sich als Nächstes beim zweiten Server an und erstellen Sie mit dem folgenden Befehl eine Galera-Konfigurationsdatei:
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://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.102" wsrep_node_name="server2"
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Als nächstes können Sie mit dem dritten Server fortfahren.
Dritten Server konfigurieren
Melden Sie sich als Nächstes beim dritten Server an und erstellen Sie mit dem folgenden Befehl eine Galera-Konfigurationsdatei:
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://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.103" wsrep_node_name="server3"
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
An diesem Punkt haben wir alle drei Server so konfiguriert, dass sie miteinander kommunizieren.
Schritt 4 – Galera-Cluster initialisieren
Bevor Sie den Cluster starten, müssen Sie den MariaDB-Dienst auf allen Servern stoppen.
Führen Sie den folgenden Befehl aus, um den MariaDB-Dienst auf allen Servern zu stoppen.
systemctl stop mariadb
Initialisieren Sie als Nächstes den Cluster im ersten Knoten mit dem folgenden Befehl:
galera_new_cluster
Der obige Befehl startet den Cluster und fügt server1 zum Cluster hinzu.
Sie können dies mit dem folgenden Befehl überprüfen:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Geben Sie Ihr Root-Passwort ein und drücken Sie die Eingabetaste. Sie sollten die folgende Ausgabe sehen:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
Gehen Sie als Nächstes zum zweiten Server und starten Sie den MariaDB-Dienst:
systemctl start mariadb
Überprüfen Sie als Nächstes Ihre Clustergröße mit dem folgenden Befehl:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Geben Sie Ihr Root-Passwort ein und drücken Sie die Eingabetaste. Sie sollten sehen, dass der zweite Server dem Cluster beigetreten ist.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
Gehen Sie als Nächstes zum dritten Server und starten Sie den MariaDB-Dienst:
systemctl start mariadb
Überprüfen Sie als Nächstes Ihre Clustergröße mit dem folgenden Befehl:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Geben Sie Ihr Root-Passwort ein und drücken Sie die Eingabetaste. Sie sollten sehen, dass der dritte Server dem Cluster beigetreten ist.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
Schritt 5 – Galera-Cluster-Replikation testen
Ihr Galera-Cluster ist jetzt betriebsbereit. Es ist an der Zeit zu testen und zu sehen, ob die Replikation funktioniert.
Erstellen Sie dazu eine Datenbank auf dem ersten Server und prüfen Sie, ob sie auf andere Server repliziert wurde.
Melden Sie sich auf server1 mit dem folgenden Befehl bei der MySQL-Shell an:
mysql -u root -p
Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden, und erstellen Sie dann eine Datenbank mit dem folgenden Befehl:
create database replicadb; create database mydb;
Als nächstes verlassen Sie die MySQL-Shell mit dem folgenden Befehl:
exit;
Melden Sie sich auf server2 mit dem folgenden Befehl bei der MySQL-Shell an:
mysql -u root -p
Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden, und prüfen Sie, ob die Datenbank existiert.
show databases;
Sie sollten die folgende Ausgabe erhalten:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
Melden Sie sich auf server3 mit dem folgenden Befehl bei der MySQL-Shell an:
mysql -u root -p
Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden, und prüfen Sie, ob die Datenbank existiert.
show databases;
Sie sollten die folgende Ausgabe erhalten:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
Die obige Ausgabe zeigt deutlich, dass die Replikation ordnungsgemäß funktioniert.
Schlussfolgerung
Herzliche Glückwünsche! Sie haben erfolgreich einen MariaDB Galera-Cluster mit drei Knoten auf Ubuntu 18.04 VPS installiert und konfiguriert. Sie sollten jetzt über ausreichende Kenntnisse verfügen, um einen MariaDB Galera-Cluster in einer Produktionsumgebung einzurichten. Weitere Informationen finden Sie in der MariaDB Galera-Dokumentation.