include/master-slave.inc [connection master] 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 include/check_slave_is_running.inc call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1"); **** On Master **** DROP TABLE t1; 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; include/rpl_end.inc