Your SlideShare is downloading. ×
0
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

DOAG 2011: MySQL Replication

595

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MySQL Replikation für Einsteiger DOAG Conference 2011, Nürnberg Oli Sennhauser Senior MySQL Consultant at FromDual GmbH oli.sennhauser@fromdual.com www.fromdual.com 1
  • 2. FromDual GmbH● FromDual bietet neutral und unabhängig: ● Beratung für MySQL (vor Ort und remote) ● Remote-DBA / MySQL Betrieb ● Support für Galera (synchrone Replikation) ● Support für MySQL (Basic und Silber) ● Schulung für MySQL● Consulting Partner der Open Database Alliance (ODBA.org)● Oracle Silber Partner (OPN)● Mehr Informationen unter: http://www.fromdual.com www.fromdual.com 2
  • 3. Kunden www.fromdual.com 3
  • 4. Inhalt 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 ➢ Varianten der Replikation www.fromdual.com 4
  • 5. Was ist Replikation?● Daten von einer Datenbank auf eine oder mehrere andere Datenbanken weiterreichen: Applikation Master Slave● Daten = UPDATE, INSERT, DELETE, ... (= DML Statements) oder (binäre) „Events“ www.fromdual.com 5
  • 6. MySQL Replikation● 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 www.fromdual.com 6
  • 7. Vorbereiten des Masters● 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!) www.fromdual.com 7
  • 8. User anlegen und Dump ziehen● Immer noch 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 www.fromdual.com 8
  • 9. Aufsetzen des Slaves● 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 www.fromdual.com 9
  • 10. Kontrolle und starten● 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; www.fromdual.com 10
  • 11. Probleme beim Aufsetzen● 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.1/en/replication- howto.html www.fromdual.com 11
  • 12. Probleme beim Betrieb● 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! www.fromdual.com 12
  • 13. Master/Slave Drift● 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!!! www.fromdual.com 13
  • 14. Wann brauche ich die MySQLReplikation?● Es gibt verschiedene Szenarien: ● Scale-Out Lösungen ● Backup Slave ● Datenanalyse, Reporting ● Hochverfügbarkeit (HA) ● Zeitversetzte Datenstände vorhalten www.fromdual.com 14
  • 15. MySQL Scale-Out vs Scale-Up ● Kosten Scale-Up ● MySQL Design ● Phsikalische Flaschenhälse ● „Relaxation of Constraints“ Scale-Out www.fromdual.com 15
  • 16. Der MySQL Scale-Out Ansatz Applikation ro rtw Slave Reporting Slave M Master Slave Backup Slave 1 Slave 2 Slave 3 ... Load balancer www.fromdual.com 16
  • 17. Neuerungen in MySQL 5.1, 5.5und 5.6● Row-Based Replikation (5.1)● Semi-Synchrone Replikation (5.5)● Row Image Control (5.6)● Crash Safe Binary Logs (5.6)● Remote binary log shipping (5.6)● ... www.fromdual.com 17
  • 18. Row-Based Replikation (5.1)● 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! www.fromdual.com 18
  • 19. Semi-Synchrone Replikation (5.5)● 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! www.fromdual.com 19
  • 20. Semi-synchrone Replikation● 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 www.fromdual.com 20
  • 21. Semi-synchrone Replikation● 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; www.fromdual.com 21
  • 22. Replikation in MySQL 5.6● Row Image Control ● binlog_row_image = {full | minimal | noblob}● 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? www.fromdual.com 22
  • 23. Replikation in MySQL 5.6● 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)● Neue Variablen: ● log_bin_basename und log_bin● Aus den Oracle Labs: ● Multi-threaded Slave / Parallel Slave ● Multi-source Replikation? www.fromdual.com 23
  • 24. Synchrone Replikation mit Galera● Codership (www.codership.com)● Synchrone Replikation ● “Certification Based Replication”, kein 2PC!● Echte Multi-Master Replication● Skaliert sowohl lesend als auch schreibend www.fromdual.com 24
  • 25. Galera (synchronous) Replication App App App Load balancing (LB) Node 1 Node 2 Node 3 wsrep wsrep wsrep Galera replication www.fromdual.com 25
  • 26. Galera (synchronous) Replication App App App Load balancing (LB) Node 1 Node 2 Node 3 wsrep wsrep wsrep Galera replication www.fromdual.com 26
  • 27. Galera im Master-Slave Modus App App App write read VIP Load Balancing write read Node 1 Node 2 Node 3 ... wsrep wsrep wsrep Galera replication www.fromdual.com 27
  • 28. Galera über Standortgrenzen App App App App Location A Location B LB LB Node 2 Node 1 Node 3 Node 4 wsrep wsrep wsrep wsrep Galera replication wsrep garbd Location C www.fromdual.com 28
  • 29. Vorteil und Nachteile von GaleraSynchrone ReplikationBasiert auf der InnoDB SE (andere SE theoretisch möglich)Echte aktiv-aktiv Multi-Master TopologyLesen und Schreiben auf alle Cluster-KnotenAutomatisches Membership Control (wer darf dazugehören)Echtes paralleles Replizieren auf ZeilenebeneKein Slave-Lag (Hinterherhinken)Keine verlorenen TransaktionenSkaliet für Lese- UND Schreib-Operationen (Read Scale-Out!)Patch der MySQL Binaries (Codership stellt Binaries zur Verfügung)Vorsicht bei Hotspots auf einzelnen RowsHöhere Wahrscheinlichkeit für Dead LocksSnapshot State Transfer (initiales Syncen) blockiert fürs Schreiben → 3 KnotenInitiales Syncen für sehr grosse DBs (>>50 Gbyte) noch mit mysqldump www.fromdual.com 29
  • 30. Tungsten Replicator● Continuent (www.continuent.com)● Master/Slave Replikation (asynchron) ● Basiert auf MySQL Binary Logs!● Für MySQL und PostgreSQL!● Benötigt Java und Ruby ● Führt eine “globale Transaktions-ID” ein● Multi-Source Replikation möglich!● Parallele Replikation (pro Schema) ● Hoster, SaaS● MySQL Versionen spielen keine Rolle www.fromdual.com 30
  • 31. Tungsten Replicator Architektur www.fromdual.com 31
  • 32. MySQL Community Event Heute Dienstag 15. November 18:00 Restaurant El Canto (peruanische Küche) unterhalb der Burg Keine Meerschweinchen! Bei Interesse bitte melden! www.fromdual.com 32
  • 33. Q&A Fragen ? Diskussion? Wir haben noch Zeit für persönliche und indviduelle Beratungen... www.fromdual.com 33

×