Clustering mit MySQL 5 ... Seminar MySQL Cluster 09.03.2007 4 Clustering mit MySQL 5 MySQL 5...

download Clustering mit MySQL 5 ... Seminar MySQL Cluster 09.03.2007 4 Clustering mit MySQL 5 MySQL 5 verwendet

of 19

  • date post

    22-May-2020
  • Category

    Documents

  • view

    1
  • download

    0

Embed Size (px)

Transcript of Clustering mit MySQL 5 ... Seminar MySQL Cluster 09.03.2007 4 Clustering mit MySQL 5 MySQL 5...

  • Seminarausarbeitung

    Clustering mit MySQL 5

    von Patrick Schneider

    Matrikelnummer: XXXXXX

    Betreuer: Prof. Dr. P. Kneisel

    FH Gießen-Friedberg

    Erstellt am: 09.03.2007

  • Seminar MySQL Cluster 09.03.2007

    Inhaltsverzeichnis

    1 Einleitung - warum Clustering?...........................................................................................3

    2 Was ist „Hochverfügbarkeit“ und wie erreicht man sie?.....................................................4

    3 Implementierung hochverfügbarer Datenbanken...............................................................6 3.1 SAN und verteilte Dateisysteme..................................................................................6 3.2 Replikation...................................................................................................................8

    3.2.1 Asynchrone Replikation........................................................................................8 3.2.2 Synchrone Replikation.........................................................................................9 3.3.3 Externe Replikation..............................................................................................9

    4 Clustering mit MySQL 5....................................................................................................10 4.1 Management-Knoten.................................................................................................10 4.2 SQL-Knoten...............................................................................................................11 4.3 Datenknoten...............................................................................................................11

    5 Beispielimplementation.....................................................................................................13 5.1 Management-Knoten.................................................................................................13 5.2 Datenknoten..............................................................................................................15 5.3 SQL-Knoten...............................................................................................................15 5.4 Den Cluster testen.....................................................................................................15

    6 Fazit...................................................................................................................................17 6.1 Vorteile des NDB-Clusters.........................................................................................17 6.2 Nachteile des NDB-Clusters......................................................................................17 6.3 Empfehlung................................................................................................................18

    Quellenverzeichnis...............................................................................................................19

    Patrick Schneider 2/19

  • Seminar MySQL Cluster 09.03.2007

    1 Einleitung - warum Clustering? Kein Rechner ist absolut zuverlässig. Laut einer Studie des IDC1 machen Ausfallzeiten den größten Anteil an den Betriebskosten einer Datenbank aus, hauptsächlich verursacht durch den entstehenden Verdienstausfall. Um Ausfallzeiten zu verringern wird versucht, das Risiko eines Zwischenfalls auf mehrere Rechner zu verteilen und damit einen „Single Point of Failure“ zu vermeiden. Kein Rechner von heute ist den Anforderungen von morgen gewachsen. Die Anforderungen an ein Datenbanksystem steigen mit Nutzerzahl und Datenmenge pro User stark an. Oftmals bietet ein einzelner, vor kurzem noch ausreichender Rechner nicht mehr genug Leistung, um alle an ihn gestellten Anfragen in einem akzeptablem Zeitrahmen zu bearbeiten. Gerade im Internet-Bereich sind viele Unternehmen auf zuverlässige und schnelle Datenbankensysteme angewiesen, da Daten für sie der wichtigste Rohstoff sind. Ein Ausfall der Datenbank hätte für Google, Amazon oder Ebay katastrophale folgen, aber auch kleine Unternehmen und Forschungseinrichtungen benötigen „ständigen“ Zugriff auf ihre Daten. Ein Cluster aus mehreren einfachen Rechnern kann helfen, hohe Verfügbarkeit und Leistung zu erreichen. MySQL2 bietet seit der Version 4.1 mit dem NDB3 Cluster Backend eine kostengünstige Open Source Lösung für ein hochverfügbares Datenbanksystem, das ich hier vorstellen möchte.

    1 International Data Corporation: „Maximizing the Business Value of Enterprise Database Applications on a Linux Platform“

    2 MySQL AB: http://www.mysql.com 3 NDB: Network Database

    Patrick Schneider 3/19

  • Seminar MySQL Cluster 09.03.2007

    2 Was ist „Hochverfügbarkeit“ und wie erreicht man sie? Ein System gilt als verfügbar, wenn es in der Lage ist, an es gerichtete Anfragen zeitnah zu beantworten. Die Verfügbarkeit gibt das Verhältnis zwischen Uptime und Downtime eines Systems an:

    Verfügbarkeit= Uptime UptimeDowntime

    Treten Störungen des Systems auf, muß es diese Störungen selbständig kompensieren können, bis die Ursache von einem Administrator beseitigt wurde. „Ein System gilt als hochverfügbar, wenn eine Anwendung auch im Fehlerfall weiterhin verfügbar ist und ohne unmittelbaren menschlichen Eingriff weiter genutzt werden kann. In der Konsequenz heißt dies, dass der Anwender keine oder nur eine kurze Unterbrechung wahrnimmt. Hochverfügbarkeit (abgekürzt auch HA, abgeleitet von engl. High Availability) bezeichnet also die Fähigkeit eines Systems, bei Ausfall einer seiner Komponenten einen uneingeschränkten Betrieb zu gewährleisten."4

    4 Held, Andrea: Oracle 10g Hochverfügbarkeit, Addison-Wesley 2004

    Patrick Schneider 4/19

    Abbildung 1: Die 5 Neuner zur Verfügbarkeit

  • Seminar MySQL Cluster 09.03.2007

    100%, also ständige Verfügbarkeit, ist kaum zu erreichen und auch nur selten wirtschaftlich sinnvoll umzusetzen. Um die Verfügbarkeit von Systemen anschaulich darzustellen, kann man das Schema der „5 Neuner“ verwenden (siehe Abbildung 1). Jede weitere 9 steht für ein höheres Level an Verfügbarkeit, steigert allerdings auch die Kosten um bis zu Faktor 10! Ein hochverfügbares System sollte mindestens 99,9% seiner Laufzeit tatsächlich verfügbar sein. Eine Verfügbarkeit von 99,99% bedeutet auf ein Jahr gerechnet eine Ausfallzeit von nur noch weniger als einer Stunde5 - wobei geplante Wartungsarbeiten mit eingeschlossen sind. MySQL AB sagt in seinem „Leitfaden für hochverfügbares Clustering“, daß mit einem MySQL Cluster auf NBD Basis eine Verfügbarkeit von 99,999% erreichbar ist. Störquellen und Ausfallgründe gibt es ebenso viele, wie Möglichkeiten, sich darauf vorzubereiten. In einem verteilten System ist es bereits manuell möglich, geplante Software- und Hardware- Upgrades an einzelnen Komponenten durchzuführen, ohne die Verfügbarkeit des Gesamtsystems zu beeinträchtigen. Auch ein unzuverlässiges System kann so, wenn auftretende Fehler schnell behoben werden, eine hohe Verfügbarkeit erreichen. Um aber plötzliche Ausfälle der Infrastruktur ohne zusätzlichen Arbeitsaufwand (und damit verbundenen Kosten) kompensieren zu können, muß das System darauf ausgelegt sein, solche Störungen selbst zu erkennen und darauf zu reagieren. Ist es dazu in der Lage, gilt es als fehlertolerant. Sind die einzelnen Komponenten des Systems für sich bereits fehlertolerant, hilft das, die Gesamtverfügbarkeit zu steigern. Gegen einzelne Stromausfälle können USVs6 eingesetzt werden, gegen interne Netzwerkausfälle helfen redundante Netzwerkverbindungen und gegen Naturkatastrophen die ein ganzes Rechenzentrum lahmlegen hilft es, das System über mehrere räumlich getrennte Rechenzentren zu verteilen.

    5 Genau: 52,6 Minuten 6 Unterbrechungsfreie Stromversorgung

    Patrick Schneider 5/19

  • Seminar MySQL Cluster 09.03.2007

    3 Implementierung hochverfügbarer Datenbanken Ausgehend von einer einzelnen Datenbank auf einem lokalen Server existieren viele Möglichkeiten, die Verfügbarkeit und Performance des Datenbanksystems zu erhöhen. Eine Auswahl davon stelle ich hier vor. Die Zuverlässigkeit des Datenspeichers kann zunächst durch redundante Datenhaltung (RAID7, SAN) deutlich erhöht werden. Durch verteilen der Daten auf mehrere Rechner (Fragmentierung, Replikation) kann die Leistungsfähigkeit erhöht werden.

    3.1 SAN und verteilte Dateisysteme Ein Storage Area Network (SAN) kann dem Datenbanksystem performanten, hochverfügbaren Speicherplatz bieten. Ein an das SAN angeschlossene Disk Array arbeitet intern mit mindestens zwei Festplatten8 im RAID-Verbund, nach außen stellt es sich dem Datenbankserver als ein einziger virtueller Datenspeicher dar. Die einzelnen Mitglieder des SAN sind per redundanter GBit Leitung verbunden.

    Bei Störung einer der beiden Datenleitungen ist das Gesamtsystem weiter arbeitsfähig, ebenso beim Ausfall von maximal 50% der Festplatten. Fällt der Datenbankserver wegen eines Hardwaredefekts aus, kann ein Ersatzserver (Failover) auf den Daten des ersten Servers zeitnah weiter arbeiten. Um die Ausfallzeit dabei so gering wie möglich zu halten, sollte der Ersatzserver dauerhaft passiv bereit stehen. Ein Heartbeat9 System kann den primären Server überwachen und bei Bedarf auf den sekundären Server umschalten. Leider ist es mit MySQL nicht möglich, daß zwei Server gleichzeitig aktiv auf dem gleichen Rep