MariaDB Galera Cluster Master-"Backup" mit HAProxy

caddyBoy

Neuer Benutzer
Beiträge
4
Hallo Datenbankforum,

in den letzten Tage habe ich mich mit dem Datenbankdesign auseinander gesetzt (ich bin noch Neuling und versuche viel zu lernen). Ich bin mir nicht ganz sicher was das beste Setup für meine Datenbank ist und würde die Idee hier gerne kurz vorstellen.

Hardware-Setup: 2 x Load Balancer - HAProxy (1xBare Metal, 1xVM extern), 1 x Bare Metal Server für DB, zusätzliche VM's (langsamer als Bare Metal Server). Gerne würde ich MariaDB ggf. mit Galera Cluster nutzen.

Idee:
Die Load Balancer (HAProxy mit Corosync + Pacemaker) sollen den gesamten Traffic auf den performanten Bare Metal Server (BMS) leiten. Hiermit geht die Load Balancer Fähigkeit verloren, die benötige ich aber auch nicht. Sollte der BMS ausfallen soll der HAProxy auf die VM umleiten bis der BMS wieder verfügbar ist.

Der BMS + VM bilden das Galera Cluster. Die VM soll sich synchron replizieren als "ungenutzter Master" falls der BMS ausfällt. Es wird nur der BMS genutzt für read/writes, da die VM langsamer ist.

Back-Up: zusätzlich würde ich gerne eine VM außerhalb des Clusters nutzen um über den Arbitrator ein asynchrones Backup mit mysqldump zu generieren.

Frage:
- Kann die VM synchron im Galera Cluster laufen ohne den BMS zu verlangsamen, da sie nur replizieren muss?
- Falls der BMS ausfällt wird der HAProxy den Traffic auf die VM umleiten. Wie stelle ich sicher, wenn der BMS wieder online ist, dass er sich zunächst synchronisiert bevor der HAProxy den Traffic wieder auf den BMS leitet? Muss ich das mit GTID per Skript veranlassen? Im Prinzip wäre das ein geplanter "Switchover" nach erfolgreicher Synchronisierung. MariaMaxScale könnte so etwas ist aber leider nicht open source.

- Gibt es die Möglichkeit ein Galera Cluster (Master-Master) synchron zu replizieren ohne das die langsame VM die BMS Performance verlangsamt? Wäre das mit einem Master-Slave setup möglich?
 
Werbung:
Wieso fängst du als Anfänger mit solch einem komplexen HA Setup an?
Wieso nicht mit einem Standalone DB Server?

Was ist das Ziel des HA Setup?
Man braucht Restore und kein Backup. Wie sind denn die Anforderungen für dieses Setup?
 
Hey,
ich wusste nicht das es ein sehr komplexes Setup ist. Ich versuche nur eine gute Lösung zu finden.
Ein Standalone DB Server kann doch nicht HA sein, oder?

Das Ziel ist es, einen high available DB Server zu erstellen der im Fehlerfall auf einen synchronen DB Server zugreift. Der 2. DB Server sollte wenn möglich den MainDB Server nicht verlangsamen.
Ich dachte ein Restore ist nur für kleine Datenmengen geeignet?
Die Anforderung ist es mit großen Datenmengen umzugehen und ein eine hohe Verfügbarkeit zu erreichen.

Ich dachte eigentlich, dass es der Standardfall für einen Datenbankbetrieb ist. Eine MainDB zu haben die sich um alle read/writes kümmert und eine Alternative falls die MainDB ein Update braucht oder einen Neustart? Gibt es eine einfachere Lösung? Wie gesagt ich kenne mich nicht gut aus und bin ggf. etwas über das Ziel hinausgeschossen... .

Gruß
 
