MySQL ist ein kostenloses, Open-Source- und relationales Datenbankverwaltungssystem. Es wird verwendet, um Daten für verschiedene Zwecke zu speichern, einschließlich Data Warehousing, E-Commerce und Protokollierungsanwendungen. MySQL Cluster ist eine Technologie, die Skalierbarkeit und Verfügbarkeit zu geringen Kosten bietet.
In diesem Tutorial verwenden wir einen Masterknoten zum Speichern der Clusterkonfiguration und zwei Datenknoten zum Speichern der Clusterdaten. Die IP-Adresse jedes Knotens wird unten gezeigt:
- Master- oder Manager-Knoten – 104.245.33.61
- Datenknoten1 - 104.245.32.195
- Datenknoten2 - 69.87.218.169
Voraussetzungen
- Drei Server mit Debian 10, einer für den Manager-Knoten und die anderen sind Datenknoten.
- Ein Root-Passwort wird auf jedem Server eingerichtet.
Erste Schritte
Zuerst müssen Sie alle Server auf die neueste Version aktualisieren. Sie können alle mit dem folgenden Befehl aktualisieren:
apt-get update -y
Sobald alle Server aktualisiert sind, können Sie mit dem nächsten Schritt fortfahren.
Mysql-Cluster-Manager installieren und einrichten
Zuerst müssen Sie das MySQL-Clusterverwaltungspaket auf dem Master-Knoten installieren. Standardmäßig ist dieses Paket nicht im Standard-Repository von Debian 10 enthalten. Sie müssen es also von der offiziellen MySQL-Website herunterladen.
Sie können es mit dem folgenden Befehl herunterladen:
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb
Nachdem Sie die deb-Datei heruntergeladen haben, installieren Sie sie mit dem folgenden Befehl:
dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb
Sobald die Installation abgeschlossen ist, erstellen Sie mit dem folgenden Befehl ein Verzeichnis zum Speichern der Clusterkonfiguration:
mkdir /var/lib/mysql-cluster
Als nächstes erstellen Sie eine neue Konfigurationsdatei mit dem folgenden Befehl:
nano /var/lib/mysql-cluster/config.ini
Fügen Sie die folgenden Zeilen hinzu:
[ndbd default]NoOfReplicas=2 # Anzahl der Replicas[ndb_mgmd]# Verwaltungsprozessoptionen:hostname=104.245.33.61 #IP des MySQL Cluster Managerdatadir=/var/lib/mysql-cluster[ndbd]hostname=104.245. 32.195 #IP der ersten Daten nodeNodeId=2 # Knoten-ID für diese Daten nodedatadir=/usr/local/mysql/data # Remote-Verzeichnis für die Datendateien[ndbd]hostname=69.87.218.169 #IP der zweiten Daten nodeNodeId=3 # Knoten-ID für diese Daten nodedatadir=/usr/local/mysql/data # Remote-Verzeichnis für die Datendateien[mysqld]# SQL-Knotenoptionen:hostname=104.245.33.61 #IP des MySQL-Cluster-Managers
Speichern und schließen Sie die Datei, wenn Sie fertig sind, und starten Sie dann den Cluster-Manager mit dem folgenden Befehl:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Sie sollten die folgende Ausgabe erhalten:
MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.242021-05-10 08:23:05 [MgmtSrvr] INFO – Das standardmäßige Konfigurationsverzeichnis „/usr/mysql-cluster“ existiert nicht. Versuch, es zu erstellen ... 2021-05-10 08:23:05 [MgmtSrvr] INFO -- Konfigurationsverzeichnis erfolgreich erstellt
Beenden Sie nun den laufenden Server mit dem folgenden Befehl:
pkill -f ndb_mgmd
Erstellen Sie als Nächstes eine systemd-Dienstdatei für MySQL Cluster Manager, um den Dienst zu verwalten:
nano /etc/systemd/system/ndb_mgmd.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=MySQL NDB Cluster Management ServerAfter=network.target auditd.service[Service]Type=forkingExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.iniExecReload=/bin /kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target
Speichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reload
Starten Sie als Nächstes den Cluster-Manager und aktivieren Sie ihn mit dem folgenden Befehl, damit er beim Systemneustart gestartet wird:
systemctl start ndb_mgmd
systemctl aktiviert ndb_mgmd
Sie können jetzt den Status des Dienstes mit dem folgenden Befehl überprüfen:
systemctl-Status ndb_mgmd
Sie sollten die folgende Ausgabe erhalten:
Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Installieren und konfigurieren Sie Datenknoten
Als Nächstes werden wir Datenknotenpakete auf anderen Servern erstellen und für die Kommunikation mit MySQL Cluster Manager konfigurieren.
Installieren Sie zuerst die erforderlichen Abhängigkeiten auf beiden Datenknoten mit dem folgenden Befehl:
apt-get install libclass-methodmaker-perl -y
Sobald alle Abhängigkeiten installiert sind, laden Sie die neueste Version der Deb-Datei von MySQL Data Nodes mit dem folgenden Befehl herunter:
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb
Sobald der Download abgeschlossen ist, installieren Sie die heruntergeladene Datei mit dem folgenden Befehl:
dpkg -i mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb
Standardmäßig speichern Datenknoten alle Konfigurationen in der Datei /etc/my.cnf.
Erstellen Sie also eine neue /etc/my.cnf-Datei auf beiden Datenknoten mit dem folgenden Befehl:
nano /etc/my.cnf
Fügen Sie die Cluster-IP wie unten gezeigt hinzu:
[mysql_cluster]# Optionen für NDB-Cluster-Prozesse:ndb-connectstring=104.245.33.61 #IP des MySQL-Cluster-Managers
Speichern und schließen Sie die Datei und erstellen Sie dann ein Datenverzeichnis auf beiden Datenknoten:
mkdir -p /usr/local/mysql/data
Starten Sie nun die Datenknoten mit folgendem Befehl:
ndbd
Sie sollten die folgende Ausgabe erhalten:
2021-05-10 08:27:13 [ndbd] INFO -- Angel verbunden mit '104.245.33.61:1186'2021-05-10 08:27:13 [ndbd] INFO -- Angel zugeteilte Knoten-ID:2
Beenden Sie als Nächstes den laufenden ndbd-Prozess mit dem folgenden Befehl:
pkill -f ndbd
Erstellen Sie als Nächstes mit dem folgenden Befehl eine systemd-Dienstdatei für ndbd auf beiden Datenknoten:
nano /etc/systemd/system/ndbd.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=MySQL NDB Data Node DaemonAfter=network.target auditd.service[Service]Type=forkingExecStart=/usr/sbin/ndbdExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install ]WantedBy=multi-user.target
Speichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reload
Als nächstes starten Sie den ndbd-Dienst und sorgen dafür, dass er beim Systemneustart mit dem folgenden Befehl startet:
systemctl start ndbd
systemctl enable ndbd
Sie können den Status des ndbd-Dienstes auch mit dem folgenden Befehl überprüfen:
systemctl status ndbd
Sie sollten die folgende Ausgabe erhalten:
Installieren und konfigurieren Sie MySQL Server
Als Nächstes laden wir die MySQL-Server- und -Client-Pakete herunter und installieren sie auf dem MySQL-Cluster-Manager-Knoten.
Laden Sie zunächst die neueste Version von MySQL Cluster Bundle mit dem folgenden Befehl herunter:
wget https://cdn.mysql.com/Downloads/MySQL-Cluster-8.0/mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar
Extrahieren Sie als Nächstes die heruntergeladene Datei im Verzeichnis /opt mit dem folgenden Befehl:
tar -xvf mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar -C /opt
Wechseln Sie als Nächstes in das Verzeichnis /opt und installieren Sie die erforderlichen Abhängigkeiten mit dem folgenden Befehl:
cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y
Als nächstes installieren Sie die MySQL Common deb-Datei mit dem folgenden Befehl:
dpkg -i mysql-common*
Als nächstes installieren Sie die MySQL-Client-Pakete mit dem folgenden Befehl:
dpkg -i mysql-cluster-community-client_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-core_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-plugins_8.0.24-1debian10_amd64.deb
dpkg -i mysql-client_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-server*
Wenn Sie einen Abhängigkeitsfehler erhalten, führen Sie den folgenden Befehl aus:
apt-get install -f
Installieren Sie als Nächstes das MySQL Server-Paket mit dem folgenden Befehl:
dpkg -i mysql-server_8.0.24-1debian10_amd64.deb
Während der Installation werden Sie aufgefordert, ein MySQL-Root-Passwort festzulegen.
Nach der Installation des MySQL-Servers müssen Sie die MySQL-Hauptkonfigurationsdatei bearbeiten und die Cluster-IP definieren:
nano /etc/mysql/my.cnf
Fügen Sie die folgenden Zeilen hinzu:
[mysqld]# Optionen für mysqld-Prozess:ndbcluster # NDB-Speicher-Engine ausführen[mysql_cluster]# Optionen für NDB-Cluster-Prozesse:ndb-connectstring=104.245.33.61 #IP des MySQL-Cluster-Managers
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie als Nächstes den MySQL-Dienst neu und aktivieren Sie ihn so, dass er beim Systemneustart gestartet wird:
systemctl startet mysql neu
systemctl aktiviert mysql
Sie können den Status des MySQL-Servers mit dem folgenden Befehl überprüfen:
systemctl status mysql
Sie sollten die folgende Ausgabe sehen:
Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
MySQL-Cluster testen
Jetzt haben wir den MySQL-Cluster mit drei Knoten erfolgreich installiert und konfiguriert. Als nächstes müssen Sie überprüfen, ob es funktioniert oder nicht.
Melden Sie sich zuerst beim MySQL Cluster Manager-Knoten an und melden Sie sich mit dem folgenden Befehl bei MySQL an:
mysql -u root -p
Geben Sie Ihr MySQL-Root-Passwort ein und überprüfen Sie dann die Cluster-Informationen mit dem folgenden Befehl:
mysql> SHOW ENGINE NDB STATUS \G
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:
*************************** 1. Reihe ***************** ********** Typ:ndbclus Name:connectionStatus:cluster_node_id=4, connected_host=104.245.33.61, connected_port=1186, number_of_data_nodes=2, number_of_ready_data_nodes=2, connect_count=0******** ****************** 2. Reihe ************************** Typ :ndbclus Name:NdbTransactionStatus:created=2, free=2, sizeof=392**************************** 3. Zeile *** ************************ Typ:ndbclus Name:NdbOperationStatus:erstellt=4, frei=4, Größe=944******** ****************** 4. Reihe ************************* Typ :ndbclus Name:NdbIndexScanOperationStatus:created=0, free=0, sizeof=1152**************************** 5. Zeile *** ************************ Typ:ndbclus Name:NdbIndexOperationStatus:erstellt=0, frei=0, Größe=952******** ****************** 6. Reihe ************************* Typ :ndbclus Name:NdbRecAttrStatus:created=0, free=0, sizeof=88**************************** 7. Zeile *** ************************ Typ:ndbclus Name:NdbApiSignalStatus:created=16, free=16, sizeof=144**************************** 8. Zeile **** ********************* Typ:ndbclus Name:NdbLabelStatus:erstellt=0, frei=0, Größe=200********* ***************** 9. Reihe ************************* Typ:ndbclus Name:NdbBranchStatus:created=0, free=0, sizeof=32**************************** 10. Zeile **** ********************** Typ:ndbclus Name:NdbSubroutineStatus:erstellt=0, frei=0, Größe=72********* ***************** 11. Reihe ************************* Typ:ndbclus Name:NdbCallStatus:created=0, free=0, sizeof=24**************************** 12. Zeile **** ********************* Typ:ndbclus Name:NdbBlobStatus:erstellt=0, frei=0, Größe=592********* ***************** 13. Reihe **************************** Typ:ndbclus Name:NdbReceiverStatus:created=0, free=0, sizeof=128**************************** 14. Zeile **** ********************** Typ:ndbclus Name:NdbLockHandleStatus:erstellt=0, frei=0, Größe=48********* * ***************** 15. Zeile ************************* Typ:ndbclus Name:binlogStatus:Latest_epoch=897648164875, Latest_trans_epoch=820338753551, Latest_received_binlog_epoch=0, Latest_handled_binlog_epoch=0, Latest_applied_binlog_epoch=015 Zeilen im Satz (0,00 Sek.)
Verlassen Sie nun die MySQL-Shell mit dem folgenden Befehl:
mysql> beenden
Jetzt führen wir einen weiteren Test durch, um zu bestätigen, dass der Cluster ordnungsgemäß funktioniert.
Verbinden Sie die Cluster-Verwaltungskonsole mit dem folgenden Befehl:
ndb_mgm
Sie sollten die folgende Ausgabe sehen:
-- NDB-Cluster -- Verwaltungsclient --ndb_mgm>
Führen Sie nun den folgenden Befehl aus, um alle Daten-Ndoes zu überprüfen:
ndb_mgm>ZEIGEN
Sie sollten die folgende Ausgabe erhalten:
Mit Verwaltungsserver verbunden unter:104.245.33.61:1186Clusterkonfiguration---------------------[ndbd(NDB)] 2 Knoten-ID=2 @104.245.32.195 (mysql-8.0.24 ndb-8.0.24, Knotengruppe:0, *)id=3 @69.87.218.169 (mysql-8.0.24 ndb-8.0.24, Knotengruppe:0)[ndb_mgmd(MGM) ] 1 Knoten-ID=1 @104.245.33.61 (mysql-8.0.24 ndb-8.0.24)[mysqld(API)] 1 Knoten-ID=4 @104.245.33.61 (mysql-8.0.24 ndb -8.0.24)
Führen Sie den folgenden Befehl aus, um den Status des ersten Datenknotens zu überprüfen:
ndb_mgm> 2 STATUS
Sie sollten die folgende Ausgabe sehen:
Knoten 2:gestartet (mysql-8.0.24 ndb-8.0.24)
Führen Sie den folgenden Befehl aus, um den Status des zweiten Datenknotens zu überprüfen:
ndb_mgm> 3 STATUS
Sie sollten die folgende Ausgabe sehen:
Knoten 3:gestartet (mysql-8.0.24 ndb-8.0.24)
Schlussfolgerung
Herzliche Glückwünsche! Sie haben erfolgreich einen MySQL-Cluster mit drei Knoten auf einem Debian 10-Server installiert und eingerichtet. Sie können dieses Setup jetzt in der Produktionsumgebung verwenden, um Skalierbarkeit und Verfügbarkeit zu erreichen.