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 Checking that both slave threads are running. 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; STOP SLAVE;