MySQL Cluster

MySQL Cluster

MySQL Cluster ist eine Speicher-Engine des freien Datenbanksystems MySQL in der aktuell verfügbaren Version 7.1. Sie ermöglicht die Installation der Datenbank auf einem Computercluster, das in einer Shared Nothing Architecture aufgebaut ist. Das bedeutet, dass jeder Rechner-Knoten seine eigenen Festplatten und Arbeitsspeicher hat. Wenn die einzelnen Rechner-Knoten mit einem genügend großen Arbeitsspeicher ausgestattet sind, dann können alle Daten im Arbeitsspeicher gehalten werden (bis Version 5.0 war das zwingend, ab Version 5.1 gibt es auch plattenresidente Tabellen).

Nach eigenen Angaben bietet die Cluster-Technologie von MySQL eine Verfügbarkeit von 99,999 %.[1][2] Das bedeutet eine jährliche Ausfallzeit von weniger als sechs Minuten.

Die NDB (Network Database)-Speicher-Engine ist eine unabhängige Komponente, die persistente Speicherung von Daten ermöglicht und für die Koordination aller Zugriffe auf Datenknoten in einem MySQL Cluster zuständig ist. Anwendungen können direkt auf die NDB-Speicher-Engine über verschiedene NoSQL-Schnittstellen oder über einen MySQL-Knoten via SQL zugreifen.

NDB Cluster wurde 2003 von MySQL AB mit Erwerb des Unternehmens Alzato (einem Ericsson-Ableger) übernommen. 2008 wurde MySQL AB von Sun Microsystems übernommen. 2010 wiederum wurde Sun von Oracle übernommen.

Inhaltsverzeichnis

Einsatzgebiete

MySQL Cluster wird oft als DBMS im Web-Umfeld eingesetzt, wo es darauf ankommt, dass viele Lesezugriffe schnell ausgeführt werden und dass eine hohe Ausfallsicherheit gewährleistet wird. Für solche Anforderungen hat MySQL Cluster bei Tests schon bessere Zugriffszeiten bewiesen als Oracle, DB2 und MS SQL.[3]

Architektur

Im MySQL Cluster werden drei Arten von Knoten unterschieden:[4]

Datenknoten (Ndbd)
Datenknoten speichern alle zu MySQL Cluster gehörenden Daten. Die Daten werden im Normalfall zwischen den Datenknoten des Clusters repliziert, um sicherzustellen, dass diese bei Ausfall eines oder mehrerer Knoten ununterbrochen verfügbar sind. Datenknoten verwalten außerdem Datenbanktransaktionen. Bei mehr als zwei Datenknoten werden die Knoten in sogenannte Nodegroups (Knotengruppen) unterteilt. Eine Nodegroup muss aus mindestens zwei Datenknoten bestehen. Innerhalb einer Nodegroup werden die Daten repliziert. Beim Einfügen eines neuen Satzes bildet das System einen Hash aus dem Primärschlüssel (die NDB-Engine erzeugt automatisch einen Primärschlüssel, falls keiner definiert ist). Der Wert des Hashs bestimmt, in welcher Nodegroup der Satz abgelegt wird. Dadurch wird eine statistische Gleichverteilung erreicht. Diese Methode der Datenverteilung wird auch als Partitionierung bezeichnet.
  • Datenspeicherung: Bis Version-5 wurden alle Daten im Hauptspeicher gehalten und periodisch auf die Platte geschrieben. Grob gesprochen hieß dies, dass die Datenknoten insgesamt soviel Hauptspeicher haben mussten, wie die Größe der Datenbank betrug; das mitgelieferte Skript „ndb_size.pl“ erlaubte es, den voraussichtlichen Speicherbedarf für eine existierende Datenbank abzuschätzen. Ab Version-6 gibt es den Tabellentyp „storage disk“, bei dem Indexfelder im Hauptspeicher und die restlichen Felder auf der Platte gespeichert werden.
  • Rollen: Genau ein Ndb-Knoten im Cluster ist der Master. Diese Rolle wird beim Start vom Arbitrator zugeteilt. Der Master hat die primäre Information über den Zustand des Clusters. Ohne Master ist das Cluster arbeitsunfähig. Bei Ausfall kann ein anderer Knoten diese Rolle übernehmen - allerdings nur mit Zustimmung des Arbitrators oder der absoluten Mehrheit der Ndb-Knoten. Falls Teile des Clusters ihre Verbindung verlieren, aber noch arbeitsfähig sind (split brain scenario), entscheidet der Arbitrator (Schiedsrichter), wer Master sein soll. Per Default ist der Manager der Arbitrator; es ist aber möglich, eine Hierarchie zu konfigurieren; in diesem Fall sollte man eine ungerade Zahl wählen, um 'mehrheitsfähig' zu bleiben. Als Arbitrator können Management- oder SQL-Knoten dienen.