Du musst als erstes die Anforderungen definieren. Aus diesen ergibt sich ob man ein Backup braucht, ob man HA braucht oder ob ein Standalone Server reicht.
Es gibt keinen "Standardfall". Es kommt immer auf die Anforderungen an. Es gibt Fälle, in denen keine Datensicherung benötigt wird, in anderen Fällen braucht man HA mit mehreren Standorten,...

Was ist dein Ziel (der Datenbank)? Was sind die Anforderungen?

Wie sind RPO/RTO?
 
Hey,
ich wusste nicht das es ein sehr komplexes Setup ist. Ich versuche nur eine gute Lösung zu finden.
Für unsere Kunden haben wir für sowas vollautomatische Setups.

Ein Standalone DB Server kann doch nicht HA sein, oder?

Nein.

Das Ziel ist es, einen high available DB Server zu erstellen der im Fehlerfall auf einen synchronen DB Server zugreift. Der 2. DB Server sollte wenn möglich den MainDB Server nicht verlangsamen.

Synchrone Replikation mit nur einem Standby verdoppelt die Ausfallwahrscheinlichkeit. Da der primary auf das Commit des Standbys warten muß, steht der Cluster, wenn entweder primary ODER der Standby ausfällt.

Ich dachte ein Restore ist nur für kleine Datenmengen geeignet?
HA und Backup / Disaster recovery sind zweit verschiedene Dinge, und man braucht beides. HA, selbst mit 100 Standbys, ersetzt kein Backup.

Die Anforderung ist es mit großen Datenmengen umzugehen und ein eine hohe Verfügbarkeit zu erreichen.

Mit MySQL? Scherzkeks.

Ich dachte eigentlich, dass es der Standardfall für einen Datenbankbetrieb ist. Eine MainDB zu haben die sich um alle read/writes kümmert und eine Alternative falls die MainDB ein Update braucht oder einen Neustart? Gibt es eine einfachere Lösung? Wie gesagt ich kenne mich nicht gut aus und bin ggf. etwas über das Ziel hinausgeschossen... .

Gruß

Mit BDR3 kannst Du rollende Updates des Clusters durchführen und kommst auf 5 mal 9.
 
Hallo,

sorry das ich mich einmische. Falls du Galera machen willst oder musst gibt es schon mal einige Dinge zu beachten.

1) Minimal 3 Nodes brauchst du für ein Cluster, damit eine ausfallen darf.
2) Alle Server müssen gleich sein. Es macht keinen Sinn wenn der Bare Server ausfällt und dann die VMs die
Last nicht auffangen können.
3) Falls die VMs die Schreiblast nicht mitmachen wirft Galera die Node aus dem Cluster und dann fehlen 2 von 3 Nodes und ENDE mit DB
4) Als MySQL Proxy empfehle ich MaxScale von MariaDB

Gruß

Bernd
 
Werbung:
Hallo, viele Dank für die Hinweise.

- minimal 3 Nodes für ein Cluster! Das verstehe ich, die nächste Ausbaustufe wären dann 5.... usw.
- neues Setup: 2x Bare Server + 1 VM als Galera Cluster in einer semi-synchronen Replizierung. Der LoadBalancer soll nur die beiden Bare Server für read/writes belasten.
Vorteil: die langsamere VM kann ggf. mit den schnelleren Bare Server mithalten da sie vom LB nicht belastet wird. Falls nicht, greift die semi-sync und die VM kann sich nach und nach replizieren ohne die beiden Master zu verlangsamen. Die VM kann theoretisch die Last abfangen, das System wird dann nur langsamer, dies ist ausreichend für den Notfall.
- kann man in einem Galera Cluster (multi-Master) nur 2 von 3 Master Nodes belasten?

Das Backup läuft auf einem weiteren System asynchron und soll über den Arbitrator des Galera Cluster weitergereicht werden. Hierfür wird ein Node von dem Cluster kurzzeitig als Donor ausgewählt.
In disaster recovery muss ich mich erstmal noch einlesen...

Viele Grüße
 
Zurück
Oben