SlideShare a Scribd company logo
 
Replication with MySQL 5.1 Ligaya Turmelle Senior Technical Support Engineer - MySQL [email_address] http://joind.in/1573 <Insert Picture Here>
Agenda What it is  How it Works Types Use Cases Setting it up Filtering Rules Monitoring <Insert Picture Here>
What is it? <Insert Picture Here>
How does it work? <Insert Picture Here>
At a high level On the master makes a change to the data writes it to the binary log On the slave copies the masters binary logs to the relay logs runs the relay logs applying the changes
Nitty Gritty of Master Side Master makes a change and writes the binlog entry Details: it writes the the changes to the binary log writes the transactions serially  After writing to the binary log, the master tells the storage engine to commit the transaction.
Enter the Slave IO thread Slave  creates an I/O thread which connects to the master Slave connects to the master just like any other client then starts a binlog dump process Master then  creates a thread to send the binary log contents to a slave when the slave connects Slave IO thread writes the binary log events to the slaves relay log Once slave catches up with master, IO thread goes to sleep and waits for the master to signal it has new events
Slave SQL Thread Separates the actual execution of the binary log events from the retrieval of it on the master Read and replays the events from the relay log updates the slaves data to match the masters Has all privileges so it can run any query that is sent potential bottleneck
Types <Insert Picture Here>
Basic Info 3 binary log formats:  Statement Based Replication (SBR) Row Based Replication (RBR) Mixed The format of the binary log has no relevance to how the slave handles it.  The SQL thread on the slave can and will handle any binary log format given to it controlled by setting the  binlog_format each format has its pros and cons
Statement Based Replication (SBR) Been used by all previous versions of replication Pros: Proven Less data written to log files. Can be used for audit purposes Cons: Some statements are unsafe  Any nondeterministic behavior is difficult to replicate More locking may be needed then Row Based Complex statements will have to be evaluated and executed Deterministic UDFs must be applied on the slaves InnoDB:  INSERT  statement using AUTO_INCREMENT blocks other nonconflicting  INSERT  statements.
Row Based Replication (RBR) Replicates only the changed rows Pros: All changes can be replicated Safest form Same as most other RDBMS Fewer locks required Cons: Generally more data to be logged Some problems with older versions but fixed now large BLOBs can take longer to replicate
Mixed Replication Uses both SBR and RBR  Statement-based logging is used by default Automatically switches to row-based logging in particular cases http://dev.mysql.com/doc/refman/5.1/en/binary-log-mixed.html Can provide best of both worlds - but requires testing
Use Cases <Insert Picture Here>
ScaleOut Very common use case Scale out load to multiple servers  Reads can be sent to slaves Writes are done on the Master Good for high read workloads Some improvement to writes if Master only writes
Data Redundancy Another common usage backups Failover Use as a testing system test queries application interaction Use different storage engine abilities
Analytics Reporting different queries long running  locking caches DBA can query to learn about their data distribution trends
Long Distance Data Distribution Geographically separate locations disaster recovery Office wants to work on a local copy
Setting it up <Insert Picture Here>
Setting up Replication On the Master config file, need to add log-bin=mysql_bin server_id=1 On the Slave config file, need to add server_id=2 Create the Replication User requires  REPLICATION SLAVE privilege mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'; mysql> GRANT REPLICATION SLAVE ON *.* TO  'repl'@'%.mydomain.com';
Setting up Replication (con’t) Get from Master Obtain master server binary log coordinates mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; Copy the master (if not a new master) mysqldump or binary copy Finally ready!  Actual steps for a new setup: Configure Master; (re)start Master Set up Replication User on Master Get Master status Release read locks on Master Configure Slave; (re)start Slave Execute CHANGE MASTER TO statement
mysql>  CHANGE MASTER TO ->  MASTER_HOST=' master_host_name ', ->  MASTER_USER=' replication_user_name ', ->  MASTER_PASSWORD=' replication_password ', ->  [ MASTER_PORT =  port_num,] ->  MASTER_LOG_FILE=' recorded_log_file_name ', ->  MASTER_LOG_POS= recorded_log_position, ->  [MASTER_SSL = {0|1},] ->  [MASTER_SSL_CA = ' ca_file_name ',] ->  [MASTER_SSL_CAPATH = ' ca_directory_name ',] ->  [MASTER_SSL_CERT = ' cert_file_name ',] ->  [MASTER_SSL_KEY = ' key_file_name ',] ->  [MASTER_SSL_CIPHER = ' cipher_list ',] ->  [MASTER_SSL_VERIFY_SERVER_CERT = {0|1}] ;
Filtering rules <Insert Picture Here>
Filtering Rule Basics 2 levels of filtering On the Master Not recommended On the slave preferred Can be confusing
Filtering on the Master How it works: binlog-do-db binlog-ignore-db Not recommended - ever! Reasons: audit point in time recovery crash recovery
Filtering on the Slave How it works: replicate-do-db replicate-ignore-db replicate-do-table replicate-ignore-table replicate-wild-do-table replicate-wild-ignore-table Avoid mixing “do” and “ignore” command Avoid mixing  wildcard and nonwildcard options First checks DB level filtering and only if no matches moves on to the table level matching
Database  Filters Filters
Table Filters 1 Start  (Following DB options) Any replicate-*-table options? execute UPDATE and Exit Which logging format? Statement Row For each statement that performs an update.. For each update of a table row... No Yes
Table Filters 2 (do/ignore) Any replicate-do-table options? execute UPDATE and Exit Any replicate-ignore-table options? Does the table match any of them? Yes No Yes No ignore UPDATE and Exit Does the table match any of them? Yes Yes No No
Table Filters 3 (wild do/wild ignore) Any replicate-wild-do-table options? execute UPDATE and Exit Any replicate-wild-ignore-table options? Does the table match any of them? Yes No Yes No ignore UPDATE and Exit Does the table match any of them? Yes Yes No No
Table Filters 4 Is there another table to be tested? Any replicate-do-table or replicate-wild-do-table options? Yes No No ignore UPDATE and Exit Yes execute UPDATE and Exit
Monitoring <Insert Picture Here>
On the Master Not much info here Provides the File and Position  Shows any filtering being done on the master Lists the binary logs on the server mysql>  SHOW MASTER STATUS; +---------------+----------+--------------+------------------+ | File  | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73  | test  | manual,mysql  | +---------------+----------+--------------+------------------+ mysql>  SHOW BINARY LOGS; +---------------+-----------+ | Log_name  | File_size | +---------------+-----------+ | binlog.000015 |  724935 | | binlog.000016 |  733481 | +---------------+-----------+
mysql>  SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: localhost Master_User: root Master_Port: 3306 Connect_Retry: 3 Master_Log_File: gbichot-bin.005 Read_Master_Log_Pos: 79 Relay_Log_File: gbichot-relay-bin.005 Relay_Log_Pos: 548 Relay_Master_Log_File: gbichot-bin.005 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: On the Slave
On the Slave Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 79 Relay_Log_Space: 552 Until_Condition: None Until_Log_File: Last_SQL_Error:  Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 8 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:
Questions? <Insert Picture Here>
 

