stop slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; call mtr.add_suppression("Deadlock found"); **** On Master **** SET SESSION BINLOG_FORMAT=ROW; CREATE TABLE t1 (a INT PRIMARY KEY, b INT); INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4); **** On Slave **** SHOW STATUS LIKE 'Slave_retried_transactions'; Variable_name Value Slave_retried_transactions 0 set @@global.slave_exec_mode= 'IDEMPOTENT'; UPDATE t1 SET a = 5, b = 47 WHERE a = 1; SELECT * FROM t1; a b 5 47 2 2 3 3 4 4 **** On Master **** UPDATE t1 SET a = 5, b = 5 WHERE a = 1; SELECT * FROM t1; a b 5 5 2 2 3 3 4 4 **** On Slave **** set @@global.slave_exec_mode= default; SHOW STATUS LIKE 'Slave_retried_transactions'; Variable_name Value Slave_retried_transactions 0 SELECT * FROM t1; a b 5 47 2 2 3 3 4 4 SHOW SLAVE STATUS; Slave_IO_State # Master_Host 127.0.0.1 Master_User root Master_Port MASTER_PORT Connect_Retry 1 Master_Log_File master-bin.000001 Read_Master_Log_Pos # Relay_Log_File # Relay_Log_Pos # Relay_Master_Log_File master-bin.000001 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 Last_Errno 0 Last_Error Skip_Counter 0 Exec_Master_Log_Pos # Relay_Log_Space # 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 # Master_SSL_Verify_Server_Cert No Last_IO_Errno # Last_IO_Error # Last_SQL_Errno 0 Last_SQL_Error DROP TABLE t1; **** On Master **** SET SQL_LOG_BIN= 0; DROP TABLE t1; SET SQL_LOG_BIN= 1; SET SESSION BINLOG_FORMAT=MIXED; CREATE TABLE t_myisam (id INT, PRIMARY KEY (id)) engine= MyIsam; INSERT INTO t_myisam (id) VALUES(1); CREATE TABLE t_innodb (id INT) engine= Innodb; INSERT INTO t_innodb (id) VALUES(1); BEGIN; INSERT INTO t_innodb(id) VALUES(2); INSERT INTO t_myisam(id) VALUES(3); CREATE TEMPORARY TABLE x (id INT); INSERT INTO t_myisam(id) VALUES(4),(1); ERROR 23000: Duplicate entry '1' for key 'PRIMARY' INSERT INTO t_innodb(id) VALUES(5); COMMIT; SELECT * FROM t_innodb; id 1 2 5 SELECT * FROM t_myisam; id 1 3 4 SELECT * FROM t_innodb; id 1 2 5 SELECT * FROM t_myisam; id 1 3 4 BEGIN; CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb; INSERT INTO t_innodb(id) VALUES(1); INSERT INTO t_innodb(id) VALUES(1); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(2) master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam(id) VALUES(3) master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE x (id INT) master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam(id) VALUES(4),(1) master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(5) master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(1) master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(1) master-bin.000001 # Query # # ROLLBACK DROP TABLE t_myisam, t_innodb;