adminforge

adminForge

free | no tracking | no logging | no advertising

Das ist unser Motto. Mit adminForge bieten wir kostenlose Dienste an. Unser Ziel ist es, eine freie und datensparsame Alternative zu bekannten Diensten bereitzustellen. Seit 2014 betreiben wir adminForge gemeinsam mit Spaß an der Technik und an Open-Source.

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

method speed blocks the donor can be done on live node? logical/physical requires root access to MySQL server?
mysqldump slow yes yes logical both donor and joiner
rsync fastest yes no physical none
xtrabackup fast for a very short time no physical donor 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