MySQL, MariaDB und Percona Multi-Master Galera Cluster

Was ist Galera?

Das Galera Plugin für MySQL (InnoDB und MyISAM) ist eine synchrone Master-Master clustering Methode.
Galera schafft es mehrere Transaktionen in ein und die selbe Tabelle durchzuführen, benötigt werden mindestens 2 Instanzen; Quorum-Schutz liefert zusätzlich ein Schiedsrichter Dienst „garbd“.

Vor- und Nachteile

MySQL Galera:

  • – kein Repository
  • + SST Methoden: xtrabackup, mysqldump, rsync

MariaDB Galera:

  • + Repository vorhanden
  • + kompatibel zu MySQL
  • – SST Methoden: mysqldump, rsync (kein xtrabackup)

Percona Galera:

  • + Repository vorhanden
  • + kompatibel zu MySQL
  • + SST Methoden: xtrabackup, mysqldump, rsync

SST Vergleichstabelle

methodspeedblocks the donorcan be done on live node?logical/physicalrequires root access to MySQL server?
mysqldumpslowyesyeslogicalboth donor and joiner
rsyncfastestyesnophysicalnone
xtrabackupfastfor a very short timenophysicaldonor only

Mehr unter: http://www.codership.com/wiki/doku.php?id=sst_mysql

Vorteile Galera vs. MySQL Replikation

  • synchrone Replikation
  • aktiv-aktiv Multi-Master Topologie
  • lesen und schreiben in jede Cluster Node
  • automatische Node-Verwaltung, fehlerhafte werden ausgestoßen
  • Nodes synchen sich automatisch neu in das Cluster, kein mysqldump nötig
  • echte parallele Replikation, Row Level
  • kein Keepalive/Heartbeat nötig, eine Fehlerquelle weniger
  • ein Schiedsrichter Dienst (garbd) kann als Relay-Node (ohne Datenbestand) auf einem weiteren Server laufen

Teststellung

Getestet wurde das Galera Plugin auf 3 völlig unterschiedlichen Servern ohne „garbd“.

Hardware: System A 192.168.1.10 (8x 2,00GHz), System B 192.168.1.20 (2x 1,86GHz), System C 192.168.1.30 (2x 2,80GHz)
Netz: public
OS: CentOS 6.4
Galera Version: 23.2.4(r147)
MySQL Version: 5.5.29
Config: /etc/my.cnf

Installation CentOS 6.4

MySQL 5.5

Pakete herunterladen:

Galera gepatchte MySQL Version + Galera Plugin installieren:

Kennwort für den xtrabackup/mysqldump SST User setzen:

MariaDB 5.5

Repository hinzufügen:

Pakete installieren:

Kennwort für den mysqldump SST User setzen:

Percona 5.5

Repository hinzufügen:

Pakete installieren:

Kennwort für den xtrabackup SST User setzen:

Konfiguration von Galera

Dies ist eine minimale Galera Konfiguration, die Werte solltet Ihr in die my.cnf übernehmen.
Eine ausführliche Version findet Ihr im Anhang galera_example.cnf.

Garbd Schiedsrichter Dienst

Sollte aus Gründen der Einsparung nur ein 2 Node Cluster geplant sein, muss bedingt durch den Split-Brain Schutz ein kleiner Dienst namens „garbd“ auf einem Server mit laufen.
Dieser Dienst hält keine Daten vor sondern dient lediglich als Relay und Quorum Mitglied. Gestartet wird er wie folgt.

Cluster Status Abfrage / Node Überprüfung

Ihr könnt den Cluster-Status wie folgt abfragen.

Ob eine Node im Cluster ist seht Ihr an dem Status:

Wie weit, also welche Node die aktuellsten Daten hat, seht Ihr an der Höhe dieser Zahl:

Anzahl der im Cluster befindlichen Nodes:

Die aufgerufene Node ist definitiv im Cluster wenn dieser Wert auf „ON“ steht:

Problemlösungen

Informationen: http://www.codership.com/wiki/doku.php?id=faq

  • Sollte eine Node sich nicht mehr in das Cluster einfügen lassen kann es an der „grastate.dat“ Datei im MySQL Home Ordner liegen, diese müsste dann gelöscht und MySQLd neu gestartet werden.
  • Sollte aus einem eher unwahrscheinlichen Grund keine MySQL Node mehr aktiv sein, muss eine Node mit „wsrep_cluster_address=gcomm://“ gestartet werden. Wenn das Cluster wieder „Synced“ ist kann dieser Wert wieder auf den Ursprung zurückgestellt werden, also z.B. „wsrep_cluster_address=gcomm://192.168.1.10,192.168.1.20,192.168.1.30“

Beispiel Szenario

Eine Node im Galera Cluster zeigt den Status „Initialized“ was unter anderem vor einem Split-Brain schützen soll.

Dieser Fehler tritt z.B. auf wenn keine LAN Verbindung zum Cluster besteht. Es können nur noch bedingt Statements abgesetzt werden:

Es ist möglich diesen Split-Brain Schutz zu deaktivieren, dies sollte aber vermieden werden, es ist somit wichtig 3 Nodes oder 2 Nodes + garbd einzusetzen.wsrep_provider_options = “pc.ignore_sb = true” schaltet den Split-Brain Schutz aus, nur sinnvoll in einem Master-Slave Galera Setup
wsrep_provider_options = „pc.ignore_quorum = true“ schaltet die Quorum Berechnung ab, sollte ein Master alleine existieren gewährt dieser dennoch volle Funktionalität. Weitere Nodes können dem Cluster aber nicht mehr automatisch beitreten.

Benchmarks

Zuerst erstellen wir 1.000.000 Einträge auf einer Node in die Datenbank „test“, das sollte recht zügig geschehen und auch instand auf die restlichen Nodes übertragen werden:

Jetzt kann auf allen Nodes ein kleiner 60 Sekunden Lesetest gestartet werden, wobei die Anzahl der Threads den CPU Kernen entsprechen sollte (mehr bringt meist nichts):

Beim Ergebnis sind vor allem die Transaktionen in der Sekunden interessant:

Es können auch alle Nodes auf einmal im Round-Robin Verfahren getestet werden:

Links:
Download: http://www.codership.com/downloads/download-mysqlgalera
Dokumentation: http://www.codership.com/wiki/doku.php
SST Methoden: http://www.codership.com/wiki/doku.php?id=sst_mysql
MariaDB Repositories: https://downloads.mariadb.org/mariadb/repositories/
MariaDB vs. MySQL – Compatibility: https://kb.askmonty.org/en/mariadb-versus-mysql-compatibility/
WSREP Variablen: http://www.percona.com/doc/percona-xtradb-cluster/wsrep-system-index.html

-Dominion

Dominion

Dominion

Linux Systemadministrator

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Translate »