Enviar pesquisa
Carregar
Replication Tips & Tricks
•
3 gostaram
•
3,714 visualizações
Mats Kindahl
Seguir
Presentation on replication tips and tricks given at the MySQL Connect 2012 conference.
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 49
Baixar agora
Baixar para ler offline
Recomendados
Replication Tips & Trick for SMUG
Replication Tips & Trick for SMUG
Mats Kindahl
Sharding using MySQL and PHP
Sharding using MySQL and PHP
Mats Kindahl
MySQL Binary Log API Presentation - OSCON 2011
MySQL Binary Log API Presentation - OSCON 2011
Mats Kindahl
MySQL User Camp: GTIDs
MySQL User Camp: GTIDs
Shivji Kumar Jha
Overview of Optimizer Features in 5.6 and 5.7-Manyi Lu
Overview of Optimizer Features in 5.6 and 5.7-Manyi Lu
郁萍 王
MySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached API
Mat Keep
MySQL Monitoring 101
MySQL Monitoring 101
Ronald Bradford
MySQL EXPLAIN Explained-Norvald H. Ryeng
MySQL EXPLAIN Explained-Norvald H. Ryeng
郁萍 王
Recomendados
Replication Tips & Trick for SMUG
Replication Tips & Trick for SMUG
Mats Kindahl
Sharding using MySQL and PHP
Sharding using MySQL and PHP
Mats Kindahl
MySQL Binary Log API Presentation - OSCON 2011
MySQL Binary Log API Presentation - OSCON 2011
Mats Kindahl
MySQL User Camp: GTIDs
MySQL User Camp: GTIDs
Shivji Kumar Jha
Overview of Optimizer Features in 5.6 and 5.7-Manyi Lu
Overview of Optimizer Features in 5.6 and 5.7-Manyi Lu
郁萍 王
MySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached API
Mat Keep
MySQL Monitoring 101
MySQL Monitoring 101
Ronald Bradford
MySQL EXPLAIN Explained-Norvald H. Ryeng
MySQL EXPLAIN Explained-Norvald H. Ryeng
郁萍 王
The Native NDB Engine for Memcached
The Native NDB Engine for Memcached
John David Duncan
Ebs dba con4696_pdf_4696_0001
Ebs dba con4696_pdf_4696_0001
jucaab
5050 dev nation
5050 dev nation
Arun Gupta
REST in Piece - Administration of an Oracle Cluster/Database using REST
REST in Piece - Administration of an Oracle Cluster/Database using REST
Christian Gohmann
MySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
Emily Ikuta
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube
Parallel Query on Exadata
Parallel Query on Exadata
Enkitec
New awesome features in MySQL 5.7
New awesome features in MySQL 5.7
Zhaoyang Wang
2012 summarytables
2012 summarytables
sqlhjalp
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
Dave Stokes
MythBusters Globalization Support - Avoid Data Corruption
MythBusters Globalization Support - Avoid Data Corruption
Christian Gohmann
Configuration beyond Java EE 8
Configuration beyond Java EE 8
Anatole Tresch
Exadata Performance Optimization
Exadata Performance Optimization
Enkitec
Configure Your Projects with Apache Tamaya
Configure Your Projects with Apache Tamaya
Anatole Tresch
MySQL Replication
MySQL Replication
Mark Swarbrick
[B34] MySQL最新ロードマップ – MySQL 5.7とその先へ by Ryusuke Kajiyama
[B34] MySQL最新ロードマップ – MySQL 5.7とその先へ by Ryusuke Kajiyama
Insight Technology, Inc.
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHP
Christopher Jones
Mysql tech day_paris_ps_and_sys
Mysql tech day_paris_ps_and_sys
Mark Leith
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Enkitec
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Geir Høydalsvik
Replication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party Extinction
Ben Mildren
Mysql S&M
Mysql S&M
Rob Kaufman
Mais conteúdo relacionado
Mais procurados
The Native NDB Engine for Memcached
The Native NDB Engine for Memcached
John David Duncan
Ebs dba con4696_pdf_4696_0001
Ebs dba con4696_pdf_4696_0001
jucaab
5050 dev nation
5050 dev nation
Arun Gupta
REST in Piece - Administration of an Oracle Cluster/Database using REST
REST in Piece - Administration of an Oracle Cluster/Database using REST
Christian Gohmann
MySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
Emily Ikuta
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube
Parallel Query on Exadata
Parallel Query on Exadata
Enkitec
New awesome features in MySQL 5.7
New awesome features in MySQL 5.7
Zhaoyang Wang
2012 summarytables
2012 summarytables
sqlhjalp
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
Dave Stokes
MythBusters Globalization Support - Avoid Data Corruption
MythBusters Globalization Support - Avoid Data Corruption
Christian Gohmann
Configuration beyond Java EE 8
Configuration beyond Java EE 8
Anatole Tresch
Exadata Performance Optimization
Exadata Performance Optimization
Enkitec
Configure Your Projects with Apache Tamaya
Configure Your Projects with Apache Tamaya
Anatole Tresch
MySQL Replication
MySQL Replication
Mark Swarbrick
[B34] MySQL最新ロードマップ – MySQL 5.7とその先へ by Ryusuke Kajiyama
[B34] MySQL最新ロードマップ – MySQL 5.7とその先へ by Ryusuke Kajiyama
Insight Technology, Inc.
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHP
Christopher Jones
Mysql tech day_paris_ps_and_sys
Mysql tech day_paris_ps_and_sys
Mark Leith
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Enkitec
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Geir Høydalsvik
Mais procurados
(20)
The Native NDB Engine for Memcached
The Native NDB Engine for Memcached
Ebs dba con4696_pdf_4696_0001
Ebs dba con4696_pdf_4696_0001
5050 dev nation
5050 dev nation
REST in Piece - Administration of an Oracle Cluster/Database using REST
REST in Piece - Administration of an Oracle Cluster/Database using REST
MySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
OSSCube MySQL Cluster Tutorial By Sonali At Osspac 09
Parallel Query on Exadata
Parallel Query on Exadata
New awesome features in MySQL 5.7
New awesome features in MySQL 5.7
2012 summarytables
2012 summarytables
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MythBusters Globalization Support - Avoid Data Corruption
MythBusters Globalization Support - Avoid Data Corruption
Configuration beyond Java EE 8
Configuration beyond Java EE 8
Exadata Performance Optimization
Exadata Performance Optimization
Configure Your Projects with Apache Tamaya
Configure Your Projects with Apache Tamaya
MySQL Replication
MySQL Replication
[B34] MySQL最新ロードマップ – MySQL 5.7とその先へ by Ryusuke Kajiyama
[B34] MySQL最新ロードマップ – MySQL 5.7とその先へ by Ryusuke Kajiyama
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHP
Mysql tech day_paris_ps_and_sys
Mysql tech day_paris_ps_and_sys
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Semelhante a Replication Tips & Tricks
Replication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party Extinction
Ben Mildren
Mysql S&M
Mysql S&M
Rob Kaufman
Mysql
Mysql
abhijith
My sql replication advanced techniques presentation
My sql replication advanced techniques presentation
epee
Amazon RDS for MySQL: Best Practices and Migration
Amazon RDS for MySQL: Best Practices and Migration
Amazon Web Services
Amazon RDS for MySQL: Best Practices and Migration
Amazon RDS for MySQL: Best Practices and Migration
Amazon Web Services
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Sven Sandberg
MySQL 8.0 InnoDB Cluster demo
MySQL 8.0 InnoDB Cluster demo
Keith Hollman
MySQL Replication Overview -- PHPTek 2016
MySQL Replication Overview -- PHPTek 2016
Dave Stokes
Fosdem2012 mariadb-5.3-query-optimizer-r2
Fosdem2012 mariadb-5.3-query-optimizer-r2
Sergey Petrunya
Architecting cloud
Architecting cloud
Tahsin Hasan
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
Dave Stokes
Meb Backup & Recovery Performance
Meb Backup & Recovery Performance
Keith Hollman
在Oel5上安装配置oracle gird control 10.2.0.5
在Oel5上安装配置oracle gird control 10.2.0.5
maclean liu
MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016
Dave Stokes
MySQL Cluster Asynchronous replication (2014)
MySQL Cluster Asynchronous replication (2014)
Frazer Clement
MySQL NoSQL APIs
MySQL NoSQL APIs
Morgan Tocker
MySQL Replication Basics -Ohio Linux Fest 2016
MySQL Replication Basics -Ohio Linux Fest 2016
Dave Stokes
Performance Schema and Sys Schema in MySQL 5.7
Performance Schema and Sys Schema in MySQL 5.7
Mark Leith
Go replicator
Go replicator
Command Prompt., Inc
Semelhante a Replication Tips & Tricks
(20)
Replication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party Extinction
Mysql S&M
Mysql S&M
Mysql
Mysql
My sql replication advanced techniques presentation
My sql replication advanced techniques presentation
Amazon RDS for MySQL: Best Practices and Migration
Amazon RDS for MySQL: Best Practices and Migration
Amazon RDS for MySQL: Best Practices and Migration
Amazon RDS for MySQL: Best Practices and Migration
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
MySQL 8.0 InnoDB Cluster demo
MySQL 8.0 InnoDB Cluster demo
MySQL Replication Overview -- PHPTek 2016
MySQL Replication Overview -- PHPTek 2016
Fosdem2012 mariadb-5.3-query-optimizer-r2
Fosdem2012 mariadb-5.3-query-optimizer-r2
Architecting cloud
Architecting cloud
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
Meb Backup & Recovery Performance
Meb Backup & Recovery Performance
在Oel5上安装配置oracle gird control 10.2.0.5
在Oel5上安装配置oracle gird control 10.2.0.5
MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016
MySQL Cluster Asynchronous replication (2014)
MySQL Cluster Asynchronous replication (2014)
MySQL NoSQL APIs
MySQL NoSQL APIs
MySQL Replication Basics -Ohio Linux Fest 2016
MySQL Replication Basics -Ohio Linux Fest 2016
Performance Schema and Sys Schema in MySQL 5.7
Performance Schema and Sys Schema in MySQL 5.7
Go replicator
Go replicator
Mais de Mats Kindahl
Why rust?
Why rust?
Mats Kindahl
Building Scalable High Availability Systems using MySQL Fabric
Building Scalable High Availability Systems using MySQL Fabric
Mats Kindahl
High-Availability using MySQL Fabric
High-Availability using MySQL Fabric
Mats Kindahl
Elastic Scalability in MySQL Fabric Using OpenStack
Elastic Scalability in MySQL Fabric Using OpenStack
Mats Kindahl
Sharding and Scale-out using MySQL Fabric
Sharding and Scale-out using MySQL Fabric
Mats Kindahl
MySQL Fabric: Easy Management of MySQL Servers
MySQL Fabric: Easy Management of MySQL Servers
Mats Kindahl
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
Mats Kindahl
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
Mats Kindahl
Python Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL Databases
Mats Kindahl
Mysteries of the binary log
Mysteries of the binary log
Mats Kindahl
Mais de Mats Kindahl
(10)
Why rust?
Why rust?
Building Scalable High Availability Systems using MySQL Fabric
Building Scalable High Availability Systems using MySQL Fabric
High-Availability using MySQL Fabric
High-Availability using MySQL Fabric
Elastic Scalability in MySQL Fabric Using OpenStack
Elastic Scalability in MySQL Fabric Using OpenStack
Sharding and Scale-out using MySQL Fabric
Sharding and Scale-out using MySQL Fabric
MySQL Fabric: Easy Management of MySQL Servers
MySQL Fabric: Easy Management of MySQL Servers
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
Python Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL Databases
Mysteries of the binary log
Mysteries of the binary log
Último
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Principled Technologies
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
apidays
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Andrey Devyatkin
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
apidays
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
Último
(20)
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Replication Tips & Tricks
1.
Replication Tips &
Tricks Mats Kindahl mats.kindahl@oracle.com 2Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12
2.
Program Agenda
Replication setup and status checking Binary log analysis Crash-safe slaves Multi-source replication Slave fail-over using GTID 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
3.
About the Presentation
This presentation will introduce you to some replication features and also briefly show tips and tricks on how to work with replication. The focus is on short ideas and each item does not go deeper into details. 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
4.
Replication Architecture
Master Slave 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
5.
Reading Slave Status
Understanding the fields of SHOW SLAVE STATUS ● I/O Thread Status ● SQL Thread Status – Slave_IO_Running – Slave_SQL_Running – Last_IO_Errno – Last_SQL_Errno – Last_IO_Error – Last_SQL_Error – Last_IO_Error_Timestamp – Last_SQL_Error_Timestamp ● Master being replicated from – Master_Host – Master_Port 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
6.
Reading Slave Status
Understanding the fields of SHOW SLAVE STATUS ● Next event to execute – in master log coordinates – Relay_Master_Log_File + Exec_Master_Log_Pos ● Next event to execute – in relay log coordinates Relay_Log_File + Relay_Log_Pos ● Next event to read from master Master_Log_File + Read_Master_Log_Pos 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
7.
Reading the Binary
Log Decoding the binary log ● Use mysqlbinlog --hexdump Show hex dump of event as comment --start-position Start dumping at a position --stop-position Stop dumping after this position # at 275 175 =373 16 10 #120927 23:11:58 server id 3 end_log_pos 373 # Position Timestamp Type Master ID Size Master Pos Flags # 113 1e c1 64 50 02 03 00 00 00 62 00 00 00 75 01 00 00 00 00 Little-endian Query 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
8.
Reading the Binary
Log Decoding the binary log # at 275 #120927 23:11:58 server id 3 end_log_pos 373 # Position Timestamp Type Master ID Size Master Pos Flags # 113 1e c1 64 50 02 03 00 00 00 62 00 00 00 75 01 00 00 00 00 # 126 c5 03 00 00 00 00 00 00 04 00 00 1a 00 00 00 00 |................| # 136 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std| # 146 04 21 00 21 00 08 00 74 65 73 74 00 69 6e 73 65 |.......test.inse| # 156 72 74 20 69 6e 74 6f 20 74 32 20 76 61 6c 75 65 |rt.into.t2.value| # 166 73 20 28 31 2c 27 74 65 73 74 69 6e 67 27 29 |s..1..testing..| # Query thread_id=965 exec_time=0 error_code=0 SET TIMESTAMP=1348780318/*!*/; insert into t2 values (1,'testing') /*!*/; 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
9.
Reading the Binary
Log Decode row events ● Use mysqlbinlog --verbose Decode row events into pseudo-SQL # at 849 # at 893 #120928 15:19:24 server id 3 end_log_pos 893 Table_map: `test`.`t2` mapped to number 48 #120928 15:19:24 server id 3 end_log_pos 941 Write_rows: table id 48 flags: STMT_END_F BINLOG ' 3KNlUBMDAAAALAAAAH0DAAAAADAAAAAAAAEABHRlc3QAAnQyAAIDDwIoAAM= 3KNlUBcDAAAAMAAAAK0DAAAAADAAAAAAAAEAAv/8AwAAAA1yb3dzIGFyZSBjb29s '/*!*/; 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
10.
Reading the Binary
Log Decode row events ● Use mysqlbinlog --verbose Decode row events into pseudo-SQL # at 849 # at 893 #120928 15:19:24 server id 3 end_log_pos 893 Table_map: `test`.`t2` mapped to number 48 #120928 15:19:24 server id 3 end_log_pos 941 Write_rows: table id 48 flags: STMT_END_F BINLOG ' 3KNlUBMDAAAALAAAAH0DAAAAADAAAAAAAAEABHRlc3QAAnQyAAIDDwIoAAM= 3KNlUBcDAAAAMAAAAK0DAAAAADAAAAAAAAEAAv/8AwAAAA1yb3dzIGFyZSBjb29s '/*!*/; ### INSERT INTO test.t2 ### SET ### @1=3 ### @2='rows are cool' 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
11.
Cloning a Slave
Creating a slave image 1. Stop the slave 2. Write down where slave has stopped – SHOW SLAVE STATUS – Relay_Master_Log_File + Exec_Master_Log_Pos 3. Backup slave – mysqldump – slow but safe – Physical file copy – fast but you need to shut down the server 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
12.
Cloning a Slave
Setting up the new slave 4. Restore backup on new slave 5. Direct the slave to the master – CHANGE MASTER – Master_Host + Master_Port – Relay_Master_Log_File + Exec_Master_Log_Pos 6. Start slave – START SLAVE 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
13.
Cloning a Slave
The easy way – using MySQL Utilities ● Using mysqldbcopy mysqldbcopy replication=slave locking=snapshot source=root:pass@master.example.com destination=root:pass@slave.example.com database ... 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
14.
Cloning a Slave
The easy way – using MySQL Utilities ● Using mysqldbcopy mysqldbcopy replication=slave locking=lockall source=root:pass@master.example.com destination=root:pass@slave.example.com database ... 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
15.
Point in time
recovery ● Use mysqlbinlog --to-datetime Stop reading when reaching date ● Example mysqlbinlog --read-from-remote-server e --host=master -uroot --position=192 ar ! --to-datetime=”2009-04-11 12:36:56” ps ing am reas st master-bin.00002[2-4] | e nc mysql -uroot --host=slave tim lly i : a ing ic r n ot on W a on m not 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
16.
Using Relay Servers
● Relieve master server by creating relay slaves ● Just keep binary logs ● Do not store data in tables – Use BLACKHOLE engine – --log-slave-updates SET STORAGE_ENGINE = BLACKHOLE ALTER TABLE table ENGINE = BLACKHOLE 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
17.
Using Relay Servers
replicate-wild-do-table-wild=*.%_east replicate-wild-do-table-wild=*.%_west ● Filtering replication stream ● Filtering done on relay servers ● replicatewild*table – Work with cross-database queries 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
18.
Write Your Own
Library Write your own utility library ● Create a utility library to easier work with replication ● Common functions to manage replication: – Start/stop slave – Change master – Fetch master position – Fetch slave execute/read position – Fetch master host information 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
19.
Write Your Own
Library Basic functions using Bourne shell # Usage: mysql_exec socket sql ... # Usage: stop_slave socket [ thread ] mysql_exec () { stop_slave () { sock=$1 mysql_exec $1 STOP SLAVE $2 shift 1 } mysql uroot vertical batch skipcolumnnames # Usage: start_slave socket [ thread ] socket="$sock" start_slave () { exec "$*" mysql_exec $1 START SLAVE $2 } } 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
20.
Write Your Own
Library Basic functions using Bourne shell # Usage: change_master socket [ host [ port [ file [ pos ] ] ] ] change_master () { host=${2:+MASTER_HOST='$2'} port=${3:+,MASTER_PORT=$3} file=${4:+,MASTER_LOG_FILE='$4'} pos=${5:+,MASTER_LOG_POS=$5} mysql_exec $1 CHANGE MASTER TO $host $port $file $pos } # Usage: fetch_master_pos socket fetch_master_pos () { mysql_exec $1 SHOW MASTER STATUS | grep '<File|<Pos' | cut f2 d: } 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
21.
Write Your Own
Library Basic functions using Bourne shell # Usage: fetch_slave_exec_pos socket fetch_slave_exec_pos () { mysql_exec $1 SHOW SLAVE STATUS | grep '<Relay_Master_Log_File|<Exec_Master_Log_Pos' | cut f2 d: } # Usage: fetch_slave_read_pos socket fetch_slave_read_pos () { mysql_exec $1 SHOW SLAVE STATUS | grep '<Master_Log_File|<Read_Master_Log_Pos' | cut f2 d: } 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
22.
master1.example.com
master2.example.com Round-Robin Replication ● Slave can only replicate from single master at a time ● Use time sharing to replicate from several masters Stop Switcher Start Save slave1.example.com Restore 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
23.
Round-Robin Replication
A version using Bourne Shell # Usage: fetch_host_and_pos socket fetch_host_and_pos () { mysql_exec $1 SHOW SLAVE STATUS | grep '<Master_(Host|Port|Log_File)|<Read_Master_Log_Pos' | cut -f2 -d: } # Usage: stop_and_save socket stop_and_save () { sock="/var/run/mysqld/$1.sock" stop_slave $socket fetch_host_and_pos $sock >$1.savepos } 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
24.
Round-Robin Replication
A version using Bourne Shell restore_and_start () { cnt=1 socket="/var/run/mysqld/$1.sock" while true cat $1.savepos | { do read host stop_and_save mysqld.$cnt read port cnt=`expr $cnt % 5 + 1` read file restore_and_start mysqld.$cnt read pos sleep 60 change_master $socket done $host $port $file $pos start_slave $socket } } 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
25.
Crash-safe Slaves
Keeping replication information in sync with data FILE TABLE ● Traditional Replication – Position stored in file – Update after transaction – Crash can lose update ● Transactional Replication ● Repository location FILE or TABLE – Positions stored in table master_info_repository – Update part of transaction relay_log_info_repository – Crash-safe 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
26.
Crash-safe Slaves
Steps to set up crash-safe slaves ● Direct server to use table-based repository – Defaults to FILE master_info_repository=TABLE relay_log_info_repository=TABLE ● Ensure that a transactional engine is used – InnoDB default since 5.6.6 – Before 5.6.6: set the storage engine ALTER TABLE slave_master_info ENGINE = InnoDB ALTER TABLE slave_relay_log_info ENGINE = InnoDB 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
27.
Round-Robin Replication
A version using pure SQL CREATE TABLE my_masters ( CREATE TABLE current_master ( idx INT PRIMARY KEY, idx INT host CHAR(50) NOT NULL, ) ENGINE=InnoDB port INT NOT NULL DEFAULT 3306, log_file CHAR(50), log_pos LONG, UNIQUE INDEX (host,port,user) ) ENGINE=InnoDB CREATE PROCEDURE save_position() BEGIN DECLARE l_idx INT UNSIGNED; UPDATE my_masters AS mi, mysql.slave_relay_log_info AS rli SET mi.log_pos = rli.master_log_pos, mi.log_file = rli.master_log_name WHERE idx = (SELECT idx FROM current_master); END 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
28.
Round-Robin Replication
In pure SQL CREATE PROCEDURE fetch_next_master(OUT p_host CHAR(50), OUT p_port INT UNSIGNED, OUT p_file CHAR(50), OUT p_pos BIGINT) BEGIN DECLARE l_next_idx INT DEFAULT 1; SELECT idx INTO l_next_idx FROM my_masters Select next index, WHERE idx > (SELECT idx FROM current_master) if there is one ORDER BY idx LIMIT 1; SELECT idx INTO l_next_idx FROM my_masters Select the first index, if WHERE idx >= l_next_idx ORDER BY idx LIMIT 1; there were no next index UPDATE current_master SET idx = l_next_idx; SELECT host, port, log_file, log_pos Fetch master info using INTO p_host, p_port, p_file, p_pos FROM my_masters WHERE idx = l_next_idx; the index END 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
29.
Round-Robin Replication
In pure SQL CREATE EVENT multi_source ON SCHEDULE EVERY 10 SECOND DO BEGIN DECLARE l_host CHAR(50); DECLARE l_port INT UNSIGNED; DECLARE l_file CHAR(50); DECLARE l_pos BIGINT; SET SQL_LOG_BIN = 0; STOP SLAVE; START TRANSACTION; CALL save_current_position(); CALL fetch_next_master(l_host, l_port, l_file, l_pos); CALL change_master(l_host, l_port, 'repl_user', 'xyzzy', l_file, l_pos); COMMIT; START SLAVE; END 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
30.
Different Tables on
Master and Slave ● Upgrading – Example: Upgrading a topology without downtime ● Saving space – Not keeping big columns on slave ● Hiding data – Keeping data away from users – Note: still available in binary log and relay log – just not applied to table ● Debugging and Auditing – Adding data for auditing 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
31.
Different Tables on
Master and Slave More columns on slave CREATE TABLE employee ( name CHAR(40), Master CREATE TABLE employee ( name CHAR(40), Slave email CHAR(40) email CHAR(40), changed TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ) ● Same initial columns ● Statement-based or row-based replication 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
32.
Different Tables on
Master and Slave More columns on master CREATE TABLE employee ( CREATE TABLE employee ( name CHAR(40), name CHAR(40), email CHAR(40), email CHAR(40), password CHAR(40) password CHAR(40) ) Master ) Slave ● Same initial columns ● Row-based replication only 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
33.
Different Tables on
Master and Slave Different types of columns on master and slave CREATE TABLE employee ( CREATE TABLE employee ( emp_id INT, emp_id TINYINT, name CHAR(40), name CHAR(40), email CHAR(40) email CHAR(40) ) Master ) Slave ● Table definitions are identical … except that some column type are different 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
34.
Different Tables on
Master and Slave Slave type conversions CREATE TABLE employee ( CREATE TABLE employee ( emp_id INT, emp_id TINYINT, name CHAR(40), name CHAR(40), email CHAR(40) email CHAR(40) ) Master ) Slave ● Consider this statement: St at em INSERT INTO employee VALUES Re ent Works fine (1, 'Bob', 'bob@example.com'), pl -b ica a (500, 'Alice', 'alice@example.com') tio sed Fails silently! n 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
35.
Different Tables on
Master and Slave Slave type conversions CREATE TABLE employee ( CREATE TABLE employee ( emp_id TINYINT, emp_id INT, name CHAR(40), name CHAR(40), email CHAR(40) email CHAR(40) ) Master ) Slave ● Consider this statement: Ro w Re -ba pl INSERT INTO employee VALUES ica sed tio Throws an error! (1, 'Bob', 'bob@example.com'), n (100, 'Alice', 'alice@example.com') 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
36.
Different Tables on
Master and Slave Slave type conversions ● @@GLOBAL.SLAVE_TYPE_CONVERSIONS – Type: SET('ALL_LOSSY', 'ALL_NON_LOSSY') – Require slave restart ● Lossy conversions ● Non-lossy conversions – INT → TINYINT – TINYINT → INT – CHAR(64) → VARCHAR(32) – VARCHAR(32) → CHAR(64) – DOUBLE → FLOAT – FLOAT → DOUBLE 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
37.
Different Tables on
Master and Slave Slave type conversions ● Conversions within same domain possible – INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT – CHAR(n), VARCHAR(n), TINYTEXT, TEXT, … – DECIMAL(n,m), DOUBLE, FLOAT ● ALL_NON_LOSSY in SLAVE_TYPE_CONVERSIONS – Conversion to larger domains allowed ● ALL_LOSSY in SLAVE_TYPE_CONVERSIONS – Conversion to smaller domains allowed (truncation/rounding may occur) 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
38.
Different Tables on
Master and Slave Slave type conversions CREATE TABLE employee ( CREATE TABLE employee ( emp_id TINYINT, emp_id INT, name VARCHAR(40), name VARCHAR(40), email VARCHAR(40) email VARCHAR(40) ) Master ) Slave ● Consider this statement: Ro w Re -ba pl ica sed INSERT INTO employee VALUES (1, 'Bob', 'bob@example.com'), tio Works fine! (100, 'Alice', 'alice@example.com') n SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY' 39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
39.
Different Tables on
Master and Slave Slave type conversions CREATE TABLE employee ( CREATE TABLE employee ( emp_id INT, emp_id TINYINT, name VARCHAR(40), name VARCHAR(40), email VARCHAR(40) email VARCHAR(40) ) Master ) Slave ● Consider this statement: Ro w Re -ba pl ica sed INSERT INTO employee VALUES (1, 'Bob', 'bob@example.com'), tio Throws an error! (100, 'Alice', 'alice@example.com') n SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY' 40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
40.
Master and Slave
out of sync ● Slave stopped with a strange error ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY' ● Compare two databases using mysqldbcompare mysqldbcompare --server1=root@master.example.com --server2=root@slave1.example.com employee 41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
41.
Master and Slave
out of sync Comparing two databases and finding the differences $ mysqldbcompare --quiet --server1=root@localhost:3309 --server2=root@localhost:3310 world # Checking databases world on server1 and world on server2 # # # Data differences found among rows: --- world.City +++ world.City @@ -1,5 +1,5 @@ -+-------+------------+--------------+-----------+-------------+ -| ID | Name | CountryCode | District | Population | -+-------+------------+--------------+-----------+-------------+ -| 3048 | Stockholm | SWE | Lisboa | 750348 | -+-------+------------+--------------+-----------+-------------+ ++-------+-----------+--------------+-----------+-------------+ +| ID | Name | CountryCode | District | Population | ++-------+-----------+--------------+-----------+-------------+ +| 3048 | Helsinki | SWE | Lisboa | 750348 | ++-------+-----------+--------------+-----------+-------------+ 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
42.
Master and Slave
out of sync Synchronizing master and slave databases $ mysqldbcompare --quiet --difftype=sql --changes-for=server2 > --server1=root@master.example.com --server2=root@slave1.example.com > world # Checking databases world on server1 and world on server2 # # # Transformation for --changes-for=server2: # # Data differences found among rows: UPDATE world.City SET Name = 'Stockholm' WHERE ID = '3048'; 43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
43.
Master and Slave
out of sync Synchronizing master and slave databases $ mysqldbcompare --quiet --difftype=sql --changes-for=server1 > --server1=root@master.example.com --server2=root@slave1.example.com > world # Checking databases world on server1 and world on server2 # # # Transformation for --changes-for=server1: # # Data differences found among rows: UPDATE world.City SET Name = 'Helsinki' WHERE ID = '3048'; 44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
44.
Replication Event Checksums
Master Slave Event Checksums 45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
45.
Replication Event Checksums
Configurations and options ● Controlling checksum generation (default is CRC32 since 5.6.6) SET GLOBAL BINLOG_CHECKSUM = CRC32 ● Enable verification on events read by dump thread SET GLOBAL MASTER_VERIFY_CHECKSUM = ON ● Enable verification on events read by SQL thread SET GLOBAL SLAVE_SQL_VERIFY_CHECKSUM = ON 46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
46.
Using Global Transaction
ID for Fail-over Handling positions in MySQL 5.5 ● Binary log positions manually handled ● Each server has it's own position ● Failing over slaves to new masters difficult – What is the position to fail over to? CHANGE MASTER TO MASTER_HOST='master1.example.com', MASTER_PORT=3306, MASTER_USER='repl_user', MASTER_PASSWORD='xyzzy', MASTER_LOG_FILE='master-bin.00001', MASTER_LOG_POS=22145; Different for different servers 47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
47.
Using Global Transaction
ID for Fail-over Enabling Global Transaction IDs ● MySQL 5.6 has Global Transaction ID [mysqld] – Positions independent of server … gtid-mode=on ● GTID handshake disable-gtid-unsafe-statements – Done on connection with master log-bin=master-bin – Negotiate position automatically log-slave-updates CHANGE MASTER TO MASTER_HOST='master1.example.com', MASTER_PORT=3306, MASTER_USER='repl_user', MASTER_PASSWORD='xyzzy', MASTER_LOG_FILE='master-bin.00001', MASTER_LOG_POS=22145; MASTER_AUTO_POSITION=1; 48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
48.
Using Global Transaction
ID for Fail-over Failing over to a new master ● Failing over slave to another master – Switch over – old master server is online – Fail over – old master server is down ● GTID handshake – Automatically done when changing master STOP SLAVE; CHANGE MASTER TO MASTER_HOST='master2.example.com', MASTER_PORT=3306; START SLAVE; 49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
49.
The preceding is
intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 50 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Baixar agora