SlideShare ist ein Scribd-Unternehmen logo
1 von 139
Downloaden Sie, um offline zu lesen
Why MySQL Replication Fails,
and How to Get it Back
September, 26, 2017
Sveta Smirnova
∙ MySQL Support engineer
∙ Author of
∙ MySQL Troubleshooting
∙ JSON UDF functions
∙ FILTER clause for MySQL
∙ Speaker
∙ Percona Live, OOW, Fosdem,
DevConf, HighLoad...
Sveta Smirnova
2
Thank You Sponsors!
3
∙ Exists since very first versions
Replication in MySQL
4
∙ Exists since very first versions
∙ Easy to use
Replication in MySQL
4
∙ Exists since very first versions
∙ Easy to use
∙ Minimal setup
Replication in MySQL
4
∙ Master
∙ --log-bin
∙ --server-id
∙ GRANT REPLICATION SLAVE ON *.* ...
Turn Replication On
5
∙ Master
∙ --log-bin
∙ --server-id
∙ GRANT REPLICATION SLAVE ON *.* ...
∙ Slave
∙ --server-id
∙ CHANGE MASTER ...
∙ START SLAVE
Turn Replication On
5
Simple
6
Circle
7
Star
8
Creative
9
Typical Replication Errors
Replication Stopped
11
Slave Lags from the Master
12
Increased Resource Usage on Master
13
Not a Full List!
14
MySQL Replication: Must Know
Master Slave
← Initiates
Asynchronous
16
Master Slave
← Initiates
← Requests a packet
Asynchronous
16
Master
Sends the packet →
Slave
← Initiates
← Requests a packet
Asynchronous
16
Master
Sends the packet →
Slave
← Initiates
← Requests a packet
... ?
Asynchronous
16
∙ Network error
∙ Authorization
Did Slave Recieve Data?
17
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 13000
Connect_Retry: 60
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 63810611
Relay_Log_File: slave-relay-bin-master@002d1.000004
Relay_Log_Pos: 1156
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1032
Last_Error: Could not execute Update_rows event on...
Skip_Counter: 0
Exec_Master_Log_Pos: 989
Relay_Log_Space: 63814652
Until_Condition: None
Until_Log_File:
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: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 1032
Last_SQL_Error: Could not execute Update_rows event on...
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: d08c509e-6857-11e6-8872-30b5c2208a0f
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 10
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp: 160823 15:11:21
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name: master-1 | Master_TLS_Version:
∙ IO thread Configuration
∙ SQL thread Configuration
∙ IO thread State
∙ SQL thread State
∙ Errors
∙ Only last one
∙ All are in the error log
Tool #1: SHOW SLAVE STATUS
18
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
...
Last_IO_Errno: 1045
Last_IO_Error: error connecting to master ’root@127.0.0.1:13000’ -
Last_SQL_Errno: 0
Last_SQL_Error:
...
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp: 160824 03:18:36
Last_SQL_Error_Timestamp:
Network Errors
19
mysql> select * from performance_schema.replication_connection_statusG
*************************** 1. row ***************************
CHANNEL_NAME:
GROUP_NAME:
SOURCE_UUID:
THREAD_ID: NULL
SERVICE_STATE: CONNECTING
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET:
LAST_ERROR_NUMBER: 1045
LAST_ERROR_MESSAGE: error connecting to master ’root@127.0.0.1:13000’ -
retry-time: 60 retries: 4
LAST_ERROR_TIMESTAMP: 2016-08-24 03:21:36
1 row in set (0,01 sec)
#2: connection status in Performance Schema
20
2016-08-24T00:18:36.077384Z 3 [ERROR] Slave I/O for channel ’’: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 1, Error_code: 1045
2016-08-24T00:19:36.299011Z 3 [ERROR] Slave I/O for channel ’’: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 2, Error_code: 1045
2016-08-24T00:20:36.485315Z 3 [ERROR] Slave I/O for channel ’’: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 3, Error_code: 1045
2016-08-24T00:21:36.677915Z 3 [ERROR] Slave I/O for channel ’’: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 4, Error_code: 1045
2016-08-24T00:22:36.872066Z 3 [ERROR] Slave I/O for channel ’’: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 5, Error_code: 1045
#3: Error Log File
21
$ perror 1045
MySQL error code 1045 (ER_ACCESS_DENIED_ERROR): Access denied for user ’%-.48s’@’%-.64s’
(using password: %s)
#4: perror
22
∙ On the slave
$ mysql -h127.0.0.1 -P13000 -uslave_user -pslave_password
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user ’slave_user’@’localhost’ (using password: YES
#5: MySQL Command Line Client
23
∙ On the slave
∙ On the master
mysql> SHOW GRANTS;
+-----------------------------------------+
| Grants for slave_user@% |
+-----------------------------------------+
| GRANT SELECT ON *.* TO ’slave_user’@’%’ |
+-----------------------------------------+
1 row in set (0.00 sec)
#5: MySQL Command Line Client
23
∙ On the slave
∙ On the master
∙ Fix privileges on master
GRANT REPLICATION SLAVE
ON *.* TO ’slave user’@’%’
#5: MySQL Command Line Client
23
∙ On the slave
∙ On the master
∙ Fix privileges on master
∙ Restart replication
#5: MySQL Command Line Client
23
Master Slave
← Initiates
Semisynchrous plugin
24
Master Slave
← Initiates
← Requests a packet
Semisynchrous plugin
24
Master
Sends the packet →
Slave
← Initiates
← Requests a packet
Semisynchrous plugin
24
Master
Sends the packet →
Waits ”Ack”
Slave
← Initiates
← Requests a packet
Semisynchrous plugin
24
Master
Sends the packet →
Waits ”Ack”
Slave
← Initiates
← Requests a packet
← Sends ”Ack”
Semisynchrous plugin
24
∙ Writes on master are slower
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ Before 5.7: from single slave
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ Before 5.7: from single slave
∙ Now in MySQL:
rpl semi sync master wait for slave count
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ Before 5.7: from single slave
∙ Now in MySQL:
rpl semi sync master wait for slave count
∙ Won’t wait others
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ What happens in case of timeout?
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ What happens in case of timeout?
∙ Replication becomes asynchronous
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ What happens in case of timeout?
∙ What does ”Ack” mean?
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ What happens in case of timeout?
∙ What does ”Ack” mean?
∙ Event written into relay log
Semisynchrous: Troubleshooting
25
∙ Writes on master are slower
∙ How many ”Ack”-s master waits?
∙ What happens in case of timeout?
∙ What does ”Ack” mean?
∙ Event written into relay log
∙ It is unknown if event applied
Semisynchrous: Troubleshooting
25
IO thread
Reads from the master
SQL thread
Two Kinds of Slave Threads
26
IO thread
Reads from the master
Stores in the relay log
SQL thread
Two Kinds of Slave Threads
26
IO thread
Reads from the master
Stores in the relay log
SQL thread
← Reads from relay log
Two Kinds of Slave Threads
26
IO thread
Reads from the master
Stores in the relay log
SQL thread
← Reads from relay log
Executes
Two Kinds of Slave Threads
26
∙ Easier for troubleshooting
Single SQL Thread
27
∙ Easier for troubleshooting
∙ Slower than master
∙ High parallel load
Single SQL Thread
27
Writes on the Master
28
Writes on the Slave: Single SQL Thread
29
Multiple SQL Threads: 5.6+
30
∙ MySQL: --slave parallel workers
∙ MySQL: --slave parallel type=DATABASE | LOGICAL CLOCK
∙ MySQL 8.0.1+:
SET @@GLOBAL.binlog transaction dependency tracking =
WRITESET | WRITESET SESSION | COMMIT ORDER;
Performance Tuning
31
∙ MariaDB: --slave parallel threads
∙ MariaDB: --slave parallel max queued
∙ MariaDB: --slave domain parallel threads
∙ MariaDB: --slave parallel mode=optimistic | conservative |
aggressive | minimal | none
Performance Tuning
31
mysql> select WORKER_ID, SERVICE_STATE, LAST_SEEN_TRANSACTION, LAST_ERROR_NUMBER,
-> LAST_ERROR_MESSAGE from performance_schema.replication_applier_status_by_workerG
*************************** 1. row ***************************
WORKER_ID: 1
SERVICE_STATE: OFF
LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4988
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
*************************** 2. row ***************************
WORKER_ID: 3
SERVICE_STATE: OFF
LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4986
LAST_ERROR_NUMBER: 1032
LAST_ERROR_MESSAGE: Worker 2 failed executing transaction...
#6: Error of One Thread Stops All
32
MariaDB [test]> select id, command, time, state from information_schema.processlist
-> where user=’system user’;
+----+---------+------+------------------------------------------------------------------+
| id | command | time | state |
+----+---------+------+------------------------------------------------------------------+
| 25 | Connect | 4738 | Waiting for master to send event |
| 24 | Connect | 5096 | Slave has read all relay log; waiting for the slave I/O thread t |
| 23 | Connect | 0 | Waiting for work from SQL thread |
| 22 | Connect | 0 | Unlocking tables |
| 21 | Connect | 0 | Update_rows_log_event::ha_update_row(-1) |
| 20 | Connect | 0 | Waiting for prior transaction to start commit before starting ne |
| 19 | Connect | 0 | Update_rows_log_event::ha_update_row(-1) |
| 18 | Connect | 0 | Update_rows_log_event::ha_update_row(-1) |
| 17 | Connect | 0 | Update_rows_log_event::find_row(-1)
...
#6: Error of One Thread Stops All
32
∙ Different data
∙ Slave cannot apply event from relay log
Which Kind of Errors?
33
∙ Different data
∙ Slave cannot apply event from relay log
∙ Different errors on master and slave
∙ Triggers
∙ Transactional and non-transactional tables in
the same transaction
Which Kind of Errors?
33
∙ Did table change outside of the replication?
∙ How?
∙ Can it cause conflict with changes on the
master?
Different Data on Master and Slave
34
∙ Did table change outside of the replication?
∙ Are table structures identical?
∙ Percona Toolkit
pt-table-checksum, pt-table-sync
∙ MySQL Utilities
mysqlrplsync, mysqldbcompare, mysqldiff
Different Data on Master and Slave
34
∙ Did table change outside of the replication?
∙ Are table structures identical?
∙ Are changes in the correct order?
∙ mysqlbinlog
∙ Application logic on the master
Different Data on Master and Slave
34
Master
Recieves a change
Storage Engine
Logical
35
Master
Recieves a change
Sends to SE →
Storage Engine
Logical
35
Master
Recieves a change
Sends to SE →
Storage Engine
Writes into table
Logical
35
Master
Recieves a change
Sends to SE →
Storage Engine
Writes into table
← Returns control
Logical
35
Master
Recieves a change
Sends to SE →
Writes into binary log
Storage Engine
Writes into table
← Returns control
Logical
35
Master
Recieves a change
Sends to SE →
Writes into binary log
Synchronizes →
Storage Engine
Writes into table
← Returns control
← Synchronizes
Logical
35
∙ More writes
∙ RBR: --binlog row image
Master Performance
36
∙ More writes
∙ RBR: --binlog row image
∙ --binlog cache size
Watch Binlog cache disk use
Master Performance
36
∙ More writes
∙ RBR: --binlog row image
∙ --binlog cache size
Watch Binlog cache disk use
∙ --binlog stmt cache size
Watch Binlog stmt cache disk use
Master Performance
36
∙ More writes
∙ Synchronization
∙ --binlog sync
∙ Do not disable!
∙ You may set it greater than 1
Master Performance
36
∙ Binary log lifetime
∙ --expire log days
Master Behavior
37
∙ Binary log lifetime
∙ Synchronization
∙ SBR is not safe with READ COMMITTED and READ
UNCOMMITTED
Master Behavior
37
∙ Binary log lifetime
∙ Synchronization
∙ Order of records in the binary log
∙ Non-deterministic events and SBR
Master Behavior
37
Client Binary log
Statement-Based Binary Log Format
38
Client
INSERT INTO ... →
Binary log
Statement-Based Binary Log Format
38
Client
INSERT INTO ... →
Binary log
SET TIMESTAMP...
Statement-Based Binary Log Format
38
Client
INSERT INTO ... →
Binary log
SET TIMESTAMP...
SET sql mode...
Statement-Based Binary Log Format
38
Client
INSERT INTO ... →
Binary log
SET TIMESTAMP...
SET sql mode...
INSERT INTO ...
Statement-Based Binary Log Format
38
∙ Exists since very first versions
SBR: Strong Sides
39
∙ Exists since very first versions
∙ Table definitions on master and slave can
significantly vary
SBR: Strong Sides
39
∙ Exists since very first versions
∙ Table definitions on master and slave can
significantly vary
∙ Usually less writes
∙ There are exceptions!
SBR: Strong Sides
39
∙ Exists since very first versions
∙ Table definitions on master and slave can
significantly vary
∙ Usually less writes
∙ Human readable
SBR: Strong Sides
39
∙ Exists since very first versions
∙ Table definitions on master and slave can
significantly vary
∙ Usually less writes
∙ Human readable
∙ Easy to troubleshoot
SBR: Strong Sides
39
mysql> SHOW BINLOG EVENTS IN ’mysql-bin.000316’ FROM 422;
+------------------+-----+------------+------------+-------------+---------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+------------+------------+-------------+---------------------------------+
| mysql-bin.000316 | 422 | Query | 1456667904 | 509 | BEGIN |
| mysql-bin.000316 | 509 | Query | 1456667904 | 609 | use ‘PgDay‘; update ai set f1=1 |
| mysql-bin.000316 | 609 | Xid | 1456667904 | 640 | COMMIT /* xid=60328 */ |
+------------------+-----+------------+------------+-------------+---------------------------------+
3 rows in set (0,12 sec)
#7: SHOW BINLOG EVENTS
40
∙ Not all queries are safe
∙ Non-deterministic functions
∙ MySQL extentions
∙ Triggers
∙ Mix with non-transactional tables
∙ Temporary tables
SBR: Weak Sides
41
∙ Not all queries are safe
∙ Order of events matter!
∙ Row-based locks
SBR: Weak Sides
41
∙ Not all queries are safe
∙ Order of events matter!
∙ Row-based locks
∙ Triggers
SET GLOBAL slave skip counter – No GTIDs!
Skip transaction – GTIDs
Synchronize tables!
SBR: Weak Sides
41
Client Binary log
Row-Based Binary Log Format
42
Client
UPDATE ... →
Binary log
Row-Based Binary Log Format
42
Client
UPDATE ... →
Binary log
SET TIMESTAMP...
Row-Based Binary Log Format
42
Client
UPDATE ... →
Binary log
SET TIMESTAMP...
SET sql mode...
Row-Based Binary Log Format
42
Client
UPDATE ... →
Binary log
SET TIMESTAMP...
SET sql mode...
Row before changes
Row-Based Binary Log Format
42
Client
UPDATE ... →
Binary log
SET TIMESTAMP...
SET sql mode...
Row before changes
Row with changes
Row-Based Binary Log Format
42
∙ Safe
∙ You do not need to care about
Order of events
Triggers
Functions
Which queries you send to master
RBR: Strong Sides
43
∙ Sensitive for table structures
∙ More writes
∙ --binlog row image=FULL | MINIMAL | NOBLOB
∙ Harder to read
RBR: Weak Sidex
44
$ mysqlbinlog ./mysqld.1/data/master-bin.000001 --start-position=989 --stop-position=1213
...
# at 1167
#160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b
Update_rows: table id 109 flags: STMT_END_F
BINLOG ’
v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ==
v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw==
’/*!*/;
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/;
...
#8: mysqlbinlog
45
$ mysqlbinlog -v ./mysqld.1/data/master-bin.000001 --start-position=989 --stop-position=1213
...
# at 1167
#160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b
Update_rows: table id 109 flags: STMT_END_F
BINLOG ’
v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ==
v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw==
’/*!*/;
### UPDATE ‘m2‘.‘t1‘
### WHERE
### @1=5
### SET
### @1=6
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/;
#8: mysqlbinlog
46
∙ You must specify
∙ Name of the master’s binary log file
∙ Position
Position-Based
47
∙ You must specify
∙ Name of the master’s binary log file
∙ Position
∙ From the troubleshooting point of view
∙ Event executes if on the current position
Position-Based
47
∙ You must specify
∙ Name of the master’s binary log file
∙ Position
∙ From the troubleshooting point of view
∙ Event executes if on the current position
∙ Easy to skip
Position-Based
47
∙ You must specify
∙ Name of the master’s binary log file
∙ Position
∙ From the troubleshooting point of view
∙ Event executes if on the current position
∙ Easy to skip
∙ Easy to move position backward
Position-Based
47
∙ You must specify
∙ Name of the master’s binary log file
∙ Position
∙ From the troubleshooting point of view
∙ Event executes if on the current position
∙ Easy to skip
∙ Easy to move position backward
∙ No conflict resolution
Position-Based
47
∙ Each transaction has unique number: GTID
Global Transaction Identifiers (GTID)
48
∙ Each transaction has unique number: GTID
∙ MySQL: AUTO POSITION=1
Global Transaction Identifiers (GTID)
48
∙ Each transaction has unique number: GTID
∙ MySQL: AUTO POSITION=1
∙ MariaDB: master use gtid = { slave pos | current pos }
Global Transaction Identifiers (GTID)
48
∙ Each transaction has unique number: GTID
∙ MySQL: AUTO POSITION=1
∙ MariaDB: master use gtid = { slave pos | current pos }
∙ No need to specify binary log and position
Global Transaction Identifiers (GTID)
48
∙ Each transaction has unique number: GTID
∙ MySQL: AUTO POSITION=1
∙ MariaDB: master use gtid = { slave pos | current pos }
∙ No need to specify binary log and position
∙ Hard to skip erroneous event
Global Transaction Identifiers (GTID)
48
sveta@thinkie> mysqlslavetrx --gtid-set=fb776095-8474-11e5-ad41-30b5c2208a0f:3 
--slaves=root:@127.0.0.1:13001
WARNING: Using a password on the command line interface can be insecure.
#
# GTID set to be skipped for each server:
# - 127.0.0.1@13001: fb776095-8474-11e5-ad41-30b5c2208a0f:3
#
# Injecting empty transactions for ’127.0.0.1:13001’...
#
#...done.
#
#9: mysqlslavetrx
49
Complicated Setups
∙ Same specifics and methods
Complicated Setups
51
∙ Same specifics and methods
∙ Multiply complexity on number of channels
Complicated Setups
51
∙ Same specifics and methods
∙ Multiply complexity on number of channels
∙ Control writes
∙ What
∙ On which server
Complicated Setups
51
Master
∙ Binary log
∙ Binlog Dump
Slave
∙ Relay log
∙ IO thread
∙ SQL thread
Master and Slave
52
Slave 1
∙ Relay log
∙ IO thread
∙ SQL thread
Master
∙ Binary log
∙ Binlog Dump
∙ Binlog Dump
Slave 2
∙ Relay log
∙ IO thread
∙ SQL thread
Master and Two Slaves
53
Master 1
∙ Binary log
∙ Binlog Dump
∙ Relay log
∙ IO thread
∙ SQL thread
Master 2
∙ Relay log
∙ IO thread
∙ SQL thread
∙ Binary log
∙ Binlog Dump
Circular
54
Master 1
∙ Binary log
∙ Binlog Dump
Slave
∙ Relay log
∙ IO thread
∙ SQL thread
∙ Relay log
∙ IO thread
∙ SQL thread
Master 2
∙ Binary log
∙ Binlog Dump
Multiple Masters (Multi-channel): 5.7+
55
∙ Multiple sets of relay logs
∙ Multiple IO threads
∙ Multiple SQL threads
∙ MySQL: --slave parallel workers for each
Multi-Master: Troubleshooting
56
∙ Multiple sets of relay logs
∙ Multiple IO threads
∙ Multiple SQL threads
∙ MySQL: --slave parallel workers for each
∙ Independent channels
Multi-Master: Troubleshooting
56
∙ Multiple sets of relay logs
∙ Multiple IO threads
∙ Multiple SQL threads
∙ MySQL: --slave parallel workers for each
∙ Independent channels
∙ Error in one stops only one
Multi-Master: Troubleshooting
56
∙ Multiple sets of relay logs
∙ Multiple IO threads
∙ Multiple SQL threads
∙ MySQL: --slave parallel workers for each
∙ Independent channels
∙ Error in one stops only one
∙ No automatic conflict resolution
Multi-Master: Troubleshooting
56
Summary
∙ Error log file
Basic Tools
58
∙ Error log file
∙ On the slave
∙ SHOW SLAVE STATUS
∙ MySQL: Tables in Performance Schema
∙ System database mysql
Basic Tools
58
∙ Error log file
∙ On the slave
∙ On the master
∙ SHOW MASTER STATUS
∙ SHOW BINLOG EVENTS
∙ mysqlbinlog
Basic Tools
58
∙ Error log file
∙ On the slave
∙ On the master
∙ Percona Toolkit
Basic Tools
58
∙ Error log file
∙ On the slave
∙ On the master
∙ Percona Toolkit
∙ MySQL Utilities
Basic Tools
58
∙ Always available, requires setup
∙ Asynchronous
∙ Master
∙ Keeps all changes in the binary log
Two formats: ROW and STATEMENT
∙ Slave
∙ IO thread reads from the master into relay log
∙ SQL thread executes updates
Multiple SQL threads in 5.6+
Multiple channels/sources (masters) in 5.7+
∙ GTID in 5.6+
Replication Must Know
59
∙ Master
∙ Same as for standalone server
∙ More writes and consistency checks
Typical Issues
60
∙ Master
∙ Slave IO thread
∙ Common network issues
∙ mysql command line client for tests
Typical Issues
60
∙ Master
∙ Slave IO thread
∙ Slave SQL thread
∙ Regular query-related issues
∙ Regular storage engine issues
∙ Less execution threads than on master
Typical Issues
60
∙ Basic Techniques – troubleshooting
webinar
∙ Troubleshooting hardware resource usage
∙ Introduction into storage engine
troubleshoot...
∙ Percona Toolkit
∙ MySQL Utilities
∙ Book MySQL High Availability
∙ MySQL Replication Team blog
More Information
61
http://www.slideshare.net/SvetaSmirnova
https://twitter.com/svetsmirnova
https://github.com/svetasmirnova
Contact Information
62
∙ ... Case Study: .IE Continuous Restore ...
Marcelo Altmann - Percona, Mick Begley - IE Domain Registry
Tuesday 2:20PM-3:10PM @ Goldsmith 3
∙ A ... Walkthrough on pt-stalk
Marcelo Altmann - Percona, Marcos Albe - Percona
Wednesday 3:20PM-4:10PM @ Field Suite 2
∙ Percona XtraBackup Best Practices
Marcelo Altmann - Percona
Wednesday 4:30PM-4:55PM @ Sky Suite 2
∙ MySQL-MongoDB-Redis-Cassandra-HBase
Marcos Albe - Percona
Wednesday 4.55PM-5.20PM @ Sky Suite 2
Support Team at Percona Live
63
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

MySQL Server Settings Tuning
MySQL Server Settings TuningMySQL Server Settings Tuning
MySQL Server Settings Tuning
guest5ca94b
 

Was ist angesagt? (20)

MariaDB Performance Tuning and Optimization
MariaDB Performance Tuning and OptimizationMariaDB Performance Tuning and Optimization
MariaDB Performance Tuning and Optimization
 
New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12
 
MySQL Server Settings Tuning
MySQL Server Settings TuningMySQL Server Settings Tuning
MySQL Server Settings Tuning
 
Histogram-in-Parallel-universe-of-MySQL-and-MariaDB
Histogram-in-Parallel-universe-of-MySQL-and-MariaDBHistogram-in-Parallel-universe-of-MySQL-and-MariaDB
Histogram-in-Parallel-universe-of-MySQL-and-MariaDB
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication Tutorial
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
MariaDB Galera Cluster presentation
MariaDB Galera Cluster presentationMariaDB Galera Cluster presentation
MariaDB Galera Cluster presentation
 
Transparent sharding with Spider: what's new and getting started
Transparent sharding with Spider: what's new and getting startedTransparent sharding with Spider: what's new and getting started
Transparent sharding with Spider: what's new and getting started
 
M|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsM|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write Paths
 
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0
 
InnoDB Locking Explained with Stick Figures
InnoDB Locking Explained with Stick FiguresInnoDB Locking Explained with Stick Figures
InnoDB Locking Explained with Stick Figures
 
Galera cluster for high availability
Galera cluster for high availability Galera cluster for high availability
Galera cluster for high availability
 
MariaDB Server Performance Tuning & Optimization
MariaDB Server Performance Tuning & OptimizationMariaDB Server Performance Tuning & Optimization
MariaDB Server Performance Tuning & Optimization
 
The Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialThe Complete MariaDB Server tutorial
The Complete MariaDB Server tutorial
 
mysql 8.0 architecture and enhancement
mysql 8.0 architecture and enhancementmysql 8.0 architecture and enhancement
mysql 8.0 architecture and enhancement
 
Handling Schema Changes Using pt-online-schema change.
Handling Schema Changes Using pt-online-schema change.Handling Schema Changes Using pt-online-schema change.
Handling Schema Changes Using pt-online-schema change.
 
How to upgrade like a boss to my sql 8.0?
How to upgrade like a boss to my sql 8.0?How to upgrade like a boss to my sql 8.0?
How to upgrade like a boss to my sql 8.0?
 
B+Tree Indexes and InnoDB
B+Tree Indexes and InnoDBB+Tree Indexes and InnoDB
B+Tree Indexes and InnoDB
 
Optimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performanceOptimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performance
 
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Almost Perfect Service Discovery and Failover with ProxySQL and OrchestratorAlmost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
Almost Perfect Service Discovery and Failover with ProxySQL and Orchestrator
 

Andere mochten auch

MySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourMySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD Tour
Ronald Bradford
 
Capturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLCapturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQL
Ronald Bradford
 

Andere mochten auch (20)

MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn Tutorial
 
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
MySQL InnoDB Cluster and Group Replication - OSI 2017 BangaloreMySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...
 
SQL Outer Joins for Fun and Profit
SQL Outer Joins for Fun and ProfitSQL Outer Joins for Fun and Profit
SQL Outer Joins for Fun and Profit
 
Hbase源码初探
Hbase源码初探Hbase源码初探
Hbase源码初探
 
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group ReplicationPercona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
 
MySQL aio
MySQL aioMySQL aio
MySQL aio
 
Load Data Fast!
Load Data Fast!Load Data Fast!
Load Data Fast!
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group Replication
 
Mysql high availability and scalability
Mysql high availability and scalabilityMysql high availability and scalability
Mysql high availability and scalability
 
Extensible Data Modeling
Extensible Data ModelingExtensible Data Modeling
Extensible Data Modeling
 
MySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourMySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD Tour
 
Capturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLCapturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQL
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ Verisure
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
 

Ähnlich wie Why MySQL Replication Fails, and How to Get it Back

Mater,slave on mysql
Mater,slave on mysqlMater,slave on mysql
Mater,slave on mysql
Vasudeva Rao
 
High Availability with MySQL
High Availability with MySQLHigh Availability with MySQL
High Availability with MySQL
Thava Alagu
 

Ähnlich wie Why MySQL Replication Fails, and How to Get it Back (20)

ConFoo MySQL Replication Evolution : From Simple to Group Replication
ConFoo  MySQL Replication Evolution : From Simple to Group ReplicationConFoo  MySQL Replication Evolution : From Simple to Group Replication
ConFoo MySQL Replication Evolution : From Simple to Group Replication
 
Mysql replication @ gnugroup
Mysql replication @ gnugroupMysql replication @ gnugroup
Mysql replication @ gnugroup
 
MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017
 
Java MySQL Connector & Connection Pool Features & Optimization
Java MySQL Connector & Connection Pool Features & OptimizationJava MySQL Connector & Connection Pool Features & Optimization
Java MySQL Connector & Connection Pool Features & Optimization
 
Download presentation
Download presentationDownload presentation
Download presentation
 
Download presentation531
Download presentation531Download presentation531
Download presentation531
 
MySQL Replication Basics -Ohio Linux Fest 2016
MySQL Replication Basics -Ohio Linux Fest 2016MySQL Replication Basics -Ohio Linux Fest 2016
MySQL Replication Basics -Ohio Linux Fest 2016
 
MariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly AvailableMariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly Available
 
Training Slides: Intermediate 202: Performing Cluster Maintenance with Zero-D...
Training Slides: Intermediate 202: Performing Cluster Maintenance with Zero-D...Training Slides: Intermediate 202: Performing Cluster Maintenance with Zero-D...
Training Slides: Intermediate 202: Performing Cluster Maintenance with Zero-D...
 
MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016
 
Mater,slave on mysql
Mater,slave on mysqlMater,slave on mysql
Mater,slave on mysql
 
Webinar slides: Introducing Galera 3.0 - Now supporting MySQL 5.6
Webinar slides: Introducing Galera 3.0 - Now supporting MySQL 5.6Webinar slides: Introducing Galera 3.0 - Now supporting MySQL 5.6
Webinar slides: Introducing Galera 3.0 - Now supporting MySQL 5.6
 
High Availability with MySQL
High Availability with MySQLHigh Availability with MySQL
High Availability with MySQL
 
Introducing Galera 3.0
Introducing Galera 3.0Introducing Galera 3.0
Introducing Galera 3.0
 
Oss4b - pxc introduction
Oss4b   - pxc introductionOss4b   - pxc introduction
Oss4b - pxc introduction
 
Easy MySQL Replication Setup and Troubleshooting
Easy MySQL Replication Setup and TroubleshootingEasy MySQL Replication Setup and Troubleshooting
Easy MySQL Replication Setup and Troubleshooting
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
How to understand Galera Cluster - 2013
How to understand Galera Cluster - 2013How to understand Galera Cluster - 2013
How to understand Galera Cluster - 2013
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
 

Mehr von Sveta Smirnova

MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации багов
Sveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
Sveta Smirnova
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Sveta Smirnova
 

Mehr von Sveta Smirnova (20)

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
 
Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and Monitoring
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to Have
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for Developers
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации багов
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your Business
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]s
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOps
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tears
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with Galera
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]s
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
 

