MySQL Cluster wurde entwickelt, um eine MySQL-kompatible Datenbank mit hoher Verfügbarkeit und geringer Latenz bereitzustellen. Die MySQL-Cluster-Technologie wird durch die Speicher-Engines NDB (Network DataBase) und NDBCLUSTER implementiert und bietet Shared-Nothing-Clustering und Auto-Sharding für MySQL-Datenbanksysteme. In der Shared-Nothing-Architektur hat jeder Knoten seinen eigenen Speicher und seine eigene Festplatte, die Verwendung von gemeinsam genutztem Speicher wie NFS, SANs wird nicht empfohlen und unterstützt.
Um einen MySQL-Cluster zu implementieren, müssen wir drei Arten von Knoten installieren. Jeder Knotentyp wird auf einem eigenen Server installiert. Die Komponenten sind:
1. Verwaltungsknoten – NDB_MGMD/MGM
Der Clusterverwaltungsserver wird verwendet, um den anderen Knoten des Clusters zu verwalten. Wir können vom Verwaltungsknoten aus neue Knoten erstellen und konfigurieren, Knoten im Cluster neu starten, löschen oder sichern.
2. Datenknoten – NDBD/NDB
Dies ist die Ebene, auf der der Prozess der Synchronisierung und Datenreplikation zwischen Knoten stattfindet.
3. SQL-Knoten – MySQLD/API
Die Schnittstellenserver, die von den Anwendungen verwendet werden, um eine Verbindung zum Datenbankcluster herzustellen.
In diesem Tutorial führe ich Sie durch die Installation und Konfiguration eines MySQL-Clusters mit centOS 7. Wir konfigurieren den Verwaltungsknoten, zwei Datenknoten und zwei SQL-Knoten.
Voraussetzungen
- Das Betriebssystem ist CentOS 7 - 64bit.
- 5 CentOS-Server oder virtuelle Maschinen. Ich werde die Hostnamen und IP-Adressen wie unten gezeigt verwenden:
- Verwaltungsknoten
db1 =192.168.1.120 - Datenknoten
db2 =192.168.1.121
db3 =192.168.1.122 - SQL-Knoten
db4 =192.168.1.123
db5 =192.168.1.124
Schritt 1 – Verwaltungsknoten einrichten
Der erste Schritt besteht darin, den "Management Node" mit CentOS 7 db1 zu erstellen und IP 192.168.1.120 . Stellen Sie sicher, dass Sie als Root-Benutzer beim db1-Server angemeldet sind.
A. Laden Sie die MySQL Cluster-Software herunter
Ich werde es von der MySQL-Site mit wget herunterladen. Ich verwende hier das "Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle ", das mit CentOS 7 kompatibel ist. Extrahieren Sie dann die tar-Datei.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Pakete installieren und entfernen
Bevor Sie das RPM-Paket für MySQL Cluster installieren, müssen Sie perl-Data-Dumper installieren die vom MySQL-Cluster-Server benötigt wird. Und Sie müssen mariadb-libs entfernen bevor wir MySQL Cluster installieren können.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. MySQL-Cluster installieren
Installieren Sie das MySQL Cluster-Paket mit diesen RPM-Befehlen:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Stellen Sie sicher, dass kein Fehler vorliegt.
D. MySQL-Cluster konfigurieren
Erstellen Sie ein neues Verzeichnis für die Konfigurationsdateien. Ich werde das Verzeichnis "/var/lib/mysql-cluster" verwenden.
mkdir -p /var/lib/mysql-cluster
Erstellen Sie dann eine neue Konfigurationsdatei für die Clusterverwaltung mit dem Namen "config.ini " im mysql-cluster-Verzeichnis.
cd /var/lib/mysql-cluster
vi config.ini
Fügen Sie die Konfiguration unten ein:
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124
Speichern Sie die Datei und beenden Sie sie.
E. Starten Sie den Verwaltungsknoten
Starten Sie als Nächstes den Verwaltungsknoten mit dem folgenden Befehl:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Das Ergebnis sollte ungefähr so aussehen:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory
Der Verwaltungsknoten wird gestartet, jetzt können Sie den Befehl "ndb_mgm" verwenden, um den Knoten zu überwachen:
ndb_mgm
show
Sie können sehen, dass der Verwaltungsknoten gestartet wurde mit:mysql-6.6 und ndb-7.4.
Schritt 2 – Einrichten der MySQL-Cluster-Datenknoten
Wir werden 2 CentOS-Server für die Datenknoten verwenden.
- db2 =192.168.1.121
- db3 =192.168.1.122
A. Melden Sie sich als Root-Benutzer an und laden Sie die MySQL Cluster-Software herunter
Melden Sie sich mit ssh beim db2-Server an:
ssh [email protected]
Laden Sie dann das MySQL Cluster-Paket herunter und extrahieren Sie es:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Pakete installieren und entfernen
Installieren Sie perl-Data-Dumper und entfernen Sie die mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. MySQL-Cluster installieren
Jetzt können wir die MySQL Cluster-Pakete für die Datenknoten mit diesen rpm-Befehlen installieren:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Stellen Sie sicher, dass kein Fehler vorliegt.
D. Datenknoten konfigurieren
Erstellen Sie mit dem vi-Editor eine neue Konfigurationsdatei im Verzeichnis /etc:
vi /etc/my.cnf
Konfiguration unten einfügen:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node
Speichern Sie die Datei und beenden Sie sie.
Erstellen Sie dann das neue Verzeichnis für die Datenbankdaten, die wir in der Verwaltungsknoten-Konfigurationsdatei "config.ini" definiert haben.
mkdir -p /var/lib/mysql-cluster
Starten Sie nun den Datenknoten/ndbd:
ndbd
Ergebnisse:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2
Datenknoten db2 verbunden mit der Verwaltungsknoten-IP 192.168.1.120.
E. Wiederholen Sie die Schritte 2.A - 2.D auf dem db3-Server.
Da wir 2 Datenknoten haben, wiederholen Sie bitte die Schritte 2.A - 2.D auf unserem zweiten Datenknoten.
Schritt 3 – SQL-Knoten einrichten
Dieser Schritt enthält die Einrichtung für den SQL-Knoten, der den Anwendungszugriff auf die Datenbank bereitstellt. Wir verwenden 2 CentOS-Server für die SQL-Knoten:
- db4 =192.168.1.123
- db5 =192.168.1.124
A. Anmelden und MySQL Cluster herunterladen
Melden Sie sich als Root-Benutzer beim db4-Server an:
ssh [email protected]
Und laden Sie das MySQL Cluster-Paket herunter:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Pakete installieren und entfernen
Installieren Sie perl-Data-Dumper und entfernen Sie die mariadb-libs, die mit MySQL Cluster in Konflikt stehen.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. MySQL-Cluster installieren
Installieren Sie den MySQL Cluster-Server, -Client und das gemeinsam genutzte Paket mit den folgenden rpm-Befehlen:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
D. Konfigurieren Sie den SQL-Knoten
Erstellen Sie eine neue my.cnf-Datei im /etc-Verzeichnis:
vi /etc/my.cnf
Und fügen Sie die Konfiguration unten ein:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node
Speichern Sie die Datei und verlassen Sie den Editor.
Starten Sie den SQL-Knoten, indem Sie den MySQL-Server starten:
service mysql start
E. Wiederholen Sie die Schritte 3.A - 3.D auf dem db5-Server.
Bitte wiederholen Sie die Schritte 3.A - 3.D auf dem zweiten SQL-Server (db5).
Schritt 4 – Cluster überwachen
Um den Clusterstatus zu sehen, müssen wir uns beim Verwaltungsknoten db1 anmelden.
ssh [email protected]
Wir können den Befehl ndb_mgm verwenden, um den Clusterstatus anzuzeigen:
ndb_mgm
ndb_mgm> show
Ein weiterer nützlicher Befehl ist:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
Schritt 5 – Testen des Clusters
Um einen Test auf unserem neuen MySQL-Cluster durchzuführen, müssen wir uns bei den db4- oder db5-Servern der SQL-Knoten anmelden.
Melden Sie sich beim db4-Server an:
ssh [email protected]
Ändern Sie das standardmäßige MySQL-Passwort, das in ".mysql_secret gespeichert ist " Datei im Stammverzeichnis:
cd ~
cat .mysql_secret
das ist mein Beispiel:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
Ändern Sie nun das Passwort mit dem folgenden Befehl:
mysql_secure_installation
Geben Sie Ihr altes MySQL-Passwort und dann das neue ein und drücken Sie die Eingabetaste, um alles zu bestätigen.
Wenn alles erledigt ist, können Sie sich mit Ihrem Passwort bei der MySQL-Shell anmelden:
mysql -u root -p
Nachdem Sie sich angemeldet haben, erstellen Sie einen neuen Root-Benutzer mit dem Host „@ ", damit wir von außen auf MySQL zugreifen können.
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Ersetzen Sie aqwe123 mit Ihrem eigenen sicheren Passwort! Jetzt können Sie den neuen Root-Benutzer mit dem Host „@“ in der MySQL-Benutzerliste sehen:
select user, host, password from mysql.user;
Und gewähren Sie dem neuen Root-Benutzer Lese- und Schreibzugriff vom Remote-Knoten:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
Versuchen Sie jetzt, eine neue Datenbank vom db4-Server zu erstellen, und Sie werden die Datenbank auch auf db5 sehen.
Dies ist nur ein Beispielergebnis zum Testen der Cluster-Datenreplikation.
Der MySQL-Cluster wurde erfolgreich auf CentOS 7 mit 5 Serverknoten eingerichtet.
Schlussfolgerung
MySQL Cluster ist eine Technologie, die Hochverfügbarkeit und Redundanz für MySQL-Datenbanken bietet. Es verwendet NDB oder NDBCLUSTER als Speicher-Engine und bietet Shared-Nothing-Clustering und Auto-Sharding für MySQL-Datenbanken. Um den Cluster zu implementieren, benötigen wir 3 Komponenten:Management Node (MGM), Data Nodes (NDB) und SQL Nodes (API). Jeder Knoten muss seinen eigenen Speicher und seine eigene Festplatte haben. Es wird nicht empfohlen, Netzwerkspeicher wie NFS zu verwenden. Um MySQL Cluster auf einem CentOS 7-Minimalsystem zu installieren, müssen wir das mariadb-libs-Paket entfernen, mariadb-libs steht in Konflikt mit MySQL-Cluster-Server und Sie müssen das perl-Data-Dumper-Paket installieren, es wird von MySQL-Cluster benötigt -Server. Ein MySQL-Cluster lässt sich einfach auf mehreren CentOS-Servern installieren und konfigurieren.