Home       Servicebereich  Projekte  Kontakt  

MySQL Cluster


MySQL Cluster

Seit der MySQL Version 4.1.2 bietet MySQL die Möglichkeit der Implementierung eines hoch verfügbaren Datenbank-Cluster. Mit Hilfe dieser Lösung kann eine Verfügbarkeit von 99,999% garantiert werden.

Die Hochverfügbarkeit wird durch eine sogenannte "share nothing" Architektur erreicht. Das heißt, dass keine kritische Systemkomponente einen "Single Point of Failure" darstellen kann. Dieses ist z.B. bei Lösungen der Fall, bei denen die Hochverfügbarkeit der dauerhaften Datenspeicherung mittels einer SAN (Storage Area Network) Lösung erreicht werden soll. Die SAN Komponente stellt prinzipiell auch einen Single Point of Failure dar.

Die Hochverfügbarkeitsarchitektur der MySQL Lösung vermeidet jegliche zentral notwendige Komponente. Sie bietet die Möglichkeit die einzelnen Nodes des Clusters auch geographisch zu trennen, so dass sich selbst der Ausfall eines kompletten Gebäudes nicht auf die Verfügbarkeit des Datenbankclusters auswirkt.

Der MySQL Cluster kann auf kostengünstiger PC Hardware implementiert werden. Die Hochverfügbarkeit wird durch intelligente Kommunikation der einzelnen Nodes untereinander erreicht. Die Hochverfügbarkeit ergibt sich aus der Anzahl der Nodes bei der die Warscheinlichkeit eines Ausfalls von allen Nodes zur gleichen drastisch sinkt.

Grundlegende Architektur

Aus Sicht der Applikation stellt sich diese Clusterlösung völlig transparent als MySQL Datenbankserver dar. Dieses bietet den Vorteil, dass keinerlei spezielle Anpassungen an den Clusterbetrieb notwendig sind.

Der Cluster selbst besteht in seinem inneren Aufbau aus drei Komponententypen mit unterschiedlichen Aufgaben:

  1. Management Server Nodes (MGN)
  2. Storage Nodes (SN)
  3. MySQL Server Nodes (MySQL)

1. Management Server Nodes (MGN)

Die Management Server Nodes übernehmen die Aufgaben der Systemkonfiguration. Die anderen Node-Type greifen beim Start auf diese Komponenten zu um ihre Konfiguration zu ermitteln. Danach sind die MGNs nur noch bei Systemänderungen oder beim Neustart eines Nodes notwendig. Die Management Server Nodes müssen nicht voll redundant ausgelegt werden, da das System im Normalbetrieb auch ohne diese Komponenten arbeiten kann.

2. Storage Nodes (SN)

Die Storage Nodes sind das eigentliche Herz des Clusters. Diese Komponenten bearbeiten und speichern die Datenbanktransaktionen. Aus Performancegründen werden die Daten hier in einem speziellen In-Memory Tabellentyp gehalten. Die Datenbank führt ein Transaktionslog über alle Transaktionen, welches in kurzen Abständen gesichert wird. Die eigentlichen Daten werden in regelmäßigen Abständen auf die lokalen Speichermedien geschrieben und mit einer Markierung versehen. Das Transaktionslog setzt an diesen Markierungen an, um eine schnelle Wiederherstellung der Daten zu gewährleisten.

Die einzelnen Storage Nodes kommunizieren untereinander über ein Synchronisationsprotokoll. Je nach Anforderungen können hier grundsätzlich unterschiedliche Protokolle eingesetzt werden.

2.1 Fehlererkennung und Failover

Die Storage Nodes überwachen sich gegenseitig und replizieren beim Ausfall diese Information direkt an alle angeschlossenen Systemkomponenten. Beim Ausfall eines Systems wird dieses in der Regel in einem Zeitraum von 100 Millisekunden erkannt und kommuniziert.

3. MySQL Server Nodes (MySQL)

Die MySQL Server Nodes sind das Frontend des Clusters zur Applikation. Aus Sicht der Applikation stellt sich der Cluster daher als einfache MySQL Datenbank dar und benötigt daher keine speziellen Anpassungen an dieser Stelle.

Implementierung

Das Clustersystem kann auf einer einzelnen Maschine implementiert werden. Dieses bietet jedoch ausschließlich Redundanz im Bereich von Softwareausfällen der Datenbanksysteme. Eine Hochverfügbarkeit kann hiermit nicht gewährleistet werden.

In der Regel wird das System so implementiert, dass mehrerer Storage Nodes zu Nodegruppen zusammengefasst werden. Diesen werden mehrere MySQL Server als Frontend-Systeme zugeordnet. Auf den MySQL Servern kann zusätzlich der Management Node angesiedelt werden. Ein System mit recht hoher Ausfallsicherheit kann daher schon mit 4 Maschinen implementiert werden.