MySQL Replication: Eine Einführung Erkan Yanar linsenraum.de 27. Februar 2013 Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 1 / 21 Replikation Was ist Replikation? Die Synchronisation der Daten zwischen Servern. Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 2 / 21 Replikation Was ist Replikation? Die Synchronisation der Daten zwischen Servern. Frühes Feature von MySQL Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 2 / 21 Replikation Was ist Replikation? Die Synchronisation der Daten zwischen Servern. Wofür wird Replikation genutzt? Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 2 / 21 Replikation Architekturen ScaleOut Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 3 / 21 Replikation Architekturen Massive ScaleOut Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 4 / 21 Replikation Architekturen Backup Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 5 / 21 Replikation Architekturen Testing Upgrades: Attaching newer Slaves to older Master Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 6 / 21 Replikation Architekturen HA/Failover Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 7 / 21 Replikation Architekturen Additional Datawarehousing Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 8 / 21 Replikation Architekturen PITR Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 9 / 21 Replikation Architekturen PITR Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 9 / 21 Replikation Architekturen PITR Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 9 / 21 Replikation Architekturen Threads Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 10 / 21 Wie macht das MySQL Binlog aktivieren Master Side log bin server id Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 11 / 21 Wie macht das MySQL Binlog aktivieren Slave Side log bin server id Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 11 / 21 Wie macht das MySQL Binlog aktivieren log bin server id GRANT REPLICATION SLAVE ON *.* TO repl@’host’ IDENTIFIED BY ’jjiaef’ Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 11 / 21 Wie macht das MySQL Binlog aktivieren Zeigen: Replikation aufbauen SHOW SLAVE STATUS Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 12 / 21 Wie macht das MySQL binlog-formatStatement vs. Row STATEMENT Replizieren der SQL Aufrufe binlog-format=ROW ROW Replizieren des Row Images binlog-format=STATEMENT Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 13 / 21 Wie macht das MySQL binlog-formatStatement vs. Row Vorführung mysqlbinlog row statement start-position/stop-position Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 14 / 21 Wie macht das MySQL binlog-formatStatement vs. Row Eine Gegenüberstellung Footprint Performance Lesbarkeit Idempodent PK Eindeutig (SQL) Erkan Yanar (linsenraum.de) STATEMENT Small Query Execution Leicht Nein Egal Nein ROW Up to Heavy Applying Schwer Ja Recommended Ja MySQL Replication: Eine Einführung 27. Februar 2013 15 / 21 a/semisynchrone Replikation asynchrone und semisynchrone Replikation Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 16 / 21 a/semisynchrone Replikation asynchrone und semisynchrone Replikation Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 17 / 21 a/semisynchrone Replikation #master rpl_semi_sync_master_enabled = {0|1} rpl_semi_sync_master_timeout = N #slave rpl_semi_sync_slave_enabled = {0|1} Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 18 / 21 Relevante Optionen sync_binlog [=1] server_id [=1] log_bin [/path/to/file] skip_slave_start read_only binlog_format=[STATMENT,ROW,MIXED] INNODB-READ COMMITTED/READ UNCOMMITTED -> ROW is a must! expire_logs_days Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 19 / 21 Relevante Optionen single threaded different SE one way read only easy read Scaleout asynchron MultiMaster (MariaDB) semisynchron easy Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 20 / 21 Relevante Optionen Ende Gelände Fragen?! Erkan Yanar @ [email protected] ... linsenraum.de/erkules www.xing.com/profile/Erkan Yanar Erkan Yanar (linsenraum.de) MySQL Replication: Eine Einführung 27. Februar 2013 21 / 21