Wie man einen MySQL Cluster unter Ubuntu 16.04 installiert

MySQL Cluster ist eine Technologie zur Bereitstellung einer hohen 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 und nutzt automatisches Sharding (Partitionierung) zur Skalierung von Lese- und Schreibvorgängen.

Um einen MySQL Cluster zu implementieren, benötigen wir 3 verschiedene Arten von Knoten:

  • Verwaltungsknoten (ndb_mgmd)
    • Dient zur Überwachung und Konfiguration des Clusters.
  • Datenknoten (ndbd)
    • Diese Knoten werden verwendet, um die Daten zu speichern, die sie automatisch freigeben und die Replikation durchführen können.
  • SQL-Knoten (mysqld)
    • MySQL Server-Schnittstellen für die Verbindung zu 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
  1. 192.168.1.12 × Datenknoten1
  2. 192.168.1.13 × Datenknoten2
  3. 192.168.1.14 × sql-node
  • Root-Privilegien auf den Knoten.

Schritt 1 – Installation und Konfiguration des Management Knotens

In diesem Schritt installieren wir den Managementknoten für unseren Cluster mit der IP-Adresse 192.168.1.11. Wir installieren die MySQL-Cluster-Software und konfigurieren sie als Managementknoten für den Cluster.

Melden Sie sich am Verwaltungsknoten mit ssh an:

ssh root@192.168.1.11
TYPE YOUR PASSWORD

A. MySQL Cluster Management Node installieren

Ö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 die Schaltfläche‘Download‚ klicken.

Laden Sie das MySQL-Cluster-Paket mit wget herunter und entpacken 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

Benennen Sie das Verzeichnis in mysql um:

mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/

Gehen Sie in das Verzeichnis mysql und kopieren Sie die beiden Binärdateien für den Cluster-Management-Befehl ’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 Managementknoten, indem Sie ein neues Verzeichnis ‚mysql-cluster‘ für die Konfigurationsdateien im Verzeichnis ‚/var/lib/‘ anlegen.

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 untenstehende Konfiguration 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

# Data Node 1
[ndbd]
hostname=192.168.1.12
DataDir= /var/lib/mysql-cluster

# Data Node 1
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster

# SQL Node
[mysqld]
hostname=192.168.1.14