More Related Content

PPT
MySQL 5.5
ODP
MySQL Scaling Presentation
PDF
Pluggable database tutorial 2
PDF
Test Dml With Nologging
 
PDF
Performance Schema for MySQL troubleshooting
PPT
My sql with querys
PPT
Developing Information Schema Plugins
PPT
Oracle Flashback Query 3
MySQL 5.5
MySQL Scaling Presentation
Pluggable database tutorial 2
Test Dml With Nologging
 
Performance Schema for MySQL troubleshooting
My sql with querys
Developing Information Schema Plugins
Oracle Flashback Query 3

What's hot (20)

PDF
Pluggable database tutorial
PDF
Essential Linux Commands for DBAs
PDF
Pluggable database 3
PPT
01 oracle architecture
PDF
Basic - Oracle Edition Based Redefinition Presentation
 
PDF
FIXING BLOCK CORRUPTION (RMAN) on 11G
 
PPT
Les 05 create_bu
PDF
Major features postgres 11
 
PDF
2009 Collaborate IOUG Presentation
PDF
Server control utility reference
PDF
Step by Step Restore rman to different host
PDF
Oracle 12c New Features_RMAN_slides
PPT
Les 10 fl1
PPT
Les 15 perf_sql
PPT
Les 03 catalog
PDF
Oracle Database 11g Product Family
 