Managementknoten
Ein Managementknoten ist für die Systemkonfiguration, die Knotenverwaltung und die Aufzeichnung der Aktivitäten im Cluster zuständig. Es können ein oder mehrere Managementknoten aus Verfügbarkeitsgründen gleichzeitig eingesetzt werden. Im laufenden Betrieb wird dieser Knoten nur benötigt, wenn sich ein ausgefallener anderer Knoten wieder am Cluster anmelden will. Wenn der Managementknoten zusätzlich Arbitrator (Default) ist, muss er auch verfügbar sein, wenn der Master ausfällt. Da Ausfälle nicht vorhersehbar sind, sollte dieser Knoten daher immer laufen.
SQL-Knoten
Ein SQL-Knoten entspricht einem MySQL Datenbanksystem, das mit Datenknoten kommunizieren kann. Die SQL-Knoten können einzeln oder über Lastverteilung unter einer Sammel-IP angesprochen werden.

Das MySQL Datenbanksystem erlaubt die Verwendung von Datenbank-Managementsystemen mit verschiedenen Konzepten: mit und ohne Durchführung von Transaktionen, mit und ohne persistente Speicherung, mit und ohne den Einsatz von gespeicherten Prozeduren, mit synchroner oder asynchroner Replikation usw.

Der grobe Ablauf einer Benutzeranfrage ist wie folgt:

  1. Eine Anfrage wird an einen SQL-Knoten gestellt.
  2. Der SQL-Knoten leitet die Anfragen an die Datenknoten weiter.
  3. Ein Datenknoten verarbeitet die Anfrage und sendet das Ergebnis an den SQL-Knoten zurück.
  4. Der SQL-Knoten übergibt das Ergebnis an Benutzer.

Auf jedem der Knoten des MySQL Clusters ist mindestens ein Prozess gestartet. Bei SQL-Knoten heißt der zuständige Prozess mysqld, bei Datenknoten ndbd und bei Verwaltungsknoten ndb-mgmd. Auf Rechnerknoten mit mehreren Prozessoren können mehrere MySQL Cluster-Prozesse gleichzeitig laufen. Beispielsweise auf einem Datenknoten mit 2 CPUs können zwei ndbd-Prozesse parallel ausgeführt werden. Es ist ebenfalls möglich, Prozesse verschiedener MySQL Cluster-Knotentypen auf einem Rechnerknoten mit mehreren CPUs einzusetzen. Zum Beispiel kann auf einem Rechner ein Prozess des SQL-Knotens (mysqld) und ein Prozess des Datenknotens (ndbd) gestartet sein.

Ports (Voreinstellungen):

Sql-Knoten
3306
Manager
1186
Ndbd-Knoten
verwenden keine festen Ports. Die Ports werden vom Manager beim Start des Clusters dynamisch vergeben und an die Server im Cluster propagiert.

Sicherheit: Der Datenverkehr innerhalb des Clusters ist nicht kryptographisch abgesichert. Es ist Verantwortung des Betreibers, den Cluster abzuschirmen, z.B. durch Firewallregeln oder ein eigenes Tunnelnetz.

Plattformen

Mysql unterstützt Windows, Unix/Linux. Eine Mac Version steht für die Entwicklung zur Verfügung.

Einzelnachweise

  1. MySQL-Website
  2. Computerwoche. Nr. 45, 2006, S. 24.
  3. MySQL-Zeichen stehen auf Enterprise, Computerwoche 45/2006
  4. Larissa Janssen: Hochleistungs-Datenbanksysteme: Theorie und Praxis. Books on Demand GmbH, 2008, ISBN 3-8334-9326-7, S. 188–189.

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • MySQL Cluster — is a technology which provides shared nothing clustering capabilities for the MySQL database management system. It was first included in the production release of MySQL 4.1 in November 2004. It is designed to provide high availability and high… …   Wikipedia

  • MySQL Cluster — MySQL clúster es una tecnología que permite el clustering de bases de datos en memoria en un ambiente de no compartición. La arquitectura de no compartición permite que el sistema gestor de base de datos (SGBD) funcione utilizando hardware no muy …   Wikipedia Español

  • MySQL Cluster — Structure d une grappe de serveurs MySQL. MySQL Cluster est la base de données distribuée de MySQL. Elle permet de répartir des données sur plusieurs serveurs sans avoir de point individuel de défaillance. Contrairement aux moteurs MyISAM et… …   Wikipédia en Français

  • MYSQL — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • MySql — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • Mysql — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • MySQL — Instalador de MySql Server 5.0 Desarrollador …   Wikipedia Español

  • MySQL — Apparu en 1995 Développeur MySQL AB / Oracle …   Wikipédia en Français

  • MySQL — Developer(s) MySQL AB (A subsidiary of Oracle) Initial release May 23, 1995 (1995 05 23 …   Wikipedia

  • MySQL — Entwickler Oracle Corporation (bis Februar 2008: MySQL AB, bis Januar 2010: Sun Microsystems) Aktuelle Version …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”