www.fromdual.com
1 / 33
MySQL-Server im Teamwork -
Replikation und Cluster
DOAG-Konferenz, 2015-Nov-17
Jörg Brühe
Senior Support Engineer, FromDual GmbH
joerg.bruehe@fromdual.com
www.fromdual.com
2 / 33
FromDual GmbH
Support
remote-DBA
Schulung
Beratung
www.fromdual.com
3 / 33
Zur Person
● Entwicklung verteiltes SQL-DBMS:
Unix-Portierung,
Anschluss Archivierungs-Tools (ADSM, NetWorker)
● MySQL Build Team:
Release-Builds inkl. Tests, Paketierung, Skripte, ...
● DBA:
MySQL für eine Web-Plattform
(Master-Master-Replikation)
● Support-Ingenieur (FromDual):
Support + Remote-DBA für MySQL / MariaDB / Percona
mit oder ohne Galera Cluster
www.fromdual.com
4 / 33
Inhalt
MySQL Server: Architektur
Binlog
Replikation
Galera Cluster
Fazit
www.fromdual.com
5 / 33
Allgemeines
● Konzepte, nicht Details
„der Wald, nicht die Bäume“
● MySQL 5.5 / 5.6 (aktuelle GA-Versionen)
● Übertragbar von MySQL (Oracle) auf
Percona und MariaDB
● Nicht anwendbar auf „embedded“ MySQL
● Nicht betrachtet: NDB = „MySQL Cluster“
www.fromdual.com
6 / 33
MySQL Server: Architektur
Binlog
Replikation
Galera Cluster
Fazit
www.fromdual.com
7 / 33
Client-Server-DBMS
App App App
Server
Disk
Client (Applikation)
lokal oder remote
Socket, LAN oder Internet
Server ist eigener Prozess
Multi-threaded:
1 Thread je Session
Platte / SSD, lokal oder SAN
www.fromdual.com
8 / 33
Server intern
mysqld
MySQL ist eine multi-Thread
und NICHT eine multi-Prozess
Applikation!
Application / Client
Thread
Cache
Connection
Manager
User Au-
thentication
Command
Dispatcher
Logging
Query Cache
Module
Query
Cache
Parser
Optimizer
Access Control
Table Manager
Table Open
Cache (.frm, fh)
Table Definition
Cache (tbl def.)
Handler Interface
MyISAM Memory NDB PBXTInnoDB ...Aria XtraDB Federated-X
www.fromdual.com
9 / 33
MySQL Server: Architektur
Binlog
Replikation
Galera Cluster
Fazit
www.fromdual.com
10 / 33
Ebenen + Binlog
MyISAM
InnoDB
...
Userthread2
Userthread1
...
SQL-Ebene:
- Parser
- Optimizer
- Privilegien
- Query Cache
- …
Handler Interface
Datei-Ebene:
- Tabellen-Handler
- InnoDB:
- Satz-Zugriffe
- Satz-Sperren
- Recovery
- ...
Binlog:
Alle Daten-
und Schema-
Änderungen
www.fromdual.com
11 / 33
Binlog
● Alle ausgeführten Daten-Änderungen
● Alle ausgeführten Schema-Änderungen
● Zeitstempel
● Unabhängig von Tabellen-Handler
● Formate „statement“, „row“ und „mixed“
● Zwingend für Point-in-Time-Recovery „PITR“
● Segmente mit konfigurierbarer Größe
● Fortlaufend nummeriert
www.fromdual.com
12 / 33
MySQL Server: Architektur
Binlog
Replikation
Galera Cluster
Fazit
www.fromdual.com
13 / 33
Replikation bei MySQL
● Anwendungen kommunizieren mit „Master“
● „Master“ protokolliert alle Änderungen
● „Slave“ hat identischen Anfangszustand
● Slave holt alle Änderungen vom Master
und wendet sie bei sich an
● Replikation läuft asynchron
● Slave stoppt Replikation bei Abweichung
www.fromdual.com
14 / 33
Slave holt Binlog vom Master
Userthread2
Userthread1
...
Userthread3
MyISAM
InnoDB
...
Userthread2
Userthread1
...
SQLthread
IOthread
BinlogRelay
Log
MyISAM
InnoDB
...
Slave:
“log-bin = FILE”, sonst kein Binlog
“log_slave_updates = 1” für Weiterleitung
Master:
“log-bin = FILE”, sonst kein Binlog
(keine Master-Funktion)
Binlog
www.fromdual.com
15 / 33
Typische Anwendungen
● „High Availability“
● Geo-Redundanz
● Höhere Lese-Last unterstützen
(= „read scale-out“)
● Read-Only-Instanz(en)
für z.B. Backup oder Reports
● Verzögerte Replikation ist möglich
● Filterung (nach DB oder Tabelle) ist möglich
www.fromdual.com
16 / 33
Replikations-Kaskade
Userthread2
Userthread1
...
Userthread3
MyISAM
InnoDB
...
MyISAM
InnoDB
...
MyISAM
InnoDB
...
SQLthread
IOthread
Userthread2
Userthread1
...
SQLthread
IOthread
Userthread2
Userthread1
...
● Empfehlung: „read-only = 1“ auf Slave
● mehrere Slaves an einem Master möglich
www.fromdual.com
17 / 33
Einträge im Binlog
Ursprünglich:
● Identifikation durch Filename und Position
● Replikation: „change master to ...“ mit Host,
Port, User, Password, File, Position
● Siehe auch „mysqldump ­­master­data“
Ab MySQL 5.6:
● GTID = „Global Transaction ID“
● Replikation: „change master to ...“ mit Host,
Port, User, Password und „auto_position = 1“
www.fromdual.com
18 / 33
Master-Master-Replikation
Userthread2
Userthread1
...
Userthread3
MyISAM
InnoDB
...
Userthread2
Userthread1
...
SQLthread
IOthread
BinlogRelay
Log
MyISAM
InnoDB
...
Binlog
SQLthread
IOthread
Relay
Log
● Überlappende Änderungen sind fatal!
www.fromdual.com
19 / 33
Anmerkungen zur Replikation
● Master-Master ist umstritten, Vorsicht!
● Replikation erhöht den Lese-Durchsatz, aber
nicht/kaum den Schreib-Durchsatz
● Replikation hat File-IO und Netzlast
● Format „row“ ist effizienter, aber weniger lesbar
● Mit MySQL 5.7 ist Multi-Master-Replikation
möglich
● Große Installation: booking.com
● Lese-Tipp (Giuseppe Maxia, August 2015):
datacharmer.blogspot.de
www.fromdual.com
20 / 33
MySQL Server: Architektur
Binlog
Replikation
Galera Cluster
Fazit
www.fromdual.com
21 / 33
Schwächen der Replikation
● Asynchron
● Asymmetrisch
● Nur ein Schreib-Knoten
● Paralleles Schreiben verursacht Abbruch
● HA braucht Failover nach Knoten-Ausfall
● Jeder Knoten ist SPOF, Ausfall erzwingt
Struktur-Änderung
(Erleichterung in 5.7 durch Multi-Master)
● Dynamische Änderungen sind schwierig
www.fromdual.com
22 / 33
Bessere Alternative
● Symmetrischer Cluster
● Synchrone Übertragung
● Schreibzugriffe überall möglich
● Verteilte Konflikt-Analyse und -Behebung
● HA durch Kontinuität nach Knoten-Ausfall
● Dynamischer Eintritt / Austritt möglich
www.fromdual.com
23 / 33
Galera Cluster
App App App
Load balancing (LB)
Node 2 Node 3Node 1
wsrep
Galera replication
wsrep wsrep
Inklusive Ausfall-Erkennung
und Redirection für HA
“Working Set Replication”
Vorzugsweise eigenes Netz
lokale Platten,
jeweils Daten komplett
= =
“shared nothing” Architektur
www.fromdual.com
24 / 33
Eigenschaften von Galera (1)
+ Basiert auf InnoDB (wg. Transaktionen und Rollback)
+ Überträgt auch Benutzer-Definitionen usw.
+ Quasi-synchrone Übertragung beim Commit,
Prüfung auf Konflikt-Freiheit, effizient
+ Symmetrisch, HA ohne Server-Failover, Quorum
+ Kein Transaktions-Verlust
+ Scale-Out für Lesen, auch mehr Schreiben
+ Dynamischer Eintritt / Austritt möglich,
automatische Synchronisation
www.fromdual.com
25 / 33
Ablauf
Graph by
Vadim Tkachenko
(Percona):
http://www.mysqlperformanceblog.com/2012/01/19/
percona-xtradb-cluster-feature-2-multi-master-replication/
www.fromdual.com
26 / 33
Eigenschaften von Galera (2)
- Patch der MySQL-Quellen (Codership bietet
Binaries)
- Vorsicht bei Hot Spots (Zeilen)
- Späte Konflikt-Erkennung (Prüfung erst bei
Commit)
- Mindestgröße drei Knoten
- Synchronisations-Dauer bei großer DB
(mysqldump -> xtrabackup oder rsync)
www.fromdual.com
27 / 33
Zertifizierung bei Commit
http://galeracluster.com/documentation-webpages/certificationbasedreplication.html
www.fromdual.com
28 / 33
MySQL Server: Architektur
Binlog
Replikation
Galera Cluster
Fazit
www.fromdual.com
29 / 33
MySQL-Server im Teamwork
● Alternativen: Replikation oder Cluster
● Redundanz bei Maschine und Storage
● HA
● Scale-Out, besonders für Lese-Last
● Instanzen für Reports, Analyse, Backup
● Daten lokal verfügbar (Filialen, ...)
www.fromdual.com
30 / 33
Vergleich (1)
Replikation Galera
Standard Zusatzprodukt
Alle Handler InnoDB
Aufwärts-kompatibel gleiche Versionen
Mind 2 Knoten Mind 3 Knoten
HA durch Failover HA ohne Änderung
Kommunikation:
Hierarchisch, Kette symmetrisch, parallel
asynchron Quasi-synchron
Verzögerung möglich sofort
Filtern möglich alles
www.fromdual.com
31 / 33
Vergleich (2)
Replikation Galera
Lese-Scale-Out Lese-Scale-Out
Schreib-Knoten: 1* Write n* Write
Schreiben konst. Schreiben erhöht
Konflikt lokal:
Fehler bei Statement Fehler bei Statement
Schreib-Knoten: n* Write n* Write
Konflikt verteilt:
Replikations-Abbruch Rollback bei Commit
www.fromdual.com
32 / 33
Vergleich (3)
Replikation Galera
kurze Unterbrechung:
Replikation fortsetzen IST (inkrementeller Transfer)
lange Unterbrechung:
Replikation fortsetzen SST (kompletter Transfer)
Struktur-Änderung:
Manuell / Zusatz-Tool Automatisch / dynamisch
Aufsetzen:
Schnappschuss, Komplett-Transfer,
Master bleibt verfügbar Donor tlw. Blockiert
www.fromdual.com
33 / 33
Q & A
Fragen ?
Diskussion?
Wir haben Zeit für ein persönliches Gespräch – Stand 308
● FromDual bietet neutral und unabhängig:
● Beratung
● Remote-DBA
● Support für MySQL, Galera, Percona Server und MariaDB
● Schulung
www.fromdual.com/presentations

