Bei der Recherche nach einer geeigneten Software für einen MySQL Cluster, bin ich auf das Tool Galera-Cluster gestoßen. Um im Besitz einer Datenreplikation zu sein, müssen Daten mehrfach an verschiedenen Standorten aufbewahrt werden. Galera ist in der Lage synchron die Daten, die in eine Datenbank geschrieben werden, außerdem in eine weitere Datenbank zu schreiben. Sinnvoll ist das, wenn die Datenbanken sich auf verschiedenen Servern befinden. Der Cluster kann aus beliebig vielen Knoten bestehen. In meinem Beispiel verwende ich zwei Knoten.

Vorteile:

  • Active-Active-Cluster
  • Synchrone Replikation möglich

Active-Active-Cluster

Auf beiden Servern können Daten eingeliefert werden. Durch die Synchronisation werden die Daten in beiden Datenbanken gespeichert.

Synchrone Replikation möglich

Alle Datenbanken werden mit nur einer einzigen Transaktion aktualisiert.

Vorteile der Synchronen-Replikation:

  • Die Synchronizität bietet eine hohe Verfügbarkeit (Stichwort High Availability)
    • Kein Datenverlust wenn ein Knoten nicht verfügbar ist
    • Die Replikation bleibt konsistent
  • Verbesserte Performance
    • Transaktionen können auf allen Knoten ausgeführt werden
  • Kausalität unter den Knoten
    • Eine Abfrage die unmittelbar nach einer Transaktion ausgegeben wird, sieht immer das Ergebnis der Transaktion. Auch wenn die Transaktion auf einem andern Knoten ausgeführt wurde

Einrichtung eines Galera Clusters

Installation

  1. Es müssen folgende Pakete installiert werden:
    • apt-get install python-software-properties
  2. GPG Repository hinzufügen
    • a. apt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA
  3. Codership Repository (Galera Cluster for MySQL) in /etc/apt/sources.list hinzufügen
    • a. deb http://releases.galeracluster.com/debian jessie main
  4. Anschließend das System updaten und die Pakete galera-3, galera-arbitrator-3 und mysql-wsrep-5.6 installieren
    • a. apt-get update
    • b. apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.6

Konfiguration

Die Konfigurationsdatei /etc/mysql/my.cnf muss angepasst werden

Starten des Clusters

Der erste Knoten wird mit dem Übergabeparameter --wsrep-new-cluster gestartet werden.

Wenn der Knoten Teil des Clusters ist würde die folgende Ausgabe erscheinen.

Mit /etc/init.d/mysql start wird der zweite Knoten gestartet. Die Ausgabe des Befehls müsste nun folgendes ergeben:

Um den Status der Replikation zu prüfen kann folgendes MySQL-Statement abgesetzt werden:

Jeder weitere Knoten, den man ergänzen möchte, kann auf dieselbe Art hinzufügt werden.

  • wsrep_local_state_comment impliziert, dass der Knoten mit dem Cluster verbunden ist.
  • wsrep_cluster_size gibt die Anzahl der Knoten an, die mit dem Cluster verbunden sind.
  • wsrep_ready gibt an, dass der Knoten mit dem Cluster verbunden ist und in der Lage ist, Transaktionen durchzuführen

In diesem Zustand werden alle Transaktionen auf beiden Knoten ausgeführt.

Christian Fuck

Christian Fuck

Help Desk

Wenn er nicht digitalen Träumen nachjagt oder das Internet durchwandert, kann man ihn im Fitnessstudio antreffen oder mit dem Zwergspitz eine Runde um den Block in Deep Down Völklingen drehen sehen. Christians Vorliebe für Drums und Snare geht unter die Haut. Auf Pulverschnee braucht er nur ein Brett unter den Füßen um King of the Hill zu sein. Für Braintower blogt Christian über das SMS Gateway und teilt sein breites Fachwissen über Lösungen mit technischen Problemen.

Gefällt dir der Artikel? Bitte teile ihn!
Share on Facebook
Facebook
18Share on Google+
Google+
0Share on LinkedIn
Linkedin
Email this to someone
email
Tweet about this on Twitter
Twitter