MySQL Cluster 7.5.5 unter Ubuntu 16.04 aufsetzen – Schritt für Schritt

Von | 28. Februar 2017

Worum geht es? Aufsetzen eines MySQL Cluster unter Ubuntu 16.04 (Server).

Es gibt eine ganze Reihe von Tutorials zu dem Thema, leider hatte keines welches ich ausprobiert habe alle Schritte „richtig“ beschrieben. Mit MySQL 7.5.5 gab es verschiedene Änderungen, die meistens nicht eingepflegt wurden. Aus diesem Grunde probieren wir auch heute mal das Installieren eines entsprechenden MySQL-Clusters aus.

Wir werden dafür 3 VMs verwenden (zur Abwechslung mal kein Docker).

  • 1 Management/SQL Node
  • 2 Data Nodes

Wichtig: Das wird kein Produktivsystem, für vernünftige Verfügbarkeit sollten es mindestens 4 Data Nodes, 2 Management Nodes und 2 SQL Nodes sein.

Was sind die unterschiedlichen Typen von Nodes

  • Der Management Node kümmert sich wie der Name schon sagt, um die Verwaltung des Clusters, Konfiguration etc.
  • Der SQL Node ist quasi der Eingang zum Cluster, von hier kommen die Querys (betrachte ihn als API)
  • Die Data Nodes bilden den eigentlichen Cluster, und speichern unsere Datenbanken

Installation der VMs

Damit die Installation unserer VMs möglichst einfach bleibt, habe ich für uns ein kleines Vagrant File gebaut, welches die 3 Ubuntu 16.04 VMs bastelt, und die benötigten MySQL Cluster Downloads ausführt.

Nebenbei wird der „avahi-daemon“ installiert, um die Server einfach über einen Hostnamen zu erreichen. Sprich bevor wir loslegen, installiere dir bitte Vagrant und VirtualBox auf deinem Rechner.

Als nächstes lege dir auf deinem Rechner einen Ordner an, und erstelle dort das „Vagrantfile“, mit folgendem Inhalt (vielleicht musst du, wenn kein MacBook als Workstation genutzt, wird die Zeilen „Network“ ändern und dort deinen primären Adapter eintragen).

Was passiert hier nun magisches? Erstellen von 3 VMs mit Ubuntu 16.04, einrichten Bridge Network auf WLAN Adapter des MacBooks, installieren avahi-daemon und Download sowie Installation des MySQL Cluster Paketes.

Nun wechsel in den Ordner wo dein Vagrantfile liegt, und starte das Aufsetzen der 3 VMs, durch die vielen Downloads kann es abhängig von deiner Leitung etwas dauern.

Einrichten des Management Nodes

Mittels „vagrant ssh management“ kommst du auf die Shell des Nodes, hier legen wir jetzt die Konfiguration an.

Die config.ini:

Denke ist selbsterklärend, wir sagen dem Management-Node wo er seine Data Nodes und den SQL Node findet (welcher in unserem Beispiel der gleiche ist wie der Management-Node).

Als nächstes starten wir den Dienst und sorgen dafür dass dieser auch bei einem Reboot erneut startet:

Da wir wie gesagt für dieses Beispiel Management und SQL Node auf der gleichen VM haben, müssen wir jetzt noch den SQL Node vorbereiten. Hierfür legen wir einen neuen Benutzer ohne Zugriff auf die Shell an, starten den MySQL-Daemon, und initialisieren die DB. Wichtig: Beim Teil mit dem „–initalize“ das generierte Root Kennwort aufschreiben!

Konfigurieren und Instalieren des Mysqld

Ok .. eine Menge Dinge zu erledigen, lässt man zum Beispiel das Erzeugen des „/var/lib/mysql-files“ wech, startet die ganze Geschichte nicht.. ich vermute das liegt daran, dass SQL und Management Node auf der gleichen VM laufen..

Einrichten der Data Nodes

Selbes spiel, wir verbinden uns mit „vagrant ssh data1“ bzw „vagrant ssh data2“ mit unseren Data Nodes und richten diese ein.

Das ganze machst du selbstverständlich auf beiden Nodes!

Testen unseres Cluster

Um jetzt festzustellen, ob wir auch alles halbwegs richtig gemacht haben, verbinden wir uns wieder erneut mit SSH mit dem Management/SQL-Node und probieren das ganze über das Cluster-Manager Tool und dem MySQL-Client mal aus.

Hier reicht der Befehl „SHOW“ um einen Überblick über unseren schönen MySQL Cluster zu erhalten.

Um jetzt „ganz normal“ mit unserem MySQL Client zu arbeiten, legen wir einen Symlink an, melden uns hier als root user und ändern das Kennwort (ansonsten können wir keine Befehle absetzen).

So das war’s auch schon, bissel komplizierter als so ein PosgtreSQL Cluster, aber machbar. Wie bereits am Anfang erwähnt: Für eine produktive Umgebung sollten es schon ein paar VMs mehr sein und sich etwas mehr mit dem Thema zu beschäftigen. Mir ist auch klar, nicht Perfekt diese Anleitung – aber die ersten Versuche mit MySQL als Cluster sollte es reichen. Verbesserungen immer gerne – Kommentar!

Mir wurde dafür das Buch: MySQL High Availability: Tools for Building Robust Data Centers(*) empfohlen, habe es aber auch noch nicht bestellt.