MySQL-Server im Teamwork - Replikation und Cluster

  • 1.
    www.fromdual.com 1 / 33 MySQL-Serverim Teamwork - Replikation und Cluster DOAG-Konferenz, 2015-Nov-17 Jörg Brühe Senior Support Engineer, FromDual GmbH joerg.bruehe@fromdual.com
  • 2.
    www.fromdual.com 2 / 33 FromDualGmbH Support remote-DBA Schulung Beratung
  • 3.
    www.fromdual.com 3 / 33 ZurPerson ● Entwicklung verteiltes SQL-DBMS: Unix-Portierung, Anschluss Archivierungs-Tools (ADSM, NetWorker) ● MySQL Build Team: Release-Builds inkl. Tests, Paketierung, Skripte, ... ● DBA: MySQL für eine Web-Plattform (Master-Master-Replikation) ● Support-Ingenieur (FromDual): Support + Remote-DBA für MySQL / MariaDB / Percona mit oder ohne Galera Cluster
  • 4.
    www.fromdual.com 4 / 33 Inhalt MySQLServer: Architektur Binlog Replikation Galera Cluster Fazit
  • 5.
    www.fromdual.com 5 / 33 Allgemeines ●Konzepte, nicht Details „der Wald, nicht die Bäume“ ● MySQL 5.5 / 5.6 (aktuelle GA-Versionen) ● Übertragbar von MySQL (Oracle) auf Percona und MariaDB ● Nicht anwendbar auf „embedded“ MySQL ● Nicht betrachtet: NDB = „MySQL Cluster“
  • 6.
    www.fromdual.com 6 / 33 MySQLServer: Architektur Binlog Replikation Galera Cluster Fazit
  • 7.
    www.fromdual.com 7 / 33 Client-Server-DBMS AppApp App Server Disk Client (Applikation) lokal oder remote Socket, LAN oder Internet Server ist eigener Prozess Multi-threaded: 1 Thread je Session Platte / SSD, lokal oder SAN
  • 8.
    www.fromdual.com 8 / 33 Serverintern mysqld MySQL ist eine multi-Thread und NICHT eine multi-Prozess Applikation! Application / Client Thread Cache Connection Manager User Au- thentication Command Dispatcher Logging Query Cache Module Query Cache Parser Optimizer Access Control Table Manager Table Open Cache (.frm, fh) Table Definition Cache (tbl def.) Handler Interface MyISAM Memory NDB PBXTInnoDB ...Aria XtraDB Federated-X
  • 9.
    www.fromdual.com 9 / 33 MySQLServer: Architektur Binlog Replikation Galera Cluster Fazit
  • 10.
    www.fromdual.com 10 / 33 Ebenen+ Binlog MyISAM InnoDB ... Userthread2 Userthread1 ... SQL-Ebene: - Parser - Optimizer - Privilegien - Query Cache - … Handler Interface Datei-Ebene: - Tabellen-Handler - InnoDB: - Satz-Zugriffe - Satz-Sperren - Recovery - ... Binlog: Alle Daten- und Schema- Änderungen
  • 11.
    www.fromdual.com 11 / 33 Binlog ●Alle ausgeführten Daten-Änderungen ● Alle ausgeführten Schema-Änderungen ● Zeitstempel ● Unabhängig von Tabellen-Handler ● Formate „statement“, „row“ und „mixed“ ● Zwingend für Point-in-Time-Recovery „PITR“ ● Segmente mit konfigurierbarer Größe ● Fortlaufend nummeriert
  • 12.
    www.fromdual.com 12 / 33 MySQLServer: Architektur Binlog Replikation Galera Cluster Fazit
  • 13.
    www.fromdual.com 13 / 33 Replikationbei MySQL ● Anwendungen kommunizieren mit „Master“ ● „Master“ protokolliert alle Änderungen ● „Slave“ hat identischen Anfangszustand ● Slave holt alle Änderungen vom Master und wendet sie bei sich an ● Replikation läuft asynchron ● Slave stoppt Replikation bei Abweichung
  • 14.
    www.fromdual.com 14 / 33 Slaveholt Binlog vom Master Userthread2 Userthread1 ... Userthread3 MyISAM InnoDB ... Userthread2 Userthread1 ... SQLthread IOthread BinlogRelay Log MyISAM InnoDB ... Slave: “log-bin = FILE”, sonst kein Binlog “log_slave_updates = 1” für Weiterleitung Master: “log-bin = FILE”, sonst kein Binlog (keine Master-Funktion) Binlog
  • 15.
    www.fromdual.com 15 / 33 TypischeAnwendungen ● „High Availability“ ● Geo-Redundanz ● Höhere Lese-Last unterstützen (= „read scale-out“) ● Read-Only-Instanz(en) für z.B. Backup oder Reports ● Verzögerte Replikation ist möglich ● Filterung (nach DB oder Tabelle) ist möglich
  • 16.
  • 17.
    www.fromdual.com 17 / 33 Einträgeim Binlog Ursprünglich: ● Identifikation durch Filename und Position ● Replikation: „change master to ...“ mit Host, Port, User, Password, File, Position ● Siehe auch „mysqldump ­­master­data“ Ab MySQL 5.6: ● GTID = „Global Transaction ID“ ● Replikation: „change master to ...“ mit Host, Port, User, Password und „auto_position = 1“
  • 18.
  • 19.
    www.fromdual.com 19 / 33 Anmerkungenzur Replikation ● Master-Master ist umstritten, Vorsicht! ● Replikation erhöht den Lese-Durchsatz, aber nicht/kaum den Schreib-Durchsatz ● Replikation hat File-IO und Netzlast ● Format „row“ ist effizienter, aber weniger lesbar ● Mit MySQL 5.7 ist Multi-Master-Replikation möglich ● Große Installation: booking.com ● Lese-Tipp (Giuseppe Maxia, August 2015): datacharmer.blogspot.de
  • 20.
    www.fromdual.com 20 / 33 MySQLServer: Architektur Binlog Replikation Galera Cluster Fazit
  • 21.
    www.fromdual.com 21 / 33 Schwächender Replikation ● Asynchron ● Asymmetrisch ● Nur ein Schreib-Knoten ● Paralleles Schreiben verursacht Abbruch ● HA braucht Failover nach Knoten-Ausfall ● Jeder Knoten ist SPOF, Ausfall erzwingt Struktur-Änderung (Erleichterung in 5.7 durch Multi-Master) ● Dynamische Änderungen sind schwierig
  • 22.
    www.fromdual.com 22 / 33 BessereAlternative ● Symmetrischer Cluster ● Synchrone Übertragung ● Schreibzugriffe überall möglich ● Verteilte Konflikt-Analyse und -Behebung ● HA durch Kontinuität nach Knoten-Ausfall ● Dynamischer Eintritt / Austritt möglich
  • 23.
    www.fromdual.com 23 / 33 GaleraCluster App App App Load balancing (LB) Node 2 Node 3Node 1 wsrep Galera replication wsrep wsrep Inklusive Ausfall-Erkennung und Redirection für HA “Working Set Replication” Vorzugsweise eigenes Netz lokale Platten, jeweils Daten komplett = = “shared nothing” Architektur
  • 24.
    www.fromdual.com 24 / 33 Eigenschaftenvon Galera (1) + Basiert auf InnoDB (wg. Transaktionen und Rollback) + Überträgt auch Benutzer-Definitionen usw. + Quasi-synchrone Übertragung beim Commit, Prüfung auf Konflikt-Freiheit, effizient + Symmetrisch, HA ohne Server-Failover, Quorum + Kein Transaktions-Verlust + Scale-Out für Lesen, auch mehr Schreiben + Dynamischer Eintritt / Austritt möglich, automatische Synchronisation
  • 25.
    www.fromdual.com 25 / 33 Ablauf Graphby Vadim Tkachenko (Percona): http://www.mysqlperformanceblog.com/2012/01/19/ percona-xtradb-cluster-feature-2-multi-master-replication/
  • 26.
    www.fromdual.com 26 / 33 Eigenschaftenvon Galera (2) - Patch der MySQL-Quellen (Codership bietet Binaries) - Vorsicht bei Hot Spots (Zeilen) - Späte Konflikt-Erkennung (Prüfung erst bei Commit) - Mindestgröße drei Knoten - Synchronisations-Dauer bei großer DB (mysqldump -> xtrabackup oder rsync)
  • 27.
    www.fromdual.com 27 / 33 Zertifizierungbei Commit http://galeracluster.com/documentation-webpages/certificationbasedreplication.html
  • 28.
    www.fromdual.com 28 / 33 MySQLServer: Architektur Binlog Replikation Galera Cluster Fazit
  • 29.
    www.fromdual.com 29 / 33 MySQL-Serverim Teamwork ● Alternativen: Replikation oder Cluster ● Redundanz bei Maschine und Storage ● HA ● Scale-Out, besonders für Lese-Last ● Instanzen für Reports, Analyse, Backup ● Daten lokal verfügbar (Filialen, ...)
  • 30.
    www.fromdual.com 30 / 33 Vergleich(1) Replikation Galera Standard Zusatzprodukt Alle Handler InnoDB Aufwärts-kompatibel gleiche Versionen Mind 2 Knoten Mind 3 Knoten HA durch Failover HA ohne Änderung Kommunikation: Hierarchisch, Kette symmetrisch, parallel asynchron Quasi-synchron Verzögerung möglich sofort Filtern möglich alles
  • 31.
    www.fromdual.com 31 / 33 Vergleich(2) Replikation Galera Lese-Scale-Out Lese-Scale-Out Schreib-Knoten: 1* Write n* Write Schreiben konst. Schreiben erhöht Konflikt lokal: Fehler bei Statement Fehler bei Statement Schreib-Knoten: n* Write n* Write Konflikt verteilt: Replikations-Abbruch Rollback bei Commit
  • 32.
    www.fromdual.com 32 / 33 Vergleich(3) Replikation Galera kurze Unterbrechung: Replikation fortsetzen IST (inkrementeller Transfer) lange Unterbrechung: Replikation fortsetzen SST (kompletter Transfer) Struktur-Änderung: Manuell / Zusatz-Tool Automatisch / dynamisch Aufsetzen: Schnappschuss, Komplett-Transfer, Master bleibt verfügbar Donor tlw. Blockiert
  • 33.
    www.fromdual.com 33 / 33 Q& A Fragen ? Diskussion? Wir haben Zeit für ein persönliches Gespräch – Stand 308 ● FromDual bietet neutral und unabhängig: ● Beratung ● Remote-DBA ● Support für MySQL, Galera, Percona Server und MariaDB ● Schulung www.fromdual.com/presentations