PPT
Oracle-L11 using Oracle flashback technology-Mazenet solution
PDF
RMAN - New Features in Oracle 12c - IOUG Collaborate 2017
PPT
Les 08 tune_rman
PPTX
Oracle flashback
Pluggable database tutorial
Essential Linux Commands for DBAs
Pluggable database 3
01 oracle architecture
Basic - Oracle Edition Based Redefinition Presentation
 
FIXING BLOCK CORRUPTION (RMAN) on 11G
 
Les 05 create_bu
Major features postgres 11
 
2009 Collaborate IOUG Presentation
Server control utility reference
Step by Step Restore rman to different host
Oracle 12c New Features_RMAN_slides
Les 10 fl1
Les 15 perf_sql
Les 03 catalog
Oracle Database 11g Product Family
 
Oracle-L11 using Oracle flashback technology-Mazenet solution
RMAN - New Features in Oracle 12c - IOUG Collaborate 2017
Les 08 tune_rman
Oracle flashback
Ad

Similar to MySQL 5.1 Replication (20)

ODP
MySQL 101 PHPTek 2017
PPT
vBACD - Introduction to Opscode Chef - 2/29
PPT
Less04 Instance
ODP
Mysql S&M
PPTX
User Camp High Availability Presentation
ODP
Handling Database Deployments
PPT
Architecting cloud
PPT
Deploy Rails Application by Capistrano
PDF
Systems Automation with Puppet
PDF
MySQL database replication
PPTX
SQL Server - High availability
PDF
Instrumenting plugins for Performance Schema
PPTX
Upgrade to 2008 Best of PASS
PPT
PHP tips by a MYSQL DBA
PDF
Firebird
PPTX
Methods and Best Practices for High Performance eCommerce
PDF
Playing with the CONNECT storage engine
PPTX
Advance Sql Server Store procedure Presentation
PPTX
Database Mirror for the exceptional DBA – David Izahk
PDF
GLOC 2014 NEOOUG - Oracle Database 12c New Features
MySQL 101 PHPTek 2017
vBACD - Introduction to Opscode Chef - 2/29
Less04 Instance
Mysql S&M
User Camp High Availability Presentation
Handling Database Deployments
Architecting cloud
Deploy Rails Application by Capistrano
Systems Automation with Puppet
MySQL database replication
SQL Server - High availability
Instrumenting plugins for Performance Schema
Upgrade to 2008 Best of PASS
PHP tips by a MYSQL DBA
Firebird
Methods and Best Practices for High Performance eCommerce
Playing with the CONNECT storage engine
Advance Sql Server Store procedure Presentation
Database Mirror for the exceptional DBA – David Izahk
GLOC 2014 NEOOUG - Oracle Database 12c New Features
Ad

More from Ligaya Turmelle (11)

PDF
Troubleshooting tldr
PDF
Rootconf admin101
PDF
Zend2016 dba tutorial
KEY
Normalization
KEY
Character sets
KEY
Tek tutorial
KEY
DPC Tutorial
KEY
Perf Tuning Short
PPT
Php Community
ODP
ODP
Performance Tuning
Troubleshooting tldr
Rootconf admin101
Zend2016 dba tutorial
Normalization
Character sets
Tek tutorial
DPC Tutorial
Perf Tuning Short
Php Community
Performance Tuning

Recently uploaded (20)

PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
Approach and Philosophy of On baking technology
PPTX
TLE Review Electricity (Electricity).pptx
PDF
Mushroom cultivation and it's methods.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
August Patch Tuesday
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Spectroscopy.pptx food analysis technology
PPTX
A Presentation on Artificial Intelligence
PDF
Empathic Computing: Creating Shared Understanding
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Network Security Unit 5.pdf for BCA BBA.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
SOPHOS-XG Firewall Administrator PPT.pptx
Spectral efficient network and resource selection model in 5G networks
Unlocking AI with Model Context Protocol (MCP)
MIND Revenue Release Quarter 2 2025 Press Release
OMC Textile Division Presentation 2021.pptx
Heart disease approach using modified random forest and particle swarm optimi...
Approach and Philosophy of On baking technology
TLE Review Electricity (Electricity).pptx
Mushroom cultivation and it's methods.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
August Patch Tuesday
Programs and apps: productivity, graphics, security and other tools
Spectroscopy.pptx food analysis technology
A Presentation on Artificial Intelligence
Empathic Computing: Creating Shared Understanding
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Digital-Transformation-Roadmap-for-Companies.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Network Security Unit 5.pdf for BCA BBA.

MySQL 5.1 Replication

  • 1.  
  • 2. Replication with MySQL 5.1 Ligaya Turmelle Senior Technical Support Engineer - MySQL [email_address] http://joind.in/1573 <Insert Picture Here>
  • 3. Agenda What it is How it Works Types Use Cases Setting it up Filtering Rules Monitoring <Insert Picture Here>
  • 4. What is it? <Insert Picture Here>
  • 5. How does it work? <Insert Picture Here>
  • 6. At a high level On the master makes a change to the data writes it to the binary log On the slave copies the masters binary logs to the relay logs runs the relay logs applying the changes
  • 7. Nitty Gritty of Master Side Master makes a change and writes the binlog entry Details: it writes the the changes to the binary log writes the transactions serially After writing to the binary log, the master tells the storage engine to commit the transaction.
  • 8. Enter the Slave IO thread Slave creates an I/O thread which connects to the master Slave connects to the master just like any other client then starts a binlog dump process Master then creates a thread to send the binary log contents to a slave when the slave connects Slave IO thread writes the binary log events to the slaves relay log Once slave catches up with master, IO thread goes to sleep and waits for the master to signal it has new events
  • 9. Slave SQL Thread Separates the actual execution of the binary log events from the retrieval of it on the master Read and replays the events from the relay log updates the slaves data to match the masters Has all privileges so it can run any query that is sent potential bottleneck
  • 11. Basic Info 3 binary log formats: Statement Based Replication (SBR) Row Based Replication (RBR) Mixed The format of the binary log has no relevance to how the slave handles it. The SQL thread on the slave can and will handle any binary log format given to it controlled by setting the binlog_format each format has its pros and cons
  • 12. Statement Based Replication (SBR) Been used by all previous versions of replication Pros: Proven Less data written to log files. Can be used for audit purposes Cons: Some statements are unsafe Any nondeterministic behavior is difficult to replicate More locking may be needed then Row Based Complex statements will have to be evaluated and executed Deterministic UDFs must be applied on the slaves InnoDB: INSERT statement using AUTO_INCREMENT blocks other nonconflicting INSERT statements.
  • 13. Row Based Replication (RBR) Replicates only the changed rows Pros: All changes can be replicated Safest form Same as most other RDBMS Fewer locks required Cons: Generally more data to be logged Some problems with older versions but fixed now large BLOBs can take longer to replicate
  • 14. Mixed Replication Uses both SBR and RBR Statement-based logging is used by default Automatically switches to row-based logging in particular cases http://dev.mysql.com/doc/refman/5.1/en/binary-log-mixed.html Can provide best of both worlds - but requires testing
  • 15. Use Cases <Insert Picture Here>
  • 16. ScaleOut Very common use case Scale out load to multiple servers Reads can be sent to slaves Writes are done on the Master Good for high read workloads Some improvement to writes if Master only writes
  • 17. Data Redundancy Another common usage backups Failover Use as a testing system test queries application interaction Use different storage engine abilities
  • 18. Analytics Reporting different queries long running locking caches DBA can query to learn about their data distribution trends
  • 19. Long Distance Data Distribution Geographically separate locations disaster recovery Office wants to work on a local copy
  • 20. Setting it up <Insert Picture Here>
  • 21. Setting up Replication On the Master config file, need to add log-bin=mysql_bin server_id=1 On the Slave config file, need to add server_id=2 Create the Replication User requires REPLICATION SLAVE privilege mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
  • 22. Setting up Replication (con’t) Get from Master Obtain master server binary log coordinates mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; Copy the master (if not a new master) mysqldump or binary copy Finally ready! Actual steps for a new setup: Configure Master; (re)start Master Set up Replication User on Master Get Master status Release read locks on Master Configure Slave; (re)start Slave Execute CHANGE MASTER TO statement
  • 23. mysql> CHANGE MASTER TO -> MASTER_HOST=' master_host_name ', -> MASTER_USER=' replication_user_name ', -> MASTER_PASSWORD=' replication_password ', -> [ MASTER_PORT = port_num,] -> MASTER_LOG_FILE=' recorded_log_file_name ', -> MASTER_LOG_POS= recorded_log_position, -> [MASTER_SSL = {0|1},] -> [MASTER_SSL_CA = ' ca_file_name ',] -> [MASTER_SSL_CAPATH = ' ca_directory_name ',] -> [MASTER_SSL_CERT = ' cert_file_name ',] -> [MASTER_SSL_KEY = ' key_file_name ',] -> [MASTER_SSL_CIPHER = ' cipher_list ',] -> [MASTER_SSL_VERIFY_SERVER_CERT = {0|1}] ;
  • 24. Filtering rules <Insert Picture Here>
  • 25. Filtering Rule Basics 2 levels of filtering On the Master Not recommended On the slave preferred Can be confusing
  • 26. Filtering on the Master How it works: binlog-do-db binlog-ignore-db Not recommended - ever! Reasons: audit point in time recovery crash recovery
  • 27. Filtering on the Slave How it works: replicate-do-db replicate-ignore-db replicate-do-table replicate-ignore-table replicate-wild-do-table replicate-wild-ignore-table Avoid mixing “do” and “ignore” command Avoid mixing wildcard and nonwildcard options First checks DB level filtering and only if no matches moves on to the table level matching
  • 28. Database Filters Filters
  • 29. Table Filters 1 Start (Following DB options) Any replicate-*-table options? execute UPDATE and Exit Which logging format? Statement Row For each statement that performs an update.. For each update of a table row... No Yes
  • 30. Table Filters 2 (do/ignore) Any replicate-do-table options? execute UPDATE and Exit Any replicate-ignore-table options? Does the table match any of them? Yes No Yes No ignore UPDATE and Exit Does the table match any of them? Yes Yes No No
  • 31. Table Filters 3 (wild do/wild ignore) Any replicate-wild-do-table options? execute UPDATE and Exit Any replicate-wild-ignore-table options? Does the table match any of them? Yes No Yes No ignore UPDATE and Exit Does the table match any of them? Yes Yes No No
  • 32. Table Filters 4 Is there another table to be tested? Any replicate-do-table or replicate-wild-do-table options? Yes No No ignore UPDATE and Exit Yes execute UPDATE and Exit
  • 34. On the Master Not much info here Provides the File and Position Shows any filtering being done on the master Lists the binary logs on the server mysql> SHOW MASTER STATUS; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test | manual,mysql | +---------------+----------+--------------+------------------+ mysql> SHOW BINARY LOGS; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000015 | 724935 | | binlog.000016 | 733481 | +---------------+-----------+
  • 35. mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: localhost Master_User: root Master_Port: 3306 Connect_Retry: 3 Master_Log_File: gbichot-bin.005 Read_Master_Log_Pos: 79 Relay_Log_File: gbichot-relay-bin.005 Relay_Log_Pos: 548 Relay_Master_Log_File: gbichot-bin.005 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: On the Slave
  • 36. On the Slave Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 79 Relay_Log_Space: 552 Until_Condition: None Until_Log_File: Last_SQL_Error: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 8 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:
  • 38.  

