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
- 192.168.1.12 × Datenknoten1
- 192.168.1.13 × Datenknoten2
- 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
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 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;
Ü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 des Clusterstatus vom Verwaltungsknoten aus:
ndb_mgm show
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.