39
15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des Seminars „Ausgewählte Themen in Hardwareentwurf und Optik“

MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

  • Upload
    dothien

  • View
    221

  • Download
    5

Embed Size (px)

Citation preview

Page 1: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 1

MySQL Cluster

Vortrag im Rahmen des Seminars„Ausgewählte Themen in Hardwareentwurf und Optik“

Page 2: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 2

Inhalt1) Einführung2) System-Architektur

3) Hohe Verfügbarkeit4) Performance5) Fazit

Page 3: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 4: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 5: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 6: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 7: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 8: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 9: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 9

Inhalt1) Einführung

2) System-Architektur3) Hohe Verfügbarkeit4) Performance5) Fazit

Page 10: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 11: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 12: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 13: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 14: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 15: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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:

Page 16: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 16

Inhalt1) Einführung2) System-Architektur

3) Hohe Verfügbarkeit4) Performance5) Fazit

Page 17: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 18: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 19: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 20: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 21: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 22: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 23: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 24: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 24

Row-based Replication

Quelle: [1]

Page 25: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 26: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 27: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 28: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 28

Inhalt1) Einführung2) System-Architektur

3) Hohe Verfügbarkeit

4) Performance5) Fazit

Page 29: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 30: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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:

Page 31: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 32: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

15.12.2008 Philipp Bachmann 32

3 Schichten der Skalierbarkeit

NDB Cluster

Applikation Applikation Applikation

Data Node Schicht

MySQL Schicht

Applikationsschicht

Page 33: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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)

Page 34: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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%

Page 35: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 36: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 37: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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

Page 38: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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.

Page 39: MySQL Cluster - ra.ziti.uni-heidelberg.dera.ziti.uni-heidelberg.de/pages/student_work/seminar/hws08/Philipp... · 15.12.2008 Philipp Bachmann 1 MySQL Cluster Vortrag im Rahmen des

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