Editor's Notes

  • #5: - Replication is the concept of taking data from one machine and copying it over to one or more separate machines. - Why would we want that? It can be used for a multitude of tasks including as part of a foundation to build larger high performance systems, keeping a “hot” spare of your server, provide a place to generated backups away from the production system, providing a development area with real data .
  • #6: -
  • #7: Who knows what the binary log is? Who knows what the relay log is? Replication is based on - master server keeping track of all changes in its binary log. - binary log serves as a written record of all events that modify database structure or content (data) - relay log is a log kept on the slave that consists of the events read from the binary log of the master. - implementation is one-way, asynchronous. * slaves pull the information from the master * they do not have to be connected to the master all the time. So updates can occur over long-distance connections and even over temporary or intermittent connections such as a dial-up service. Not too bad. pretty easy to understand. But each step is actually multiple complex steps.
  • #8: bullet 1 sub-bullet 1: Right before a transaction on the master that alters data commits... bullet 1 sub-bullet 1 sub-sub-bullet 2: even if the transactions are interwoven on the master during execution - Can you see any problems with this? Potentially you could have a binary log entry written but never run on the master... How? (Answer: server crash between the writing to the binary log and the commit of the transaction. When the server comes back up the transaction will be rolled back, even though it is already in the binary log. Potential to get master/slave out of sync. )
  • #9: Slave pulls the data from the master, rather than the master pushing the data to the slave. This will happen for each slave. bullet 1: The state of this thread is shown as Slave_IO_running in the output of SHOW SLAVE STATUS or as Slave_running in the output of SHOW STATUS. bullet 3: thread identified in the output of SHOW PROCESSLIST on the master as the Bin log Dump thread. It acquires a lock on the master&apos;s binary log for reading each event that is to be sent to the slave. As soon as the event has been read, the lock is released, even before the event is sent to the slave.
  • #10: bullet 4: need to know about this for security concerns. If it makes it into the relay log - it will happen. bullet 5: master server can be writing to the binary log with N threads (parallel) but the slave only has the one thread to repeat all the commands done on the master (serial). Slave should be more powerful then the master - it will be doing everything the master does *and* it’s own workload
  • #11: -
  • #13: also called logical replication bullet 1: replicates entire SQL statements bullet 2 sub-bullet 2: the SQL is written to the log - not all the rows changed and how they are changed bullet 2 sub-bullet 3: contain all statements that made any changes bullet 3 sub-bullet 1: Def deterministic: guaranteed output with a given input - unfortunately there are quite a few Examples: 1) DELETE and UPDATE state ments that use a LIMIT clause without an ORDER BY 2) using any of the following functions: UUID(), UUID _SHORT (), USER (), FOUND_RO WS(), LOAD_FILE(), MASTER_POS_WAIT() , SLEEP(), VERSION(), et c. bullet 3 sub-b ullet 2: Examples: INSERT ... SELECT requires a greater number of row-level l ocks, UPDATE statements that require a table scan (because no index is used in th e WHER E clause) must lock a greater number of rows
  • #14: bullet 1: Row-based binary logging logs changes in individual table rows. The master writes events to the binary log that indicate how individual table rows are changed. bullet 2 sub-bullet 4: - On the Master: INSERT ... SELECT , INSERT statements with AUTO_INCREMENT, UPDATE or DELETE statem ents w ith WHERE clause s that do not use keys or do not change most of the examined rows. - On the Slave: INSERT, UPDATE, or DELETE statement s bull et 3 sub -bulle t 1: SBR lo gs jus t the UPDATE statement. RBR logs each row changed by that UPDATE. - More data means it may take longer to use the binary logs to recover the server and the binary log will be locked for the writing of the data to it bullet 3 sub-bullet 2: - Examples: - Until 5.1.29 you couldn’t read the actual statements that caused changes. After that you can use --base64-output=DECODE-ROWS and --verbose. with mysql binlog - Prior to 5. 1.24, it was possible to get dif ferent re sults on the slave then from on the master. Caused by a bug that handled locking of rows as they were accessed. Corrected now.
  • #15: bullet 3: Some examples: UUID() one or more tables with AUTO_INCREMENT columns are updated and a trigger or stored function is invoked any INSERT DELAYED is ex ecuted. call to a UDF is involved individual engines can also determine the logging format used when information in a table is updated
  • #16: -
  • #17: - slaves should be more powerful from Master since they have to do all the work from the master and all the reads for the slave - master can only expand so much. For each slave it has it will have to handle the connection and the sending of the binlog - multiple layouts - Master/Slave, Master/Master (not recommended unless Hot Master/Cold Master), Pyramid etc.
  • #18: Having a copy of the data on the master: bullet 2: you can stop the slave to get a clean backup of the master without interfering with the availability of public facing system bullet 3: using MMM you can handle failover to a “hot swap” system that has been updating to keep up with the original. No single point of failure. bullet 4: allows you to test with real world data to have a better idea of your applications interaction with it bullet 5: have a different storage engines between the master and the slave on tables to take advantage of a specific storage engines abilities (full-text searching, support of transactions
  • #19: Reporting queries tend to be very different then the queries that are run by the application. This also gives the DBA an area to query the data to learn what about it - helps with query tuning or learn about trends in the data (data mning). All separate from the Master production server so it doesn’t interfere with its work.
  • #20: - take into account latency on the network, so it will not be able to be completely “up-to-date” but something may be better then nothing. - Office/branch/developers/contractors can have a local copy without having access to the master
  • #21: -
  • #22: bullet 1: If this has not already been done, this part of master setup requires a server restart. bullet 2: If this has not already been done, this part of slave setup requires a server restart. bullet 3: Each slave must connect to the master using a MySQL user name and password, so there must be a user account on the master that the slave can use to connect. Does not require a specific replication account - but be aware that user name and password will be stored in plain text within the master.info file - SQL account solely for the purposes of replication
  • #23: bullet1 sub-bullet 1: Look for File and Position in MASTER STATUS bullet1 sub-bullet 2: Pick your poison for how you want to do this. Both methods have manual pages for how to do to it. Maybe a want to test your backup procedures to see if it works... bullet 2 step 4: mysql&gt; UNLOCK TABLES;
  • #24: Bold is all that is really required. [] are optional configs if you need them not all options are shown
  • #25: -
  • #29: Known Gotcha: default database and qualified tables (database.table) can cause a query to not be replicated when you think it should.
  • #34: -
  • #36: Slave_IO_State: A copy of the State field of the SHOW PROCESSLIST output for the slave I/O thread. Master_Log_File: master binlog file from which the I/O thread is currently reading. Read_Master_Log_Pos: position in the current master bin log file that I/O thread has read to. Relay_Log_File: relay log file from which the SQL thread is currently *reading* and executing. Relay_Log_Pos: position in relay log file up to which the SQL thread has read and executed. Relay_Master_Log_File: name of the master binlog containing the most recent event executed by the SQL thread.
  • #37: Exec_Master_Log_Pos: position in the binlog up to which the SQL thread has read and executed. - The coordinates given by (Relay_Master_Log_File, Exec_Master_Log_Pos) in the master&apos;s binary log correspond to the coordinates given by (Relay_Log_File, Relay_Log_Pos) in the relay log. Relay_Log_Space: total combined size of all existing relay log files. Seconds_Behind_Master: In essence, this field measures the time difference in seconds between the slave SQL thread and the slave I/O thread. This field is an indication of how “late” the slave is: - When the slave SQL thread is actively processing updates, this field is the number of seconds that have elapsed since the timestamp of the most recent event on the master executed by that thread. - When the SQL thread has caught up to the slave I/O thread and is idle waiting for more events from the I/O thread, this field is zero. Gotcha: If the network is slow, this is not a good approximation; the slave SQL thread may quite often be caught up with the slow-reading slave I/O thread, so Seconds_Behind_Master often shows a value of 0, even if the I/O thread is late compared to the master. In other words, this column is useful only for fast networks . Last_IO_Errno/Last_IO_Error: error number and error message of the last error that caused the I/O thread to stop. Last_SQL_Errno/Last_SQL_Error: error number and error message of the last error that caused the SQL thread to stop.