SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
MySQL Replikation für Einsteiger

    FrOSCon 2011, St. Augustin


            Oli Sennhauser
     Senior MySQL Consultant at FromDual GmbH

       oli.sennhauser@fromdual.com

                  www.fromdual.com              1
Über FromDual GmbH
●   FromDual bietet neutral und unabhängig:
    ●   Beratung für MySQL (vor Ort und remote)
    ●   Remote-DBA Dienstleistungen / MySQL Betrieb
    ●   Premium Support (ex. 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
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   3
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           4
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                                                         5
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          6
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           7
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               8
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   9
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                10
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                11
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                         12
Wann brauche ich die MySQL
Replikation?
●   Es gibt verschiedene Szenarien:
    ●   Scale-Out Lösungen
    ●   Backup Slave
    ●   Datenanalyse, Reporting
    ●   Hochverfügbarkeit (HA)
    ●   Zeitversetzte Datenstände vorhalten




                        www.fromdual.com      13
MySQL Scale-Out vs Scale-Up

         ● Kosten
                             Scale-Up
         ● MySQL Design

         ● Phsikalische Flaschenhälse




     ●   „Relaxation of Constraints“
                               Scale-Out

                        www.fromdual.com   14
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                          15
Neuerungen in MySQL 5.1, 5.5
und 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   16
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                   17
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                18
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                                                      19
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                            20
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           21
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        22
Varianten der Replikation
●   Bianary Log für Point-in-Time-Recovery
●   Tungsten Replication Cluster
●   Synchone Replikation mit Galera




                    www.fromdual.com         23
Point-in-Time-Recovery (PITR)
      Applikation      Applikation       Applikation

                                                              binary log
                                                             writer thread
 log_bin = on           mysqld



                                     bin-log.1   bin-log.2   ...   bin-log.n


 pos/time?
         full backup




                                                                               t
                               www.fromdual.com                                    24
Tungsten Replication Cluster
●   Continuent (www.continuent.com)
●   Master/Slave Replikation (asynchron)
    ●   Basiert auf MySQL Binary Logs!
●   Verfügbarkeit / Performance / Integrität
●   Für MySQL und PostgreSQL!
●   Benötigt Java und Ruby
    ●   Führt eine “globale Transaktions-ID” ein
●   Multi-Source Replikation möglich!
                         www.fromdual.com          25
MySQL Replikationsarchitektur




             www.fromdual.com   26
Synchrone Replikation mittels
Galera
●   Codership (www.codership.com)
●   Synchrone Replikation
    ●   “Certification Based Replication”, kein 2PC!
●   Verfügbarkeit / Skalierbarkeit / transparent
●   Änderungen am MySQL Code notwendig!
    ●   MySQL muss dazu gepatched und neu
        kompiliert werden...
    ●   Codership liefert fertige Binaries!

                          www.fromdual.com             27
Galera Replication




             www.fromdual.com   28
Q&A


                Fragen ?

              Diskussion?


  Wir haben noch Zeit für persönliche und
         indviduelle Beratungen...


                 www.fromdual.com           29

Contenu connexe

Tendances

MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/RecoveryFromDual GmbH
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterFromDual GmbH
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6FromDual GmbH
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?FromDual GmbH
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA'sFromDual GmbH
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationFromDual GmbH
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLFromDual GmbH
 
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLInternet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLFromDual GmbH
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerFromDual GmbH
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsFromDual GmbH
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and SecurityFromDual GmbH
 
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNETWAYS
 
Tanuki service wrapper_101
Tanuki service wrapper_101Tanuki service wrapper_101
Tanuki service wrapper_101inovex GmbH
 

Tendances (20)

MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/Recovery
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und Cluster
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA's
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA's
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQL
 
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLInternet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and Security
 
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
 
Tanuki service wrapper_101
Tanuki service wrapper_101Tanuki service wrapper_101
Tanuki service wrapper_101
 

Similaire à FROSCON 2011: MySQL Replication

MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?FromDual GmbH
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015FromDual GmbH
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenICS User Group
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 
DB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder TravelerDB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder TravelerNico Meisenzahl
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk BackbonesMaximilan Wilhelm
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk BackbonesMaximilian Wilhelm
 
Data Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQLData Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQLFromDual GmbH
 
5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere PerformanceJonas Hünig
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataGunther Pippèrr
 
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer AnwendungBack to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer AnwendungMongoDB
 

Similaire à FROSCON 2011: MySQL Replication (16)

MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
DB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder TravelerDB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder Traveler
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
 
Froscon 2012 DWH
Froscon 2012 DWHFroscon 2012 DWH
Froscon 2012 DWH
 
Data Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQLData Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQL
 
5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
 
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer AnwendungBack to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
 
Best Practices 
Java und JVM in Containern
Best Practices 
Java und JVM in ContainernBest Practices 
Java und JVM in Containern
Best Practices 
Java und JVM in Containern
 

Plus de FromDual GmbH

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...FromDual GmbH
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?FromDual GmbH
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopFromDual GmbH
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New FeaturesFromDual GmbH
 
PERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaPERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaFromDual GmbH
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprintsFromDual GmbH
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLFromDual GmbH
 
MySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterMySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterFromDual GmbH
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014FromDual GmbH
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexingFromDual GmbH
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsFromDual GmbH
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning VariablesFromDual GmbH
 

Plus de FromDual GmbH (16)

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New Features
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New Features
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New Features
 
PERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaPERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schema
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprints
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQL
 
MySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterMySQL always-up with Galera Cluster
MySQL always-up with Galera Cluster
 
HA with Galera
HA with GaleraHA with Galera
HA with Galera
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexing
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
MySQL Security
MySQL SecurityMySQL Security
MySQL Security
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning Variables
 

FROSCON 2011: MySQL Replication

  • 1. MySQL Replikation für Einsteiger FrOSCon 2011, St. Augustin Oli Sennhauser Senior MySQL Consultant at FromDual GmbH oli.sennhauser@fromdual.com www.fromdual.com 1
  • 2. Über FromDual GmbH ● FromDual bietet neutral und unabhängig: ● Beratung für MySQL (vor Ort und remote) ● Remote-DBA Dienstleistungen / MySQL Betrieb ● Premium Support (ex. 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. 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 3
  • 4. 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 4
  • 5. 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 5
  • 6. 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 6
  • 7. 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 7
  • 8. 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 8
  • 9. 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 9
  • 10. 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 10
  • 11. 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 11
  • 12. 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 12
  • 13. Wann brauche ich die MySQL Replikation? ● Es gibt verschiedene Szenarien: ● Scale-Out Lösungen ● Backup Slave ● Datenanalyse, Reporting ● Hochverfügbarkeit (HA) ● Zeitversetzte Datenstände vorhalten www.fromdual.com 13
  • 14. MySQL Scale-Out vs Scale-Up ● Kosten Scale-Up ● MySQL Design ● Phsikalische Flaschenhälse ● „Relaxation of Constraints“ Scale-Out www.fromdual.com 14
  • 15. 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 15
  • 16. Neuerungen in MySQL 5.1, 5.5 und 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 16
  • 17. 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 17
  • 18. 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 18
  • 19. 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 19
  • 20. 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 20
  • 21. 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 21
  • 22. 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 22
  • 23. Varianten der Replikation ● Bianary Log für Point-in-Time-Recovery ● Tungsten Replication Cluster ● Synchone Replikation mit Galera www.fromdual.com 23
  • 24. Point-in-Time-Recovery (PITR) Applikation Applikation Applikation binary log writer thread log_bin = on mysqld bin-log.1 bin-log.2 ... bin-log.n pos/time? full backup t www.fromdual.com 24
  • 25. Tungsten Replication Cluster ● Continuent (www.continuent.com) ● Master/Slave Replikation (asynchron) ● Basiert auf MySQL Binary Logs! ● Verfügbarkeit / Performance / Integrität ● Für MySQL und PostgreSQL! ● Benötigt Java und Ruby ● Führt eine “globale Transaktions-ID” ein ● Multi-Source Replikation möglich! www.fromdual.com 25
  • 26. MySQL Replikationsarchitektur www.fromdual.com 26
  • 27. Synchrone Replikation mittels Galera ● Codership (www.codership.com) ● Synchrone Replikation ● “Certification Based Replication”, kein 2PC! ● Verfügbarkeit / Skalierbarkeit / transparent ● Änderungen am MySQL Code notwendig! ● MySQL muss dazu gepatched und neu kompiliert werden... ● Codership liefert fertige Binaries! www.fromdual.com 27
  • 28. Galera Replication www.fromdual.com 28
  • 29. Q&A Fragen ? Diskussion? Wir haben noch Zeit für persönliche und indviduelle Beratungen... www.fromdual.com 29