# If you to add new SQL Node
[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 entsprechend Ihrem Setup.

Speichern Sie die Datei und beenden Sie sie.

Als nächstes starten Sie den Prozess des Management Node mit dem folgenden Befehl:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/

Machen Sie es so, dass es beim Booten gestartet wird, indem Sie den Befehl zur Datei‘/etc/rc.local‚ hinzufügen:

echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local

Wenn du die Ergebnisse siehst:

MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12

Dann läuft der Management-Knotenprozess.

Überprüfen Sie den Verwaltungsknoten mit einem anderen Befehl:

# Checking port 1186 used by ndb_mgmd
netstat -plntu

# Checking the management node is ready
ndb_mgm
show

Der MySQL Cluster-Verwaltungsknoten wurde gestartet.

Schritt 2 – Installation und Konfiguration des Datenknotens

In diesem Schritt installieren wir die MySQL-Cluster-Software und konfigurieren sie als Datenknoten. Als Datenknoten werden 2 ubuntu 16.04 Server verwendet: data-node1 mit IP-Adresse 192.168.1.12 und data-node2 mit IP-Adresse 192.168.1.13.

Melden Sie sich am Data-node1-Server mit ssh an:

ssh root@192.168.1.12

A. MySQL Cluster auf dem Datenknoten installieren

Bevor wir die MySQL-Cluster-Software installieren, müssen wir ein neues Paket‘libaio1‚ installieren und einen neuen Benutzer und eine neue Gruppen-Mysql erstellen. 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-Cluster-Paket‘Linux-Generic‚ herunter, entpacken und benennen Sie das Verzeichnis 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‘ auf’/usr/local/‘ und gehen Sie zu diesem Verzeichnis.

mv mysql /usr/local/
cd /usr/local/mysql/

Führen Sie das Skript zum Erstellen der Systemdatenbanken aus:

./scripts/mysql_install_db --user=mysql

Wenn kein Fehler vorliegt, kopieren Sie die mysql-Servicedatei in das Verzeichnis‘/etc/init.d‚ 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 mysql

Als nächstes verschieben Sie alle mysql-Binärbefehle in das Verzeichnis‘/usr/local/bin‚ und erstellen 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 auf user root und group mysql, und ändern Sie das Datenverzeichnis auf mysql als Besitzer.

chown -R root:mysql .
chown -R mysql data

B. MySQL Cluster Datenknoten konfigurieren

Erstellen Sie eine neue mysql-Konfigurationsdatei ‚my.cnf‚ mit vim:

vim /etc/my.cnf

Füge die Konfiguration unten ein:

# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11

[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11

# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Speichern und beenden.

Erstellen Sie ein neues Verzeichnis für die Datenknoten und ändern Sie den Besitzer auf den mysql-Benutzer.

mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-cluster

C. MySQL auf dem Datenknoten starten

Starten Sie den mysql-Dienst mit dem folgenden Befehl:

ndbd --initial
systemctl start mysql

Stellen Sie sicher, dass kein Fehler vorliegt und die Ergebnisse unten stehen (Datenknoten2):

MySQL auf dem Datenknoten starten

MySQL auf dem Datenknoten wird gestartet. Nun können Sie das MySQL-Passwort mit dem Befehl konfigurieren:

mysql_secure_installation

oder auf die MySQL-Shell zugreifen.

mysql -u root -p

HINWEIS:
Wiederholen Sie diesen Schritt auf der IP-Adresse des‘data-node2‚ Servers 192.168.1.13.

Schritt 3 – Installation und Konfiguration des SQL-Knotens

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 am SQL-Knoten mit ssh an:

ssh root@192.168.1.14

A. MySQL Cluster auf dem SQL-Knoten installieren

Installiere das libaio1-Paket und erstelle einen neuen Benutzer und eine neue Gruppe mysql:

apt-get install libaio1
groupadd mysql
useradd -g mysql mysql

Laden 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 das Skript mysql_install_db aus:

./scripts/mysql_install_db --user=mysql

Kopieren Sie die Servicedatei und fügen Sie sie hinzu, die beim Booten gestartet werden soll:

cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql

Verschieben Sie alle mysql-Binärdateien in das Verzeichnis’/usr/local/bin‘:

mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/

Ändere den Besitzer aller Dateien und das Verzeichnis:

chown -R root:mysql .
chown -R mysql data

B. MySQL Cluster SQL-Knoten konfigurieren

Erstellen Sie eine neue my.cnf-Konfigurationsdatei mit vim:

vim /etc/my.cnf

Fügen Sie die untenstehende Konfiguration ein:

# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11

[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11

# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Speichern und beenden.

C. Starten Sie den SQL-Knoten

Starten Sie den SQL-Knoten, indem Sie den mysql-Dienst mit dem Befehl systemctl starten:

systemctl start mysql

Der SQL Node ist gestartet, nun können Sie das Passwort für MySQL konfigurieren.

mysql_secure_installation

Schritt 4 – Prüfung

Testen Sie, um eine neue Datenbank aus dem SQL-Knoten zu erstellen.

mysql -u root -p
TYPE PASSWORD

create database nanana;

Erstellen einer Testdatenbank im Cluster

Überprüfen Sie, ob die Datenbank auf den Datenknoten-Servern repliziert ist.
Und wenn ein Knoten ausgeschaltet ist, übernimmt ein anderer Knoten die Verbindung vom SQL-Knoten aus.

mysql -u root -p
TYPE PASSWORD

show databases;

Überprüfen der Datenbank vom Datenknoten aus

Überprüfen des Clusterstatus vom Verwaltungsknoten aus:

ndb_mgm
show

Überprüfen Sie den Clusterstatus

Schritt 5 – Zusätzliche Tipps

Durchführen eines sicheren Neustarts und Herunterfahrens des Clusters.

Gehen Sie zum Cluster-Management-Knoten und geben Sie den folgenden Befehl ein, um den Cluster herunterzufahren:

ndb_mgm
shutdown

Der Befehl beendet alle ndb-Dienste auf Datenknoten.

Wenn Sie den Cluster neu starten möchten, können Sie untenstehenden Befehl auf dem Managementknoten 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 start mysql

Starten Sie dann den mysql-Dienst auf den SQL-Knoten:

systemctl start mysql

Jetzt läuft Ihr MySQL Cluster wieder.

Referenz

Das könnte Dich auch interessieren …