Kürzlich hochgeladen

CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 

Kürzlich hochgeladen (20)

CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 

Why MySQL Replication Fails, and How to Get it Back

  • 1. Why MySQL Replication Fails, and How to Get it Back September, 26, 2017 Sveta Smirnova
  • 2. ∙ MySQL Support engineer ∙ Author of ∙ MySQL Troubleshooting ∙ JSON UDF functions ∙ FILTER clause for MySQL ∙ Speaker ∙ Percona Live, OOW, Fosdem, DevConf, HighLoad... Sveta Smirnova 2
  • 4. ∙ Exists since very first versions Replication in MySQL 4
  • 5. ∙ Exists since very first versions ∙ Easy to use Replication in MySQL 4
  • 6. ∙ Exists since very first versions ∙ Easy to use ∙ Minimal setup Replication in MySQL 4
  • 7. ∙ Master ∙ --log-bin ∙ --server-id ∙ GRANT REPLICATION SLAVE ON *.* ... Turn Replication On 5
  • 8. ∙ Master ∙ --log-bin ∙ --server-id ∙ GRANT REPLICATION SLAVE ON *.* ... ∙ Slave ∙ --server-id ∙ CHANGE MASTER ... ∙ START SLAVE Turn Replication On 5
  • 15. Slave Lags from the Master 12
  • 16. Increased Resource Usage on Master 13
  • 17. Not a Full List! 14
  • 20. Master Slave ← Initiates ← Requests a packet Asynchronous 16
  • 21. Master Sends the packet → Slave ← Initiates ← Requests a packet Asynchronous 16
  • 22. Master Sends the packet → Slave ← Initiates ← Requests a packet ... ? Asynchronous 16
  • 23. ∙ Network error ∙ Authorization Did Slave Recieve Data? 17
  • 24. Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: root Master_Port: 13000 Connect_Retry: 60 Master_Log_File: master-bin.000002 Read_Master_Log_Pos: 63810611 Relay_Log_File: slave-relay-bin-master@002d1.000004 Relay_Log_Pos: 1156 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1032 Last_Error: Could not execute Update_rows event on... Skip_Counter: 0 Exec_Master_Log_Pos: 989 Relay_Log_Space: 63814652 Until_Condition: None Until_Log_File: 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: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 1032 Last_SQL_Error: Could not execute Update_rows event on... Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: d08c509e-6857-11e6-8872-30b5c2208a0f Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Master_Retry_Count: 10 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: 160823 15:11:21 Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: master-1 | Master_TLS_Version: ∙ IO thread Configuration ∙ SQL thread Configuration ∙ IO thread State ∙ SQL thread State ∙ Errors ∙ Only last one ∙ All are in the error log Tool #1: SHOW SLAVE STATUS 18
  • 25. Slave_IO_Running: Connecting Slave_SQL_Running: Yes ... Last_IO_Errno: 1045 Last_IO_Error: error connecting to master ’root@127.0.0.1:13000’ - Last_SQL_Errno: 0 Last_SQL_Error: ... Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: 160824 03:18:36 Last_SQL_Error_Timestamp: Network Errors 19
  • 26. mysql> select * from performance_schema.replication_connection_statusG *************************** 1. row *************************** CHANNEL_NAME: GROUP_NAME: SOURCE_UUID: THREAD_ID: NULL SERVICE_STATE: CONNECTING COUNT_RECEIVED_HEARTBEATS: 0 LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00 RECEIVED_TRANSACTION_SET: LAST_ERROR_NUMBER: 1045 LAST_ERROR_MESSAGE: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 4 LAST_ERROR_TIMESTAMP: 2016-08-24 03:21:36 1 row in set (0,01 sec) #2: connection status in Performance Schema 20
  • 27. 2016-08-24T00:18:36.077384Z 3 [ERROR] Slave I/O for channel ’’: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 1, Error_code: 1045 2016-08-24T00:19:36.299011Z 3 [ERROR] Slave I/O for channel ’’: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 2, Error_code: 1045 2016-08-24T00:20:36.485315Z 3 [ERROR] Slave I/O for channel ’’: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 3, Error_code: 1045 2016-08-24T00:21:36.677915Z 3 [ERROR] Slave I/O for channel ’’: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 4, Error_code: 1045 2016-08-24T00:22:36.872066Z 3 [ERROR] Slave I/O for channel ’’: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 5, Error_code: 1045 #3: Error Log File 21
  • 28. $ perror 1045 MySQL error code 1045 (ER_ACCESS_DENIED_ERROR): Access denied for user ’%-.48s’@’%-.64s’ (using password: %s) #4: perror 22
  • 29. ∙ On the slave $ mysql -h127.0.0.1 -P13000 -uslave_user -pslave_password Warning: Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ’slave_user’@’localhost’ (using password: YES #5: MySQL Command Line Client 23
  • 30. ∙ On the slave ∙ On the master mysql> SHOW GRANTS; +-----------------------------------------+ | Grants for slave_user@% | +-----------------------------------------+ | GRANT SELECT ON *.* TO ’slave_user’@’%’ | +-----------------------------------------+ 1 row in set (0.00 sec) #5: MySQL Command Line Client 23
  • 31. ∙ On the slave ∙ On the master ∙ Fix privileges on master GRANT REPLICATION SLAVE ON *.* TO ’slave user’@’%’ #5: MySQL Command Line Client 23
  • 32. ∙ On the slave ∙ On the master ∙ Fix privileges on master ∙ Restart replication #5: MySQL Command Line Client 23
  • 34. Master Slave ← Initiates ← Requests a packet Semisynchrous plugin 24
  • 35. Master Sends the packet → Slave ← Initiates ← Requests a packet Semisynchrous plugin 24
  • 36. Master Sends the packet → Waits ”Ack” Slave ← Initiates ← Requests a packet Semisynchrous plugin 24
  • 37. Master Sends the packet → Waits ”Ack” Slave ← Initiates ← Requests a packet ← Sends ”Ack” Semisynchrous plugin 24
  • 38. ∙ Writes on master are slower Semisynchrous: Troubleshooting 25
  • 39. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? Semisynchrous: Troubleshooting 25
  • 40. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ Before 5.7: from single slave Semisynchrous: Troubleshooting 25
  • 41. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ Before 5.7: from single slave ∙ Now in MySQL: rpl semi sync master wait for slave count Semisynchrous: Troubleshooting 25
  • 42. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ Before 5.7: from single slave ∙ Now in MySQL: rpl semi sync master wait for slave count ∙ Won’t wait others Semisynchrous: Troubleshooting 25
  • 43. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ What happens in case of timeout? Semisynchrous: Troubleshooting 25
  • 44. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ What happens in case of timeout? ∙ Replication becomes asynchronous Semisynchrous: Troubleshooting 25
  • 45. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ What happens in case of timeout? ∙ What does ”Ack” mean? Semisynchrous: Troubleshooting 25
  • 46. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ What happens in case of timeout? ∙ What does ”Ack” mean? ∙ Event written into relay log Semisynchrous: Troubleshooting 25
  • 47. ∙ Writes on master are slower ∙ How many ”Ack”-s master waits? ∙ What happens in case of timeout? ∙ What does ”Ack” mean? ∙ Event written into relay log ∙ It is unknown if event applied Semisynchrous: Troubleshooting 25
  • 48. IO thread Reads from the master SQL thread Two Kinds of Slave Threads 26
  • 49. IO thread Reads from the master Stores in the relay log SQL thread Two Kinds of Slave Threads 26
  • 50. IO thread Reads from the master Stores in the relay log SQL thread ← Reads from relay log Two Kinds of Slave Threads 26
  • 51. IO thread Reads from the master Stores in the relay log SQL thread ← Reads from relay log Executes Two Kinds of Slave Threads 26
  • 52. ∙ Easier for troubleshooting Single SQL Thread 27
  • 53. ∙ Easier for troubleshooting ∙ Slower than master ∙ High parallel load Single SQL Thread 27
  • 54. Writes on the Master 28
  • 55. Writes on the Slave: Single SQL Thread 29
  • 57. ∙ MySQL: --slave parallel workers ∙ MySQL: --slave parallel type=DATABASE | LOGICAL CLOCK ∙ MySQL 8.0.1+: SET @@GLOBAL.binlog transaction dependency tracking = WRITESET | WRITESET SESSION | COMMIT ORDER; Performance Tuning 31
  • 58. ∙ MariaDB: --slave parallel threads ∙ MariaDB: --slave parallel max queued ∙ MariaDB: --slave domain parallel threads ∙ MariaDB: --slave parallel mode=optimistic | conservative | aggressive | minimal | none Performance Tuning 31
  • 59. mysql> select WORKER_ID, SERVICE_STATE, LAST_SEEN_TRANSACTION, LAST_ERROR_NUMBER, -> LAST_ERROR_MESSAGE from performance_schema.replication_applier_status_by_workerG *************************** 1. row *************************** WORKER_ID: 1 SERVICE_STATE: OFF LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4988 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: *************************** 2. row *************************** WORKER_ID: 3 SERVICE_STATE: OFF LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4986 LAST_ERROR_NUMBER: 1032 LAST_ERROR_MESSAGE: Worker 2 failed executing transaction... #6: Error of One Thread Stops All 32
  • 60. MariaDB [test]> select id, command, time, state from information_schema.processlist -> where user=’system user’; +----+---------+------+------------------------------------------------------------------+ | id | command | time | state | +----+---------+------+------------------------------------------------------------------+ | 25 | Connect | 4738 | Waiting for master to send event | | 24 | Connect | 5096 | Slave has read all relay log; waiting for the slave I/O thread t | | 23 | Connect | 0 | Waiting for work from SQL thread | | 22 | Connect | 0 | Unlocking tables | | 21 | Connect | 0 | Update_rows_log_event::ha_update_row(-1) | | 20 | Connect | 0 | Waiting for prior transaction to start commit before starting ne | | 19 | Connect | 0 | Update_rows_log_event::ha_update_row(-1) | | 18 | Connect | 0 | Update_rows_log_event::ha_update_row(-1) | | 17 | Connect | 0 | Update_rows_log_event::find_row(-1) ... #6: Error of One Thread Stops All 32
  • 61. ∙ Different data ∙ Slave cannot apply event from relay log Which Kind of Errors? 33
  • 62. ∙ Different data ∙ Slave cannot apply event from relay log ∙ Different errors on master and slave ∙ Triggers ∙ Transactional and non-transactional tables in the same transaction Which Kind of Errors? 33
  • 63. ∙ Did table change outside of the replication? ∙ How? ∙ Can it cause conflict with changes on the master? Different Data on Master and Slave 34
  • 64. ∙ Did table change outside of the replication? ∙ Are table structures identical? ∙ Percona Toolkit pt-table-checksum, pt-table-sync ∙ MySQL Utilities mysqlrplsync, mysqldbcompare, mysqldiff Different Data on Master and Slave 34
  • 65. ∙ Did table change outside of the replication? ∙ Are table structures identical? ∙ Are changes in the correct order? ∙ mysqlbinlog ∙ Application logic on the master Different Data on Master and Slave 34
  • 66. Master Recieves a change Storage Engine Logical 35
  • 67. Master Recieves a change Sends to SE → Storage Engine Logical 35
  • 68. Master Recieves a change Sends to SE → Storage Engine Writes into table Logical 35
  • 69. Master Recieves a change Sends to SE → Storage Engine Writes into table ← Returns control Logical 35
  • 70. Master Recieves a change Sends to SE → Writes into binary log Storage Engine Writes into table ← Returns control Logical 35
  • 71. Master Recieves a change Sends to SE → Writes into binary log Synchronizes → Storage Engine Writes into table ← Returns control ← Synchronizes Logical 35
  • 72. ∙ More writes ∙ RBR: --binlog row image Master Performance 36
  • 73. ∙ More writes ∙ RBR: --binlog row image ∙ --binlog cache size Watch Binlog cache disk use Master Performance 36
  • 74. ∙ More writes ∙ RBR: --binlog row image ∙ --binlog cache size Watch Binlog cache disk use ∙ --binlog stmt cache size Watch Binlog stmt cache disk use Master Performance 36
  • 75. ∙ More writes ∙ Synchronization ∙ --binlog sync ∙ Do not disable! ∙ You may set it greater than 1 Master Performance 36
  • 76. ∙ Binary log lifetime ∙ --expire log days Master Behavior 37
  • 77. ∙ Binary log lifetime ∙ Synchronization ∙ SBR is not safe with READ COMMITTED and READ UNCOMMITTED Master Behavior 37
  • 78. ∙ Binary log lifetime ∙ Synchronization ∙ Order of records in the binary log ∙ Non-deterministic events and SBR Master Behavior 37
  • 79. Client Binary log Statement-Based Binary Log Format 38
  • 80. Client INSERT INTO ... → Binary log Statement-Based Binary Log Format 38
  • 81. Client INSERT INTO ... → Binary log SET TIMESTAMP... Statement-Based Binary Log Format 38
  • 82. Client INSERT INTO ... → Binary log SET TIMESTAMP... SET sql mode... Statement-Based Binary Log Format 38
  • 83. Client INSERT INTO ... → Binary log SET TIMESTAMP... SET sql mode... INSERT INTO ... Statement-Based Binary Log Format 38
  • 84. ∙ Exists since very first versions SBR: Strong Sides 39
  • 85. ∙ Exists since very first versions ∙ Table definitions on master and slave can significantly vary SBR: Strong Sides 39
  • 86. ∙ Exists since very first versions ∙ Table definitions on master and slave can significantly vary ∙ Usually less writes ∙ There are exceptions! SBR: Strong Sides 39
  • 87. ∙ Exists since very first versions ∙ Table definitions on master and slave can significantly vary ∙ Usually less writes ∙ Human readable SBR: Strong Sides 39
  • 88. ∙ Exists since very first versions ∙ Table definitions on master and slave can significantly vary ∙ Usually less writes ∙ Human readable ∙ Easy to troubleshoot SBR: Strong Sides 39
  • 89. mysql> SHOW BINLOG EVENTS IN ’mysql-bin.000316’ FROM 422; +------------------+-----+------------+------------+-------------+---------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+-----+------------+------------+-------------+---------------------------------+ | mysql-bin.000316 | 422 | Query | 1456667904 | 509 | BEGIN | | mysql-bin.000316 | 509 | Query | 1456667904 | 609 | use ‘PgDay‘; update ai set f1=1 | | mysql-bin.000316 | 609 | Xid | 1456667904 | 640 | COMMIT /* xid=60328 */ | +------------------+-----+------------+------------+-------------+---------------------------------+ 3 rows in set (0,12 sec) #7: SHOW BINLOG EVENTS 40
  • 90. ∙ Not all queries are safe ∙ Non-deterministic functions ∙ MySQL extentions ∙ Triggers ∙ Mix with non-transactional tables ∙ Temporary tables SBR: Weak Sides 41
  • 91. ∙ Not all queries are safe ∙ Order of events matter! ∙ Row-based locks SBR: Weak Sides 41
  • 92. ∙ Not all queries are safe ∙ Order of events matter! ∙ Row-based locks ∙ Triggers SET GLOBAL slave skip counter – No GTIDs! Skip transaction – GTIDs Synchronize tables! SBR: Weak Sides 41
  • 93. Client Binary log Row-Based Binary Log Format 42
  • 94. Client UPDATE ... → Binary log Row-Based Binary Log Format 42
  • 95. Client UPDATE ... → Binary log SET TIMESTAMP... Row-Based Binary Log Format 42
  • 96. Client UPDATE ... → Binary log SET TIMESTAMP... SET sql mode... Row-Based Binary Log Format 42
  • 97. Client UPDATE ... → Binary log SET TIMESTAMP... SET sql mode... Row before changes Row-Based Binary Log Format 42
  • 98. Client UPDATE ... → Binary log SET TIMESTAMP... SET sql mode... Row before changes Row with changes Row-Based Binary Log Format 42
  • 99. ∙ Safe ∙ You do not need to care about Order of events Triggers Functions Which queries you send to master RBR: Strong Sides 43
  • 100. ∙ Sensitive for table structures ∙ More writes ∙ --binlog row image=FULL | MINIMAL | NOBLOB ∙ Harder to read RBR: Weak Sidex 44
  • 101. $ mysqlbinlog ./mysqld.1/data/master-bin.000001 --start-position=989 --stop-position=1213 ... # at 1167 #160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b Update_rows: table id 109 flags: STMT_END_F BINLOG ’ v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ== v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw== ’/*!*/; ROLLBACK /* added by mysqlbinlog */ /*!*/; SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/; ... #8: mysqlbinlog 45
  • 102. $ mysqlbinlog -v ./mysqld.1/data/master-bin.000001 --start-position=989 --stop-position=1213 ... # at 1167 #160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b Update_rows: table id 109 flags: STMT_END_F BINLOG ’ v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ== v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw== ’/*!*/; ### UPDATE ‘m2‘.‘t1‘ ### WHERE ### @1=5 ### SET ### @1=6 ROLLBACK /* added by mysqlbinlog */ /*!*/; SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/; #8: mysqlbinlog 46
  • 103. ∙ You must specify ∙ Name of the master’s binary log file ∙ Position Position-Based 47
  • 104. ∙ You must specify ∙ Name of the master’s binary log file ∙ Position ∙ From the troubleshooting point of view ∙ Event executes if on the current position Position-Based 47
  • 105. ∙ You must specify ∙ Name of the master’s binary log file ∙ Position ∙ From the troubleshooting point of view ∙ Event executes if on the current position ∙ Easy to skip Position-Based 47
  • 106. ∙ You must specify ∙ Name of the master’s binary log file ∙ Position ∙ From the troubleshooting point of view ∙ Event executes if on the current position ∙ Easy to skip ∙ Easy to move position backward Position-Based 47
  • 107. ∙ You must specify ∙ Name of the master’s binary log file ∙ Position ∙ From the troubleshooting point of view ∙ Event executes if on the current position ∙ Easy to skip ∙ Easy to move position backward ∙ No conflict resolution Position-Based 47
  • 108. ∙ Each transaction has unique number: GTID Global Transaction Identifiers (GTID) 48
  • 109. ∙ Each transaction has unique number: GTID ∙ MySQL: AUTO POSITION=1 Global Transaction Identifiers (GTID) 48
  • 110. ∙ Each transaction has unique number: GTID ∙ MySQL: AUTO POSITION=1 ∙ MariaDB: master use gtid = { slave pos | current pos } Global Transaction Identifiers (GTID) 48
  • 111. ∙ Each transaction has unique number: GTID ∙ MySQL: AUTO POSITION=1 ∙ MariaDB: master use gtid = { slave pos | current pos } ∙ No need to specify binary log and position Global Transaction Identifiers (GTID) 48
  • 112. ∙ Each transaction has unique number: GTID ∙ MySQL: AUTO POSITION=1 ∙ MariaDB: master use gtid = { slave pos | current pos } ∙ No need to specify binary log and position ∙ Hard to skip erroneous event Global Transaction Identifiers (GTID) 48
  • 113. sveta@thinkie> mysqlslavetrx --gtid-set=fb776095-8474-11e5-ad41-30b5c2208a0f:3 --slaves=root:@127.0.0.1:13001 WARNING: Using a password on the command line interface can be insecure. # # GTID set to be skipped for each server: # - 127.0.0.1@13001: fb776095-8474-11e5-ad41-30b5c2208a0f:3 # # Injecting empty transactions for ’127.0.0.1:13001’... # #...done. # #9: mysqlslavetrx 49
  • 115. ∙ Same specifics and methods Complicated Setups 51
  • 116. ∙ Same specifics and methods ∙ Multiply complexity on number of channels Complicated Setups 51
  • 117. ∙ Same specifics and methods ∙ Multiply complexity on number of channels ∙ Control writes ∙ What ∙ On which server Complicated Setups 51
  • 118. Master ∙ Binary log ∙ Binlog Dump Slave ∙ Relay log ∙ IO thread ∙ SQL thread Master and Slave 52
  • 119. Slave 1 ∙ Relay log ∙ IO thread ∙ SQL thread Master ∙ Binary log ∙ Binlog Dump ∙ Binlog Dump Slave 2 ∙ Relay log ∙ IO thread ∙ SQL thread Master and Two Slaves 53
  • 120. Master 1 ∙ Binary log ∙ Binlog Dump ∙ Relay log ∙ IO thread ∙ SQL thread Master 2 ∙ Relay log ∙ IO thread ∙ SQL thread ∙ Binary log ∙ Binlog Dump Circular 54
  • 121. Master 1 ∙ Binary log ∙ Binlog Dump Slave ∙ Relay log ∙ IO thread ∙ SQL thread ∙ Relay log ∙ IO thread ∙ SQL thread Master 2 ∙ Binary log ∙ Binlog Dump Multiple Masters (Multi-channel): 5.7+ 55
  • 122. ∙ Multiple sets of relay logs ∙ Multiple IO threads ∙ Multiple SQL threads ∙ MySQL: --slave parallel workers for each Multi-Master: Troubleshooting 56
  • 123. ∙ Multiple sets of relay logs ∙ Multiple IO threads ∙ Multiple SQL threads ∙ MySQL: --slave parallel workers for each ∙ Independent channels Multi-Master: Troubleshooting 56
  • 124. ∙ Multiple sets of relay logs ∙ Multiple IO threads ∙ Multiple SQL threads ∙ MySQL: --slave parallel workers for each ∙ Independent channels ∙ Error in one stops only one Multi-Master: Troubleshooting 56
  • 125. ∙ Multiple sets of relay logs ∙ Multiple IO threads ∙ Multiple SQL threads ∙ MySQL: --slave parallel workers for each ∙ Independent channels ∙ Error in one stops only one ∙ No automatic conflict resolution Multi-Master: Troubleshooting 56
  • 127. ∙ Error log file Basic Tools 58
  • 128. ∙ Error log file ∙ On the slave ∙ SHOW SLAVE STATUS ∙ MySQL: Tables in Performance Schema ∙ System database mysql Basic Tools 58
  • 129. ∙ Error log file ∙ On the slave ∙ On the master ∙ SHOW MASTER STATUS ∙ SHOW BINLOG EVENTS ∙ mysqlbinlog Basic Tools 58
  • 130. ∙ Error log file ∙ On the slave ∙ On the master ∙ Percona Toolkit Basic Tools 58
  • 131. ∙ Error log file ∙ On the slave ∙ On the master ∙ Percona Toolkit ∙ MySQL Utilities Basic Tools 58
  • 132. ∙ Always available, requires setup ∙ Asynchronous ∙ Master ∙ Keeps all changes in the binary log Two formats: ROW and STATEMENT ∙ Slave ∙ IO thread reads from the master into relay log ∙ SQL thread executes updates Multiple SQL threads in 5.6+ Multiple channels/sources (masters) in 5.7+ ∙ GTID in 5.6+ Replication Must Know 59
  • 133. ∙ Master ∙ Same as for standalone server ∙ More writes and consistency checks Typical Issues 60
  • 134. ∙ Master ∙ Slave IO thread ∙ Common network issues ∙ mysql command line client for tests Typical Issues 60
  • 135. ∙ Master ∙ Slave IO thread ∙ Slave SQL thread ∙ Regular query-related issues ∙ Regular storage engine issues ∙ Less execution threads than on master Typical Issues 60
  • 136. ∙ Basic Techniques – troubleshooting webinar ∙ Troubleshooting hardware resource usage ∙ Introduction into storage engine troubleshoot... ∙ Percona Toolkit ∙ MySQL Utilities ∙ Book MySQL High Availability ∙ MySQL Replication Team blog More Information 61
  • 138. ∙ ... Case Study: .IE Continuous Restore ... Marcelo Altmann - Percona, Mick Begley - IE Domain Registry Tuesday 2:20PM-3:10PM @ Goldsmith 3 ∙ A ... Walkthrough on pt-stalk Marcelo Altmann - Percona, Marcos Albe - Percona Wednesday 3:20PM-4:10PM @ Field Suite 2 ∙ Percona XtraBackup Best Practices Marcelo Altmann - Percona Wednesday 4:30PM-4:55PM @ Sky Suite 2 ∙ MySQL-MongoDB-Redis-Cassandra-HBase Marcos Albe - Percona Wednesday 4.55PM-5.20PM @ Sky Suite 2 Support Team at Percona Live 63