Wie macht man einen MySQL-Cluster vollständig ausfallsicher?

Wie macht man einen MySQL-Cluster vollständig ausfallsicher?

Ich möchte also einen MySQL-Datenbankserver mit hoher Verfügbarkeit einrichten. Dazu habe ich mir zwei Geräte (Banana Pi) besorgt und ein Tutorial zur Installation der MySQL-Cluster-Software befolgt. Ich weiß, dass eine Konstellation von nur zwei Geräten nicht gerade der Verwendung des MySQL-Clusters entspricht, aber um Hardwarekosten zu sparen, habe ich mir vorerst nur diese beiden Geräte besorgt.

Bisher habe ich die folgende Konfiguration (sqlnode1 und sqlnode2 sind die Hostnamen der Geräte):

Verwaltungsknoten (ndb_mgmd):

  • sqlnode1 (Knoten-ID: 1)
  • sqlnode2 (Knoten-ID: 2)

Speicher-Engines (ndbd):

  • sqlnode1: konfiguriert für die Verwendung des Verwaltungsknotens auf localhost (Knoten-ID: 3)
  • sqlnode2: konfiguriert für die Verwendung des Verwaltungsknotens auf dem lokalen Host (Knoten-ID: 4)

MySQL-Server (mysqld):

  • sqlnode1: konfiguriert zur Nutzung beider ndbd-Knoten (Knoten-ID: 5)
  • sqlnode2: konfiguriert zur Nutzung beider ndbd-Knoten (Knoten-ID: 6)

Grundsätzlich verfügt jedes Gerät über laufende ndb_mgmd, ndbd und mysqld.

Ich möchte erreichen, dass bei einem Ausfall eines der Geräte das andere Gerät weiterhin voll nutzbar ist (aus ganz bestimmten Gründen kann ich hier keine einfache Datenbankreplikation verwenden).

Sobald ich alle Komponenten starte, funktioniert alles einwandfrei. Wenn ich Daten auf einem MySQL-Host ändere, werden die Änderungen auf dem anderen sofort übernommen (und umgekehrt).

Wenn ich jedoch das LAN-Kabel eines der Geräte trenne, passiert folgendes:

  • Trennen von sqlnode2: Der funktionierende Knoten (sqlnode1) bleibt für kurze Zeit hängen und funktioniert dann ordnungsgemäß weiter (was im Grunde das ist, was ich will).
  • Trennen von sqlnode1: Der funktionierende Knoten (sqlnode2) hängt für eine kurze Zeit und dannfunktioniert überhaupt nicht- alle Abfragen enden mit „4009 Cluster Failure“ und Abfragen funktionieren erst wieder, nachdem die Netzwerkverbindung des ausgefallenen Knotens wiederhergestellt wurde. Danach zeigt die Überwachung des ndb_mgmd-Daemons, dass Knoten-ID 4 (der ndbd auf sqlnode2) zum Herunterfahren gezwungen wurde.

Zusammenfassend scheint das gesamte System von sqlnode1 abhängig zu sein, und ich frage mich wirklich, warum das passiert, weil ich dachte, dass alles weiterläuft, wenn eine Komponente ausfällt (und eine andere vom gleichen Typ verfügbar ist).

Ich habe dieses Tutorial zum Einrichten von zwei verschiedenen Verwaltungsknoten befolgt:http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts

Habe ich etwas übersehen? Oder habe ich vielleicht die Funktionsweise des MySQL-Clusterings falsch verstanden?

Antwort1

Ich habe Mysql Cluster nicht verwendet, aber Sie sollten in der Lage sein, darin Replikationen durchzuführen. Außerdem kann MySQL Cluster einiges mehr, als Sie wahrscheinlich brauchen, wenn Sie nur Replikationen benötigen. MySQL Cluster kann im laufenden Betrieb zu verschiedenen SQL-Servern routen, wenn einer ausfällt. Dadurch müssen Sie die DNS-Einträge des Hostnamens nicht jedes Mal ändern oder einen temporären SQL-Server einrichten oder ihn einfach tot lassen, bis er repariert ist. Es kann auch andere Dinge. Um Ihnen zu helfen, schlage ich vor, die MySQL Community Edition zu verwenden, da sie für Sie benutzerfreundlicher ist als MySQL Cluster.

Holen Sie sich die MySQL Community Edition. Damit können Sie Replikation durchführen. Sie können also einen MySQL-Server als Master festlegen, auf dem alles bearbeitet wird, und den zweiten MySQL-Server als Slave, der in einem konfigurierbaren Intervall einfach abrufen kann, was der Master hat. Sie können in Zukunft auch problemlos weitere Slaves hinzufügen. Außerdem müssen sich die Slaves nicht unbedingt auf separaten Maschinen befinden, Sie können auch mehr als eine Instanz von MySQL ausführen. Dies würde jedoch den Zweck der Replikation und Ausfallsicherheit zunichte machen. Dies ist höchstwahrscheinlich das, wonach Sie suchen. Außerdem bietet MySQL auf seiner Website eine Anleitung zum Einrichten der Replikation für die MySQL Community Edition.

MySQL-Community-Server

Antwort2

Ich habe meine Probleme gelöst, indem ich zum Galera MySQL-Cluster gewechselt bin, der genau das zu tun scheint, was ich will/brauche.

verwandte Informationen