0
www.fromdual.com     MySQL ReplikationDOAG Konferenz 2012, Nürnberg          Oli Sennhauser   Senior MySQL Consultant, Fro...
Über FromDual GmbH                              www.fromdual.com●   FromDual bietet neutral und unabhängig:    ●   Beratun...
Kunden   www.fromdual.com                 3 / 26
Inhalt                                         www.fromdual.com     MySQL Replikation     ➢         Was ist Replikation?  ...
Was ist Replikation?                    www.fromdual.com●   Daten von einer Datenbank auf eine oder    mehrere andere Date...
MySQL Replikation                                                                       www.fromdual.com●   Wie funktionie...
Vorbereiten des Masters                               www.fromdual.com●   Auf dem Master im my.cnf:    ●   Binary log eins...
User anlegen und Dump                      www.fromdual.com●   Auf dem Master:●   Replikations-User anlegen:      CREATE U...
Aufsetzen des Slaves                           www.fromdual.com●   Neue Datenbank erstellen (2. Maschine)        ./scripts...
Kontrolle und starten                        www.fromdual.com●   Kontrolle:      SHOW SLAVE STATUSG          Slave_IO_Stat...
Probleme beim Aufsetzen                                       www.fromdual.com●   MySQL Replikation funktioniert grundsätz...
Probleme im Betrieb                              www.fromdual.com●   Slave wird nicht überwacht●   Binary logs werden nich...
Master/Slave Drift                                                      www.fromdual.com●   Master und Slave können ausein...
Wann brauche ich die MySQLReplikation?                                    www.fromdual.com●   Es gibt verschiedene Szenari...
MySQL Scale-Out vs Scale-Up               www.fromdual.com         ● Kosten                             Scale-Up         ●...
Der MySQL Scale-Out Ansatz                                        www.fromdual.com                          Applikation   ...
Neuerungen in MySQL 5.1, 5.5und 5.6                                   www.fromdual.com●   Row-Based Replikation (5.1)●   S...
Row-Based Replikation (5.1)                                www.fromdual.com●   Alt (<= 5.0) Statement-Based Replikation (S...
Semi-synchrone Replikation (5.5)                                   www.fromdual.com●   Default asynchrone Replikation    ●...
Semi-synchrone Replikation                                                 www.fromdual.com●   Wie funktioniert die semi-s...
Semi-synchrone Replikation                                                           www.fromdual.com●   Plug-ins aktivier...
Replikation in MySQL 5.6 (1)                               www.fromdual.com●   Transaktions Basierte Replikation (TBR?)   ...
Replikation in MySQL 5.6 (2)                     www.fromdual.com●   Crash safe Binary Logs    ●   Vollständige Events/Trx...
Replikation in MySQL 5.6 (3)               www.fromdual.com●   Remote Binary Log Shipping:        mysqlbinlog ­­read­from­...
Synchrone Replikation mit Galera                 www.fromdual.com●   Codership (www.codership.com)●   Synchrone Replikatio...
Q&A                                                     www.fromdual.com                               Fragen ?           ...
Upcoming SlideShare
Loading in...5
×

MySQL Replication for Beginners

674

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
674
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "MySQL Replication for Beginners"

  1. 1. www.fromdual.com MySQL ReplikationDOAG Konferenz 2012, Nürnberg Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 26
  2. 2. Über FromDual GmbH www.fromdual.com● FromDual bietet neutral und unabhängig: ● Beratung für MySQL und Galera Cluster ● Support für MySQL und Galera Cluster ● MySQL Remote-DBA Dienstleistungen ● MySQL Schulungen● Oracle Silver Partner (OPN) www.fromdual.com 2 / 26
  3. 3. Kunden www.fromdual.com 3 / 26
  4. 4. Inhalt www.fromdual.com MySQL Replikation ➢ Was ist Replikation? ➢ Wie funktioniert MySQL Replikation? ➢ Wie wird Replikation aufgesetzt? ➢ Wann brauche ich MySQL Replikation? ➢ Neuerungen in 5.1, 5.5 und 5.6 4 / 26
  5. 5. Was ist Replikation? www.fromdual.com● Daten von einer Datenbank auf eine oder mehrere andere Datenbanken weiterreichen: Applikation Master Slave● Daten = UPDATE, INSERT, DELETE, ... (= DML Statements) oder (binäre) „Events“ 5 / 26
  6. 6. MySQL Replikation www.fromdual.com● Wie funktioniert die MySQL Replikation? Applikation binlog dump IO_thread thread master.info Initialer Dump SQL_thread Master asynchron Slave relay-log.info binary log writer thread ... bin-log.m bin-log.n ... relay-log.m relay-log.n bin-log.index 6 / 26
  7. 7. Vorbereiten des Masters www.fromdual.com● Auf dem Master im my.cnf: ● Binary log einschalten: log­bin = bin­log ● Server ID setzen: server_id = 42 ● Muss im Replikations-Setup Unique sein!● Server neu starten (downtime!) 7 / 26
  8. 8. User anlegen und Dump www.fromdual.com● Auf dem Master:● Replikations-User anlegen: CREATE USER replication@192.168.1.% IDENTIFIED BY secret; GRANT REPLICATION SLAVE ON *.* TO replication@192.168.1.%;● Initialen konsistenten! Dump ziehen: mysqldump ­­all­databases ­­single­ transaction (­­lock­all­tables)  ­­master­data > full_dump.sql 8 / 26
  9. 9. Aufsetzen des Slaves www.fromdual.com● Neue Datenbank erstellen (2. Maschine) ./scripts/mysql_install_db   ­­datadir=/var/lib/mysql● Andere Server ID setzen: ● server_id = 43● Slave auf seinen Master ansetzen: ● CHANGE MASTER TO master_host=192.168.1.42 , master_port=3306, master_user=replication , master_password=secret;● Initialen konsistenten Dump einspielen: mysql ­u root < full_dump.sql 9 / 26
  10. 10. Kontrolle und starten www.fromdual.com● Kontrolle: SHOW SLAVE STATUSG      Slave_IO_State:         Master_Host: 192.168.1.42         Master_User: replication         Master_Port: 3306     Master_Log_File: bin­log.000001 Read_Master_Log_Pos: 51819      Relay_Log_File: relay­bin.000001       Relay_Log_Pos: 4    Slave_IO_Running: No   Slave_SQL_Running: No● Starten des Slaves: SLAVE START; 10 / 26
  11. 11. Probleme beim Aufsetzen www.fromdual.com● MySQL Replikation funktioniert grundsätzlich gut!● Gründe warum Probleme auftreten: ● Nicht sauberes befolgen der Anleitungen! ● Nicht konsistentes Backup ● OHNE ­­single­transaction / ­­lock­all­tables :-( ● Jedes Schema einzeln (­­all­databases) :-(● MySQL Dokumentation: How to Set Up Replication http://dev.mysql.com/doc/refman/5.5/en/replication- howto.html 11 / 26
  12. 12. Probleme im Betrieb www.fromdual.com● Slave wird nicht überwacht● Binary logs werden nicht aufgeräumt expire_logs_days = n PURGE BINARY LOGS TO bin­log.000013;● „Fummeln“ auf dem Slave● Master/Slave Lag (hinterher hinken)● Master/Slave Drift (auseinander laufen) → Wenn Master und Slave auseinander laufen MUSS der Slave neu aufgesetzt werden● Filtern auf dem Master ist meist keine gute Idee! 12 / 26
  13. 13. Master/Slave Drift www.fromdual.com● Master und Slave können auseinander laufen weil: ● Auf dem Slave geschrieben wird („rumfummeln“!) ● sql_bin_log = 0 ● sql_slave_skip_counter = 1 ● slave_skip_errors=... ● Nicht-deterministische Abfragen/Funktionen → viel besser mit Row Based Replikation (RBR) ● Filtern auf Master oder Slave ● Temporäre Tabellen mit SBR● Unterschiede können gefunden werden mit Tools aus dem Maatkit: mk­table­checksum● und gefixed werden mit: mk­table­sync● Ansonsten → Slave neu aufsetzen!!! 13 / 26
  14. 14. Wann brauche ich die MySQLReplikation? www.fromdual.com● Es gibt verschiedene Szenarien: ● Scale-Out Lösungen ● Backup Slave ● Datenanalyse, Reporting ● Hochverfügbarkeit (HA) ● (Zeitversetzte Datenstände vorhalten) 14 / 26
  15. 15. MySQL Scale-Out vs Scale-Up www.fromdual.com ● Kosten Scale-Up ● MySQL Design ● Phsikalische Flaschenhälse ● „Relaxation of Constraints“ Scale-Out 15 / 26
  16. 16. Der MySQL Scale-Out Ansatz www.fromdual.com Applikation ro rtw Slave Reporting Slave M Master Slave Backup Slave 1 Slave 2 Slave 3 ... Load balancer 16 / 26
  17. 17. Neuerungen in MySQL 5.1, 5.5und 5.6 www.fromdual.com● Row-Based Replikation (5.1)● Semi-Synchrone Replikation (5.5)● Transaktions Basierte Replikation (5.6)● Row Image Control (5.6)● Crash Safe Binary Logs (5.6)● Parallel Slave Worker Threads (5.6)● ... 17 / 26
  18. 18. Row-Based Replikation (5.1) www.fromdual.com● Alt (<= 5.0) Statement-Based Replikation (SBR) → Statements werden übermittelt ● Problem: nicht-deterministische Abfragen/Funktionen → inkonsistente Daten zwischen Master und Slave● Neu (>= 5.1) Row-Based Replikation (RBR) → Events / Trx werden übermittelt ● binlog_format = {ROW | MIXED | STATEMENT} ● RBR ist die sicherste Art der Replikation! ● Wie sehe ich trotzdem was passiert? mysqlbinlog ­­base64­output=DECODE­ROWS  ­­verbose bin­log.000069 ● Mehr binlog Traffic, unterschiedliche Performance → Testen! 18 / 26
  19. 19. Semi-synchrone Replikation (5.5) www.fromdual.com● Default asynchrone Replikation ● Master wartet NICHT auf Slave! ● Bei Crash: Trx ist nicht zwingend auf Slave● Neu (5.5) optional semi-synchrone Replikation ● Plug-in (muss auf Master UND Slave aktiv sein!) ● Master wartet auf Slave bis Timeout! ● Nach Timeout (default 10 s) → Fallback auf asynchron ● Bis Slave in Relay Log (sync) geschrieben hat ● Bessere Datenintegrität (Master + mind. 1 Slave) ● Schlechtere Performance (Commit + NW Roundtrip + Commit) ● Master Commit, dann Crash, möglich dass Trx Slave nicht erreicht hat! 19 / 26
  20. 20. Semi-synchrone Replikation www.fromdual.com● Wie funktioniert die semi-synchrone Replikation? Applikation master.info Master Slave OK relay-log.info ... bin-log.m bin-log.n ... relay-log.m OK relay-log.n bin-log.index 20 / 26
  21. 21. Semi-synchrone Replikation www.fromdual.com● Plug-ins aktivieren: INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; INSTALL PLUGIN rpl_semi_sync_slave SONAME semisync_slave.so;● Prüfen ob erfolgreich: SHOW PLUGINS; +­­­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­+­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­+ | Name                  | Status | Type               | Library            | +­­­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­+­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­+ | rpl_semi_sync_master  | ACTIVE | REPLICATION        | semisync_master.so | | rpl_semi_sync_slave   | ACTIVE | REPLICATION        | semisync_slave.so  | +­­­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­+­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­+● Semi-synchrone Replikation einschalten: SET GLOBAL rpl_semi_sync_master_enabled = 1; SET GLOBAL rpl_semi_sync_slave_enabled  = 1;● Slave (neu) starten: STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; 21 / 26
  22. 22. Replikation in MySQL 5.6 (1) www.fromdual.com● Transaktions Basierte Replikation (TBR?) ● Global Transaction Identifiers (GTID) ● Keine M/S Inkonsistenzen mehr möglich!?! ● Noch etwas wenig geschmeidig / komplizierter :-(● Row Image Control ● binlog_row_image = {full | minimal | noblob}● Parallele Worker Threads ● slave_parallel_workers = <n> ● Parallelisieren pro Schema ● Gut für Hoster mit Traffic auf vielen Schemata! 22 / 26
  23. 23. Replikation in MySQL 5.6 (2) www.fromdual.com● Crash safe Binary Logs ● Vollständige Events/Trx werden geloggt ● Event-Länge + CRC32 Checksumme● Slave: master.info und relay­log.info zusätzlich in (MyISAM) Tabellen ● slave_master_info + slave_relay_log_info ● Umwandeln in InnoDB! 23 / 26
  24. 24. Replikation in MySQL 5.6 (3) www.fromdual.com● Remote Binary Log Shipping: mysqlbinlog ­­read­from­remote­server  ­­raw bin­log.000001 > bin­log.000001.dup● Delayed Replication CHANGE MASTER TO MASTER_DELAY=n; ● Früher mk­slave­delay (Maatkit)● Slave kann auf ein Netzwerk Interface gebunden werden: MASTER_BIND=eth1 24 / 26
  25. 25. Synchrone Replikation mit Galera www.fromdual.com● Codership (www.codership.com)● Synchrone Replikation ● “Certification Based Replication”, kein 2PC!● Echte Multi-Master Replikation● Skaliert sowohl lesend als auch schreibend → mehr dazu Erkan & Alex/Seppo 25 / 26
  26. 26. Q&A www.fromdual.com Fragen ? Diskussion? Wir haben noch Zeit für ein persönliches Gespräch...● FromDual bietet neutral und unabhängig: ● MySQL Beratung ● Remote-DBA für MySQL ● Support für MySQL und Galera ● MySQL Schulung www.fromdual.com/presentations 26 / 26
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×