www.fromdual.com MySQL-Server im Teamwork Replikation und Cluster Administrator-Runde Berlin, 2016-Jan-7 Jörg Brühe Senior Support Engineer, FromDual GmbH [email protected] CC-BY-SA 1 / 41 FromDual GmbH www.fromdual.com Support Beratung remote-DBA Schulung 2 / 41 Zur Person ● www.fromdual.com 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 3 / 41 Inhalt www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 4 / 41 Allgemeines ● ● ● www.fromdual.com 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“ 5 / 41 www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 6 / 41 Client-Server-DBMS App App App www.fromdual.com Client (Applikation) lokal oder remote Socket, LAN oder Internet Server Disk Server ist eigener Prozess Multi-threaded: 1 Thread je Session Platte / SSD, lokal oder SAN 7 / 41 Server intern www.fromdual.com Application / Client Thread Cache Logging Query Cache Connection Manager mysqld Parser Optimizer User Authentication MySQL ist eine multi-Thread und NICHT eine multi-Prozess Applikation! Access Control Command Dispatcher Query Cache Module Table Manager Table Open Cache (.frm, fh) Table Definition Cache (tbl def.) Handler Interface MyISAM InnoDB Memory NDB PBXT Aria XtraDB Federated-X ... 8 / 41 www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 9 / 41 www.fromdual.com SQL-Ebene: - Parser - Optimizer - Privilegien - Query Cache -… ... User thread 2 User thread 1 Ebenen + Binlog Datei-Ebene: ... InnoDB Binlog: Alle Datenund SchemaÄnderungen MyISAM Handler Interface - Tabellen-Handler - InnoDB: - Satz-Zugriffe - Satz-Sperren - Recovery - ... 10 / 41 Binlog www.fromdual.com ● Alle ausgeführten Daten-Änderungen ● Alle ausgeführten Schema-Änderungen ● Zeitstempel ● Zwingend für Point-in-Time-Recovery „PITR“ ● Unabhängig von Tabellen-Handler ● Formate „statement“, „row“ und „mixed“ ● Segmente mit konfigurierbarer Größe ● Fortlaufend nummeriert 11 / 41 www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 12 / 41 Replikation bei MySQL www.fromdual.com ● 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 13 / 41 Slave: “log-bin = FILE”, sonst kein Binlog “log_slave_updates = 1” für Weiterleitung www.fromdual.com ... ... User thread 2 InnoDB Binlog User thread 1 User thread 3 IO thread Relay Log MyISAM ... SQL thread User thread 2 ... InnoDB Binlog MyISAM User thread 1 Slave holt Binlog vom Master Master: “log-bin = FILE”, sonst kein Binlog (keine Master-Funktion) 14 / 41 Typische Anwendungen ● „High Availability“ ● Geo-Redundanz ● ● www.fromdual.com 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 15 / 41 ● ● ... InnoDB MyISAM ... InnoDB MyISAM ... InnoDB MyISAM ... User thread 2 User thread 1 User thread 3 IO thread SQL thread ... User thread 2 User thread 1 IO thread SQL thread ... User thread 2 User thread 1 Replikations-Kaskade www.fromdual.com Empfehlung: „read-only = 1“ auf Slave „log_slave_updates = 1“ mehrere Slaves an einem Master möglich 16 / 41 Einträge im Binlog www.fromdual.com 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“ 17 / 41 Binlog ● ... InnoDB MyISAM Relay Log Binlog ... InnoDB MyISAM IO thread SQL thread ... User thread 2 User thread 1 User thread 3 IO thread SQL thread ... User thread 2 User thread 1 Master-Master-Replikation www.fromdual.com Relay Log Überlappende Änderungen sind fatal! 18 / 41 Anmerkungen zur Replikation www.fromdual.com ● ● 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 19 / 41 www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 20 / 41 Schwächen der Replikation www.fromdual.com ● Asynchron ● Asymmetrisch ● Nur ein Schreib-Knoten ● Paralleles Schreiben verursacht Abbruch ● HA braucht Failover nach Knoten-Ausfall ● Jeder Knoten ist SPOF für seine Slaves, Ausfall erzwingt Struktur-Änderung (Erleichterung in 5.7 durch Multi-Source-Replikation) ● Dynamische Änderungen sind schwierig 21 / 41 Bessere Alternative www.fromdual.com ● Synchrone Übertragung ● Symmetrischer Cluster ● Schreibzugriffe überall möglich ● Verteilte Konflikt-Analyse und -Behebung ● HA durch Kontinuität nach Knoten-Ausfall ● Dynamischer Eintritt / Austritt möglich 22 / 41 Galera Cluster App www.fromdual.com App App Inklusive Ausfall-Erkennung und Redirection für HA Load balancing (LB) Node 1 Node 2 Node 3 wsrep wsrep wsrep Galera replication = = “Working Set Replication” Vorzugsweise eigenes Netz lokale Platten, jeweils Daten komplett “shared nothing” Architektur 23 / 41 Eigenschaften von Galera (1) www.fromdual.com + 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 24 / 41 Ablauf www.fromdual.com Graph by Vadim Tkachenko (Percona): http://www.mysqlperformanceblog.com/2012/01/19/ percona-xtradb-cluster-feature-2-multi-master-replication/ 25 / 41 Eigenschaften von Galera (2) www.fromdual.com - Patch der MySQL-Quellen (Codership bietet Binaries, auch MariaDB und Percona) - Vorsicht bei Hot Spots (Zeilen) - Späte Konflikt-Erkennung, kompl. Rollback (Prüfung erst bei Commit) - Mindestgröße drei Knoten - Synchronisations-Dauer bei großer DB (mysqldump -> xtrabackup oder rsync) 26 / 41 Zertifizierung bei Commit www.fromdual.com http://galeracluster.com/documentation-webpages/certificationbasedreplication.html 27 / 41 www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 28 / 41 MySQL-Server im Teamwork www.fromdual.com ● 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, ...) 29 / 41 Vergleich (1) Replikation Standard Alle Handler Aufwärts-kompatibel Mind 2 Knoten HA durch Failover www.fromdual.com Galera Zusatzprodukt InnoDB gleiche Versionen Mind 3 Knoten HA ohne Änderung Kommunikation: Hierarchisch, Kette asynchron Verzögerung möglich Filtern möglich symmetrisch, parallel Quasi-synchron sofort alles 30 / 41 Vergleich (2) Replikation Lese-Scale-Out Schreiben konst. www.fromdual.com Galera Lese-Scale-Out Schreiben erhöht 1 Master: 1* Write 1* Write Konflikt lokal: Fehler bei Statement Fehler bei Statement n Master: n* Write n* Write Konflikt verteilt: Replikations-Abbruch Rollback bei Commit 31 / 41 Vergleich (3) Replikation www.fromdual.com Galera kurze Unterbrechung: Replikation fortsetzen IST (inkrementeller Transfer) lange Unterbrechung: Replikation fortsetzen SST (kompletter Transfer) Struktur-Änderung: Manuell / Zusatz-Tool Automatisch / dynamisch Aufsetzen: Schnappschuss, Master bleibt verfügbar Komplett-Transfer, Donor tlw. Blockiert 32 / 41 CAP-Theorem www.fromdual.com ● C = Consistency (gleiche Daten überall) ● A = Availability (das System antwortet) ● P = Partition Tolerance (Netzwerk-Ausfall) „In einem verteilten System ist es unmöglich, gleichzeitig die drei Eigenschaften Konsistenz, Verfügbarkeit und Partitionstoleranz zu garantieren.“ https://de.wikipedia.org/wiki/CAP-Theorem 33 / 41 www.fromdual.com MySQL Server: Architektur Binlog Replikation Galera Cluster Vergleich Beispiele / Wann was (nicht) 34 / 41 Kommunikations-Ausfall (1) www.fromdual.com Galera Cluster: ● ● ● ● Isolierter Knoten hat kein Quorum => nicht benutzbar Quorum ist gefährdet! Aktive Knoten schreiben „gcache“ als Files, Aufbewahrungsdauer? Umschaltung auf SST droht 35 / 41 Kommunikations-Ausfall (2) www.fromdual.com Replikation: ● ● ● Master schreibt Log-Segmente als Files IO-Thread will von Binlog-Position / GTID lesen, probiert periodisch bis Erfolg „purge log“ vermeiden! Replikation ist toleranter als Galera Cluster ! 36 / 41 Beispiel: Globale Produktion www.fromdual.com Lösung: Replikation mit Filterung Anforderung: Zentrale (D) und Werke (BR, CN, ...) mit selektiver Übertragung 37 / 41 Paralleles Schreiben + Konflikt www.fromdual.com Galera: ● ● Retry von autocommit-Statements möglich Transaktions-Konflikt führt zu Rollback => Wiederholung durch Applikation Replikation: ● Slave bemerkt, kein Kontakt zur Applikation => Replikation bricht ab Replikation braucht Admin-Eingriff bei Konflikt ! 38 / 41 Hot Spot ● Replikation: Häufig Abbrüche ● Galera: Hohe Rollback-Häufigkeit www.fromdual.com => Einen Schreib-Knoten auswählen ! 39 / 41 Hochverfügbarkeit www.fromdual.com Replikation: ● ● Failover manuell (Reaktionszeit) oder automatisch (korrekt?) Slave Lag, Master-Auswahl Galera: ● Symmetrisch, kein Rollenwechsel ● Virtuell-synchrone Replikation (kein Lag) => Vorteil Galera 40 / 41 Q&A www.fromdual.com Fragen ? Diskussion? Wir haben Zeit für ein persönliches Gespräch ... ● FromDual bietet neutral und unabhängig: ● Beratung ● Remote-DBA ● Support für MySQL, Galera, Percona Server und MariaDB ● Schulung www.fromdual.com/presentations 41 / 41