MySQL Cluster ist eine Technologie zur Bereitstellung hoher Verfügbarkeit für MySQL-Datenbanken. Es verwendet NDB (Network DataBase) oder NDBCLUSTER als Datenbankspeicher-Engine. MySQL Cluster ist als Multi-Master-ACID-Architektur ohne Single Point of Failure konzipiert, es verwendet automatisches Sharding (Partitionierung), um Lese- und Schreibprozesse aufzuskalieren.
Um einen MySQL-Cluster zu implementieren, benötigen wir 3 verschiedene Arten von Knoten:
- Verwaltungsknoten (ndb_mgmd )
- Wird zum Überwachen und Konfigurieren des Clusters verwendet.
- Datenknoten (ndbd )
- Diese Knoten werden verwendet, um die Daten zu speichern, die sie für automatisches Sharding bereitstellen, und können die Replikation handhaben.
- SQL-Knoten (mysqld )
- MySQL Server-Schnittstellen zum Verbinden mit allen Knoten.
In diesem Tutorial zeige ich Ihnen, wie Sie einen „MySQL-Cluster“ auf Ubuntu 16.04 LTS (Xenial Xerus) installieren.
Voraussetzungen
- 4 Knoten mit Ubuntu-Server 16.04
- 192.168.1.11 Verwaltungsknoten
- 192.168.1.12 Datenknoten1
- 192.168.1.13 Datenknoten2
- 192.168.1.14 SQL-Knoten
- Root-Rechte auf den Knoten.
Schritt 1 – Installieren und konfigurieren Sie den Management-Knoten
In diesem Schritt installieren wir den Verwaltungsknoten für unseren Cluster mit der IP-Adresse 192.168.1.11. Wir installieren die MySQL-Cluster-Software und konfigurieren sie als Verwaltungsknoten für den Cluster.
Melden Sie sich mit ssh beim Verwaltungsknoten an:
ssh [email protected]
GEBEN SIE IHR PASSWORT EIN
A. Installieren Sie den MySQL Cluster Management Node
Öffnen Sie hier die MySQL-Cluster-Site und wählen Sie die Option 'Linux-generic ' und laden Sie das 64-Bit-Paket herunter, indem Sie auf 'Herunterladen klicken ' Schaltfläche.
Laden Sie das MySQL-Cluster-Paket mit wget herunter und extrahieren Sie es.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
Verzeichnis umbenennen in mysql:
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/mysql/
Wechseln Sie in das mysql-Verzeichnis und kopieren Sie die 2 Binärdateien für den Clusterverwaltungsbefehl 'ndb_mgmd und ndb_mgm ' in das Verzeichnis '/usr/local/bin/' und machen Sie sie dann mit dem Befehl chmod ausführbar.
cd ~/mysql/
cp bin/ndb_mgm* /usr/local/bin/
chmod +x /usr/local/bin/ndb_mgm*
B. MySQL Cluster Management Node konfigurieren
Konfigurieren Sie den Verwaltungsknoten, indem Sie ein neues Verzeichnis „mysql-cluster“ für die Konfigurationsdateien im Verzeichnis „/var/lib/“ erstellen.
Erstellen Sie ein Verzeichnis ‚mysql-cluster‘ und erstellen Sie eine neue Konfiguration ‚config.ini‘ im Verzeichnis:
mkdir -p /var/lib/mysql-cluster/
vim /var/lib/mysql-cluster/config.ini
Fügen Sie die Konfiguration unten ein:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[mysqld default]
[ndb_mgmd default]
[tcp default]
# Cluster Control / Management node
[ndb_mgmd]
hostname=192.168.1.11
# Datenknoten 1
[ndbd]
hostname=192.168.1.12
DataDir=/var/lib/mysql-cluster
# Datenknoten 1
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster
# SQL-Knoten
[mysqld]
hostname=192.168.1.14
# Wenn Sie einen neuen SQL-Knoten hinzufügen
[mysqld]
Ändern Sie die IP-Adresse von ndb_mgmd für die Verwaltung, ndbd für den Datenknoten und mysqld für den SQL-Knoten so, dass sie zu Ihrer Einrichtung passt.
Speichern Sie die Datei und beenden Sie sie.
Starten Sie als Nächstes den Verwaltungsknotenprozess mit dem folgenden Befehl:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Sorgen Sie dafür, dass es beim Booten gestartet wird, indem Sie den Befehl zu '/etc/rc.local hinzufügen ' Datei:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/'>> /etc/rc.local
Wenn Sie die Ergebnisse sehen:
MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12
Dann wird der Verwaltungsknotenprozess ausgeführt.
Überprüfen Sie den Verwaltungsknoten mit einem anderen Befehl:
# Überprüfung von Port 1186, der von ndb_mgmd verwendet wird
netstat -plntu
# Überprüfung, dass der Verwaltungsknoten bereit ist
ndb_mgm
show
Schritt 2 – Installieren und konfigurieren Sie den Datenknoten
In diesem Schritt installieren wir die MySQL-Cluster-Software und konfigurieren sie als Datenknoten. Wir werden 2 Ubuntu 16.04-Server als Datenknoten verwenden:Datenknoten1 mit der IP-Adresse 192.168.1.12 und Datenknoten2 mit der IP-Adresse 192.168.1.13.
Melden Sie sich mit ssh beim data-node1-Server an:
ssh [E-Mail-geschützt]
A. Installieren Sie MySQL Cluster auf dem Datenknoten
Bevor wir die MySQL-Cluster-Software installieren, müssen wir ein neues Paket 'libaio1 installieren ' und erstellen Sie einen neuen Benutzer und eine neue Gruppe mysql . Führen Sie dazu den folgenden Befehl als root aus:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
Laden Sie nun das MySQL-Clusterpaket 'Linux-Generic herunter ', extrahieren Sie das Verzeichnis und benennen Sie es in mysql um.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/mysql/Verschieben Sie das Verzeichnis „mysql“ nach „/usr/local /' und gehe in dieses Verzeichnis.
mv mysql /usr/local/
cd /usr/local/mysql/Führen Sie das Skript zum Erstellen der Systemdatenbanken aus:
./scripts/mysql_install_db --user=mysqlWenn kein Fehler auftritt, kopieren Sie die mysql-Dienstdatei nach „/etc/init.d '-Verzeichnis und fügen Sie das mysql-Startskript hinzu, das beim Booten ausgeführt wird.
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysqlVerschieben Sie als Nächstes alle mysql-Binärbefehle in den Ordner „/usr/local/bin ' Verzeichnis und erstelle einen neuen Symlink.
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/Ändern Sie den Besitzer des mysql-Verzeichnisses in Benutzer root und gruppieren Sie mysql und ändern Sie das Datenverzeichnis in mysql als Besitzer.
chown -R root:mysql .
chown -R mysql-DatenB. MySQL-Cluster-Datenknoten konfigurieren
Erstellen Sie eine neue MySQL-Konfigurationsdatei 'my.cnf ' mit vim:
vim /etc/my.cnfKonfiguration unten einfügen:
# MySQL-Konfiguration
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# NDB-Speichermodul ausführen
ndbcluster
# IP-Adressverwaltungsknoten
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP-Adressverwaltungsknoten
ndb-connectstring=192.168.1.11
# MySQL Pid und Log
[mysqld_safe]
log-error=/var/log/mysqld. log
pid-file=/var/run/mysqld/mysqld.pidSpeichern und beenden.
Erstellen Sie ein neues Verzeichnis für die Datenknoten und ändern Sie den Besitz auf den mysql-Benutzer.
mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-clusterC. Starten Sie MySQL auf dem Datenknoten
Starten Sie den mysql-Dienst mit dem folgenden Befehl:
ndbd --initial
systemctl mysql startenStellen Sie sicher, dass kein Fehler vorliegt und die Ergebnisse unten sind (data-node2):
MySQL auf dem Datenknoten wird gestartet. Jetzt können Sie das MySQL-Passwort mit dem Befehl konfigurieren:
mysql_secure_installationoder greifen Sie auf die MySQL-Shell zu.
mysql -u root -pHINWEIS :
Wiederholen Sie diesen Schritt auf 'data-node2 ' Server-IP-Adresse 192.168.1.13.
Schritt 3 – SQL-Knoten installieren und konfigurieren
In diesem Schritt installieren wir die MySQL Cluster-Software und konfigurieren sie als SQL-Knoten. Dieser Knoten wird für den Zugriff auf die Datenbanken auf den Datenknoten verwendet. Der Installationsprozess ist derselbe wie beim Datenknoten, aber wir müssen den ndbd-Dienst nicht im SQL-Knoten ausführen.
Melden Sie sich mit ssh:
beim SQL-Knoten anssh [E-Mail-geschützt]A. Installieren Sie MySQL Cluster auf dem SQL-Knoten
Installieren Sie das Paket libaio1 und erstellen Sie einen neuen Benutzer und eine neue Gruppe mysql:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysqlLaden Sie das MySQL-Cluster-Paket von der Website herunter, extrahieren Sie es und benennen Sie es um:
http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar - xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/mysql/Verschieben Sie das mysql-Verzeichnis:
mv mysql /usr/local/
cd /usr/local/mysql/Führen Sie mysql_install_db aus Skript:
./scripts/mysql_install_db --user=mysqlKopieren Sie die Dienstdatei und fügen Sie sie hinzu, damit sie beim Booten gestartet wird:
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysqlVerschieben Sie alle MySQL-Binärdateien in das Verzeichnis „/usr/local/bin ' Verzeichnis:
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/Ändern Sie den Eigentümer aller Dateien und des Verzeichnisses:
chown -R root:mysql .
chown -R mysql-DatenB. MySQL-Cluster-SQL-Knoten konfigurieren
Erstellen Sie eine neuemy.cnf Konfigurationsdatei mit vim:
vim /etc/my.cnfFügen Sie die Konfiguration unten ein:
# MySQL-Konfiguration
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# NDB-Speichermodul ausführen
ndbcluster
# IP-Adressverwaltungsknoten
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP-Adressverwaltungsknoten
ndb-connectstring=192.168.1.11
# MySQL Pid und Log
[mysqld_safe]
log-error=/var/log/mysqld. log
pid-file=/var/run/mysqld/mysqld.pidSpeichern und beenden.
C. Starten Sie den SQL-Knoten
Starten Sie den SQL-Knoten, indem Sie den mysql-Dienst mit dem Befehl systemctl starten:
systemctl mysql startenDer SQL-Knoten wird gestartet, jetzt können Sie das Passwort für MySQL konfigurieren.
mysql_secure_installation
Schritt 4 – Testen
Testen Sie, um eine neue Datenbank aus dem SQL-Knoten zu erstellen.
mysql -u root -p
PASSWORT EINGEBEN
Datenbank nanana erstellen;
Überprüfen Sie, ob die Datenbank auf den Datenknotenservern repliziert wird.
Und wenn ein Knoten ausgeschaltet ist, übernimmt ein anderer Knoten die Verbindung vom SQL-Knoten.mysql -u root -p
PASSWORT EINGEBEN
Datenbanken anzeigen;
Überprüfen des Clusterstatus vom Verwaltungsknoten:
ndb_mgm
anzeigen
Schritt 5 – Zusätzliche Tipps
Durchführen eines sicheren Neustarts und Herunterfahrens des Clusters.
Gehen Sie zum Clusterverwaltungsknoten und geben Sie den folgenden Befehl ein, um den Cluster herunterzufahren:
ndb_mgm
HerunterfahrenDer Befehl beendet alle ndb-Dienste auf Datenknoten.
Wenn Sie den Cluster erneut starten möchten, können Sie den folgenden Befehl auf dem Verwaltungsknoten ausführen:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Und führen Sie den folgenden Befehl auf allen Datenknoten aus:
ndbd
systemctl mysql startenStarten Sie dann den mysql-Dienst auf dem/den SQL-Knoten:
systemctl mysql startenJetzt läuft Ihr MySQL-Cluster wieder.