Upload
dothien
View
221
Download
5
Embed Size (px)
15.12.2008 Philipp Bachmann 1
MySQL Cluster
Vortrag im Rahmen des Seminars„Ausgewählte Themen in Hardwareentwurf und Optik“
15.12.2008 Philipp Bachmann 2
Inhalt1) Einführung2) System-Architektur
3) Hohe Verfügbarkeit4) Performance5) Fazit
15.12.2008 Philipp Bachmann 3
Motivation DB oft zentraler Bestandteil eines Software-Systems Verfügbarkeit der Daten wichtig
z.B. bedeutet Ausfall bei Onlineshop: Imageschaden/Verärgerte Kunden Umsatzeinbußen
Beispiel Neckermann: Session-Daten des Online-Shops 500.000 Anfragen pro Tag MySQL Cluster erfüllt Anforderungen:
Hohe Performance und Ausfallsicherheit bei geringen Kosten
15.12.2008 Philipp Bachmann 4
Von MySQL ... Relationale Datenbank Daten in Tabellen gespeichert
Spalten/Attribute - ArtikelNr, ArtikelBez, Zeilen/Datensätze – ein Artikel
Abfragesprache: Structured Query Language (SQL) SELECT * FROM tblArtikel WHERE ArtikelNr = 5
Verknüpfung von Tabellen über gemeinsame Attribute SELECT * FROM Bestellung AS b INNER JOIN tblArtikel AS
a WHERE a.ArtikelNr = b.ArtikelNr AND b.BestellNr = 42 Primary Key: Eindeutige Identifizierung eines Datensatzes Client/Server Architektur
…1 Auto …2 Wein ...5 DVD ...6 Buch ...
ArtikelNr ArtikelBez
15.12.2008 Philipp Bachmann 5
… und Transaktionen ... Transaktion: Gruppe von SQL Anweisungen die als atomar
angesehen werden Beispiel: Bestellung eines Artikels
START TRANSACTIONSELECT Anzahl FROM tblLager WHERE ArtikelNr = 5UPDATE tblLager SET Anzahl = Anzahl – 1 WHERE AritkelNr = 5
COMMIT ACID-Transaktionen
Atomicity – ganz oder gar nicht Consistency – der Daten vor und nach Transaktion Isolation – keine gegenseitige Beeinflussung Durability – erfolgreiche Transaktion ist dauerhaft
15.12.2008 Philipp Bachmann 6
MySQL Server
… über Storage Engines ...
Tabellen in Storage Engines gespeichert MyISAM: disk based, schnell, keine Transaktionen Memory: memory based, sehr schnell InnoDB: disk based, ACID Unterstützung, mehr
Overhead Abstraktionsschicht
MyIS
AM
InnoDB
Mem
ory
ND
B
Parse Optimize Retrieve/Store
MySQL DatabaseManagement Level
Client
PHP Skript
Java Client
MySQL Console
SQL Query
Storage EngineLevel
15.12.2008 Philipp Bachmann 7
… zu MySQL Cluster NDB (Network Database)
Storage Engine von MySQL Cluster Einfache Migration
Gleiche Client-Anwendungen nutzbar SQL: ALTER TABLE tblArtikel ENGINE=NDB Achtung bei Performance + besonderen Features
MyIS
AM
InnoDB
Mem
ory
ND
BMySQL Server
???
MySQL Cluster
15.12.2008 Philipp Bachmann 8
MySQL Cluster - Features 99,999% Verfügbarkeit Kein Single Point of Failure durch eine verteilte,
fehlertolerante Architektur Automatischer, schneller Failover Kosteneffizient
OpenSource, commodity off-the-shelf Hohe Performance
In-memory Datenbank, Parallelisierung Skalierbar je nach benötigten Ressourcen
15.12.2008 Philipp Bachmann 9
Inhalt1) Einführung
2) System-Architektur3) Hohe Verfügbarkeit4) Performance5) Fazit
15.12.2008 Philipp Bachmann 10
MySQL Cluster
NDB Storage Engine
Allgemeines zur Architektur 3 Knotentypen
Data Node: Speichert und repliziert Daten
Application Node: Verarbeitet Daten
Management Node Shared Nothing Architektur Transporter: TCP/IP, SCI,
Shared Memory
NDB API
15.12.2008 Philipp Bachmann 11
Management Node Nodes beziehen Cluster-Konfiguration vom MGM Node Nur beim Starten/Rekonfigurieren von Nodes benötigt Kein schneller Rechner nötig Arbiterfunktion im Fehlerfall Backup-MGM Nodes möglich
Administration des Clusters über MGM-Konsole show status shutdown
Config
Config
15.12.2008 Philipp Bachmann 12
Data Node Speichert Datensätze in
a) RAMb) RAM + HDD (mit Page Cache)
Partitioning: Zeilen einer Tabelle auf Data Nodes verteilen per Hash-Funktion: MD5(Primary Key)
Transaction Coordinator (TC) Bearbeitet eine Transaktion eines SQL Nodes Wickelt COMMIT und ROLLBACK ab
Local Query Handler: Bearbeitet Anfragen von TCs Checkpoints zum Speichern der Daten auf HDD
Data
Tabellen
Data Req.
Verarbeitungder Daten
15.12.2008 Philipp Bachmann 13
Transaction Coordinator Erste Anfrage einer Transaktion bestimmt Position des TC Bei Zugriff über Primary Key
Application Node berechnet MD5(Primary Key) Abbildungsfunktion liefert Data Node mit Daten TC auf diesem platziert
Ansonsten: Round Robin Verfahren
START TRANSACTIONSELECT * FROM tblArtikel WHERE AritkelNr=23…
COMMIT
MD5(23) → Data Node 2
TransactionCoordinator
…6 ...17 ...
ArtikelNr
…23 ...29 ...
ArtikelNr
15.12.2008 Philipp Bachmann 14
NDB Storage Engine
Application Node Normaler MySQL Server
Standard SQL Interface Interner Zugriff auf NDB
Storage Engine über NDB API Alternative: Zugriff über NDB API
Für C++ (NDB API) und Java (NDB/J) vorhanden Mehr als 3 mal so schnell, jedoch kein SQL
Kombination sinnvoll MySQL Server: Auswertungen und Wartung NDB API: Performance-kritische Anfragen
Load Balancing (extern) bei mehreren Application Nodes
NDB API
MySQLServer
NDB API
JavaApplikationNDB API
JavaApplikation
SQL
15.12.2008 Philipp Bachmann 15
Beispielanfrage
SELECT ArtikelBezFROM tblArtikelORDER BY ArtikelBez
PHPSkript
Auswahl nachRound Robin
12
3
54
6
DVD, Buch
Auto, Buch, DVD, Wein MySQL Cluster
Auto, Wein, DVD, Buch
TransactionCoordinator
…1 Auto …2 Wein ...
ArtikelNr ArtikelBez …5 DVD ...6 Buch ...
ArtikelNr ArtikelBez
LocalQueryHandler
tblArtikel: tblArtikel:
15.12.2008 Philipp Bachmann 16
Inhalt1) Einführung2) System-Architektur
3) Hohe Verfügbarkeit4) Performance5) Fazit
15.12.2008 Philipp Bachmann 17
Hohe VerfügbarkeitZiel: 99.999% Verfügbarkeit
Problem: Ausfall von Knoten oder Netzwerkverbindungen
Strategie Fehlerfall erkennen Betrieb aufrecht erhalten
Bedingung: Kopie der Daten vorhandena) Innerhalb des Clustersb) In anderem Ersatz-Cluster
Normalbetrieb wiederherstellen
15.12.2008 Philipp Bachmann 18
Synchronous Replication Replik auf andere Data Nodes des Cluster Synchronous: Warte bis Daten auf anderen Data Node
kopiert wurden Sehr kurze Failover Time: < 1s Erhöhte Response Zeit bei Anfragen
Two Phase Commit Protocol (Update und Commit) 0 bis 4 Repliken wählbar Node Group: Satz von Data Nodes, die alle die gleichen
Daten speichern
15.12.2008 Philipp Bachmann 19
tblArtikeltblArtikeltblArtikel
Synchronous ReplicationNumOfReplicas = 2
Node Group 1
AutoBuchPC
Mixer
AutoBuchPC
Mixer
tblArtikelNode Group 2
DVDWein
DVDWein
Primäre Replik Sekundäre Replik
15.12.2008 Philipp Bachmann 20
tblArtikeltblArtikeltblArtikel
Synchronous ReplicationNumOfReplicas = 2
Node Group 1
....INSERT INTO tblArtikel (ArtikelNr, AritkelBez, ...) VALUES (7, 'CD', …)COMMIT
AutoBuchPC
Mixer
AutoBuchPC
Mixer
tblArtikelNode Group 2
DVDWeinCD
DVDWeinCD
Primäre Replik Sekundäre Replik
1
2 3
TransactionCoordinator
Local QueryHandlers
Update :Commit:
43
5
6
15.12.2008 Philipp Bachmann 21
tblArtikeltblArtikel
Synchronous ReplicationNumOfReplicas = 2
Node Group 1
....INSERT INTO tblArtikel (ArtikelNr, AritkelBez, ...) VALUES (7, 'CD', …)COMMIT
AutoBuchPC
Mixer
AutoBuchPC
Mixer
tblArtikelNode Group 2
DVDWeinCD
tblArtikelDVDWeinCD
Primäre Replik Sekundäre Replik
1
2a
TransactionCoordinator
Update :Commit:
2b
3a
4 3b
15.12.2008 Philipp Bachmann 22
Row-based Replication Repliziere Daten von einem MySQL Server/Cluster zu
einem anderem MySQL Server/Cluster Anwendungen
Hohe VerfügbarkeitMySQL Cluster → MySQL Cluster
Für Wartungs- und Auswertungsarbeiten Testumgebung Geographische Replikation
Entferntes Rechenzentrum Read/Write Scalability
15.12.2008 Philipp Bachmann 23
Row-based Replication Row-based: Änderungen in einzelnen Zeilen werden
repliziert Master/Slave Architektur
Hierarchien möglich Asychronous: Keine Garantie, dass Slave schon
Änderungen des Masters übernommen hat (z.B. Lag) Mehrere Replication Channel NDB binlog injector thread
Läuft auf dem Replication Master (MySQL Server) Empfängt alle Änderungen von der NDB Storage-
Engine und erzeugt binlog
15.12.2008 Philipp Bachmann 24
Row-based Replication
Quelle: [1]
15.12.2008 Philipp Bachmann 25
Fehlerdetektion Verbindungsprobleme
Bemerkt von anderen Knoten Heartbeat Protocol: Hohe Auslastung, Speicherprobleme
Anordnung der Data Nodes als Ring 3 fehlende Heartbeats
=> Node ausgefallen Andere Knoten werden über
Ausfall informiert
15.12.2008 Philipp Bachmann 26
Network Partition Protocol Prüft ob Netzwerk in 2 Teile aufgespaltet wurde Ziel: Dateninkonsistenz vermeiden bei Split-Brain Szenario Teilnetz wird als Cluster angesehen falls:
Mehr als Hälfte der Data Nodes im Teilnetz Bei genau der Hälfte entscheidet Arbiter
NumOfReplicas = 3
Node Group 1
Node Group 2
15.12.2008 Philipp Bachmann 27
Fehlerszenarien MGM Node: Bei Bedarf neu starten Application Node
Applikation nutzt anderen Application Node Fehlerhafter Knoten verbindet sich neu zum Cluster
Data Node Anfragen gehen an anderen Data Node der Node
Group (Replika vorhanden) Laufende Transaktionen des Data Nodes werden
abgebrochen und Applikation startet sie erneut Ausgefallener Knoten bezieht seine Partition von
anderem Knoten der NodeGroup
15.12.2008 Philipp Bachmann 28
Inhalt1) Einführung2) System-Architektur
3) Hohe Verfügbarkeit
4) Performance5) Fazit
15.12.2008 Philipp Bachmann 29
Performance Operationen auf einzelnen Datensätzen sehr schnell
z.B: INSERT INTO tblArtikel (51, 'CD', ...)
Parallele Ausführung Skaliert mit Anzahl Data und Application Nodes Latenz durch Replikation und Architektur
Langsamer als andere Storage Engines Batching
SELECT * FROM tblArtikel WHERE ArtikelNr IN (1,2,3,4,5,6,7,8,9,10)
Spart Latenz und Query Parsing/Optimization 2-3 mal so schnell
15.12.2008 Philipp Bachmann 30
Condition Pushdown
SELECT ArtikelBezFROM tblArtikelWHERE TypNr = '42'
PHPSkript
1 2
3
54
6
DVD
CD, DVD MySQL Cluster
CD, DVD
TransactionCoordinator
Parallele Suche
Übernimmt Verarbeitung
…1 Auto 87 …2 CD 42 ...
ArtikelNr ArtikelBez TypNr …5 Mixer 2 …34 DVD 42 ...
ArtikelNr ArtikelBez TypNr
Auswahl nachRound-Robin
tblArtikel: tblArtikel:
15.12.2008 Philipp Bachmann 31
JoinSELECT * FROM tblBestellung AS b INNER JOIN tblArtikel AS a WHERE a.ArtikelNr = b.ArtikelNr AND b.BestellNr = 42
Join wird im MySQL Server berechnet Komplette Tabelle Artikel benötigt Erfordert hohe Bandbreite Extrem langsam➔ Joins wenn möglich vermeiden
NDBSTORAGEENGINEtblBestellung
mit Nr = 42 tblArtikel
tblArtikelData Request
Verknüpfung der Tabellen
15.12.2008 Philipp Bachmann 32
3 Schichten der Skalierbarkeit
NDB Cluster
Applikation Applikation Applikation
Data Node Schicht
MySQL Schicht
Applikationsschicht
15.12.2008 Philipp Bachmann 33
DBT2 Benchmark Freie Implementierung des TPC-C Tests Spezielle Version für MySQL Cluster Simuliert typische e-Commerce Anwendung
Großhandel mit mehreren Warenlagern und Verkaufsgebieten
Zufällige Auswahl von 5 Transaktionstypen New Order, Delivery, Order Status, Payment,
Stock Level Je 10-20 SQL Anweisungen
Ergebnis: New Order Transactions Per Minute (NOTPM)
15.12.2008 Philipp Bachmann 34
Benchmark Results
0 1 2 3 4 5 60
2000
4000
6000
8000
10000
12000
14000
16000
18000
20000
NoOfReplicas 2 NoOfReplicas 4
MySQL Servers
NO
TPM
4 Data Nodes, 1 MGM Node, 1 Warenlager pro MySQL Server, 10 Terminals pro WarenlagerGigabit Ethernet, AMD Opteron Prozessor 2.2 Ghz, 4 GB RAM
+90%
+72%
Avg. Resp. Time: 50ms
Avg. Resp. Time: 42 ms+64%
15.12.2008 Philipp Bachmann 35
NoOfReplicas 1, 1 MGM Node, 2 Warenlager pro MySQL Server, 10 Terminals pro WarenlagerGigabit Ethernet, AMD Opteron Prozessor 2.2 Ghz, 4 GB RAM
0 1 2 3 4 5 60
5000
10000
15000
20000
25000
30000
4 MySQL Server #MySQL=#Data Nodes
Data Nodes
NO
TPM
+9%
+83%
Benchmark Results
15.12.2008 Philipp Bachmann 36
Fazit
Nicht geeignet für viele typische DB Anwendungen Komplexe Joins, Latenz
Anpassung an Cluster-Architektur nötig
Sehr hohe Verfügbarkeit Nach Anpassung:
Gute Skalierbarkeit Gute Performance
Eingesetzt von Neckermann, Nokia, Alcatel-Lucent, Italtel, Toto-Lotto Niedersachsen
15.12.2008 Philipp Bachmann 37
Quellen (1/2)[1] MySQL Cluster New Features - Updated for 6.2 and 6.3
http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster63.php
[2] MySQL ClusteringAlex Davies, Harrison FiskMySQL Press - 2006
[3] High Performance MySQL: Optimization, Backups, Replication, and MoreBaron Schwartz, Peter Zaitsev, Vadim Tkachenko, and Jeremy ZawodnyO'Reilly Media, Inc. - 2008
[4] MySQL 5.1 Cluster DBA Certification Study GuideJon Stephens, Mike Kruckenberg, Roland Bouman, Stewart Smith, Solomon ChangLulu Enterprises - 2007
[5] MySQL 5.1 Reference Manualhttp://dev.mysql.com/doc/refman/5.1/en/index.html
15.12.2008 Philipp Bachmann 38
Quellen (2/2)[6] MySQL Cluster Architecture Overview - High Availability Features of MySQL Cluster
http://www.mysql.com/why-mysql/white-papers/cluster-technical.php
[7] MySQL Cluster Evaluation Guide - Getting the most out of a MySQL Cluster evaluationhttp://www.mysql.com/why-mysql/white-papers/mysql_cluster_eval_guide.php
[8] A Guide to High Availability Clustering - How MySQL Supports 99.999% Availabilityhttp://www.mysql.com/why-mysql/white-papers/cluster.php
[9] Benchmarking Highly Scalable MySQL Clusters - Measuring the performance of highly scalable MySQL Clusters on Multi Core Intel Xeon servers with Dolphin Express interconnecthttp://www.mysql.com/why-mysql/white-papers/mysql_cge_benchmarks_wp_april2007.php
[10] neckermann.de achieves cost-effective - database scalability with MySQL Clusterhttp://www.mysql.com/why-mysql/case-studies/mysql_cs_neckermann.pdf
Alle Onlinequellen zuletzt besucht am 23.11.2008.
15.12.2008 Philipp Bachmann 39
Distribution Awareness Ziel: Latenz vermeiden Strategie: Datenlokalität ausnutzen
Beispiel: Bestellungen eines Kunden auf selben Data Node PRIMARY KEY(BestellNr, KundenNr); PARTITION BY KEY (KundenNr);
TC wird auf Data Node mit Daten platziert Keine Kommunikation mit anderen Data Nodes nötig
Bei 4 Data Nodes um 30%, bei ≥ 8 100%-200% schneller