*** Test all-to-all replication with --gtid-ignore-duplicates *** SET @old_parallel= @@GLOBAL.slave_parallel_threads; SET GLOBAL slave_parallel_threads=5; SET @old_ignore_duplicates= @@GLOBAL.gtid_ignore_duplicates; SET GLOBAL gtid_ignore_duplicates=1; SET GLOBAL gtid_domain_id= 1; SET SESSION gtid_domain_id= 1; CHANGE MASTER 'b2a' TO master_port=MYPORT_2, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; CHANGE MASTER 'c2a' TO master_port=MYPORT_3, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; set default_master_connection = 'b2a'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = 'c2a'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = ''; SET @old_parallel= @@GLOBAL.slave_parallel_threads; SET GLOBAL slave_parallel_threads=5; SET @old_ignore_duplicates= @@GLOBAL.gtid_ignore_duplicates; SET GLOBAL gtid_ignore_duplicates=1; SET GLOBAL gtid_domain_id= 2; SET SESSION gtid_domain_id= 2; CHANGE MASTER 'a2b' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; CHANGE MASTER 'c2b' TO master_port=MYPORT_3, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; set default_master_connection = 'a2b'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = 'c2b'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = ''; SET @old_parallel= @@GLOBAL.slave_parallel_threads; SET GLOBAL slave_parallel_threads=5; SET @old_ignore_duplicates= @@GLOBAL.gtid_ignore_duplicates; SET GLOBAL gtid_ignore_duplicates=1; SET GLOBAL gtid_domain_id= 3; SET SESSION gtid_domain_id= 3; CHANGE MASTER 'a2c' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; CHANGE MASTER 'b2c' TO master_port=MYPORT_2, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; set default_master_connection = 'a2c'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = 'b2c'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = ''; SET @old_parallel= @@GLOBAL.slave_parallel_threads; SET GLOBAL slave_parallel_threads=5; SET @old_ignore_duplicates= @@GLOBAL.gtid_ignore_duplicates; SET GLOBAL gtid_ignore_duplicates=1; SET GLOBAL gtid_domain_id= 1; SET SESSION gtid_domain_id= 1; CHANGE MASTER 'a2d' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos; set default_master_connection = 'a2d'; START SLAVE; include/wait_for_slave_to_start.inc set default_master_connection = ''; ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); BEGIN; INSERT INTO t1 VALUES (2); INSERT INTO t1 VALUES (3); COMMIT; INSERT INTO t1 VALUES (4), (5); INSERT INTO t1 VALUES (6); include/save_master_gtid.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a 1 2 3 4 5 6 include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a 1 2 3 4 5 6 include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a 1 2 3 4 5 6 include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a 1 2 3 4 5 6 INSERT INTO t1 VALUES (10); include/save_master_gtid.inc include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 10 ORDER BY a; a 10 STOP SLAVE "c2b"; SET default_master_connection = "c2b"; include/wait_for_slave_to_stop.inc STOP SLAVE "a2b"; SET default_master_connection = "a2b"; include/wait_for_slave_to_stop.inc INSERT INTO t1 VALUES (11); include/save_master_gtid.inc include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 10 ORDER BY a; a 10 11 SET default_master_connection = "b2a"; STOP SLAVE; include/wait_for_slave_to_stop.inc INSERT INTO t1 VALUES (12); SELECT * FROM t1 WHERE a >= 10 ORDER BY a; a 10 12 include/save_master_gtid.inc START SLAVE "b2a"; SET default_master_connection = "b2a"; include/wait_for_slave_to_start.inc include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 10 ORDER BY a; a 10 11 12 START SLAVE "c2b"; SET default_master_connection = "c2b"; include/wait_for_slave_to_start.inc START SLAVE "a2b"; SET default_master_connection = "a2b"; include/wait_for_slave_to_start.inc include/save_master_gtid.inc include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 10 ORDER BY a; a 10 11 12 *** Test also with not using parallel replication. SET default_master_connection = "b2a"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET default_master_connection = "c2a"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET GLOBAL slave_parallel_threads=0; SET default_master_connection = "b2a"; START SLAVE; include/wait_for_slave_to_start.inc SET default_master_connection = "c2a"; START SLAVE; include/wait_for_slave_to_start.inc SET default_master_connection = "a2b"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET default_master_connection = "c2b"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET GLOBAL slave_parallel_threads=0; SET default_master_connection = "a2b"; START SLAVE; include/wait_for_slave_to_start.inc SET default_master_connection = "c2b"; START SLAVE; include/wait_for_slave_to_start.inc SET default_master_connection = "a2c"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET default_master_connection = "b2c"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET GLOBAL slave_parallel_threads=0; SET default_master_connection = "a2c"; START SLAVE; include/wait_for_slave_to_start.inc SET default_master_connection = "b2c"; START SLAVE; include/wait_for_slave_to_start.inc SET default_master_connection = "a2d"; STOP SLAVE; include/wait_for_slave_to_stop.inc SET GLOBAL slave_parallel_threads=0; SET default_master_connection = "a2d"; START SLAVE; include/wait_for_slave_to_start.inc INSERT INTO t1 VALUES (21); BEGIN; INSERT INTO t1 VALUES (22); INSERT INTO t1 VALUES (23); COMMIT; INSERT INTO t1 VALUES (24), (25); INSERT INTO t1 VALUES (26); include/save_master_gtid.inc include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 20 ORDER BY a; a 21 22 23 24 25 26 include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 20 ORDER BY a; a 21 22 23 24 25 26 include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 20 ORDER BY a; a 21 22 23 24 25 26 include/sync_with_master_gtid.inc SELECT * FROM t1 WHERE a >= 20 ORDER BY a; a 21 22 23 24 25 26 SET GLOBAL gtid_domain_id=0; STOP ALL SLAVES; Warnings: Note 1938 SLAVE 'b2a' stopped Note 1938 SLAVE 'c2a' stopped SET GLOBAL slave_parallel_threads= @old_parallel; SET GLOBAL gtid_ignore_duplicates= @old_ignore_duplicates; SET GLOBAL gtid_domain_id=0; STOP ALL SLAVES; Warnings: Note 1938 SLAVE 'a2b' stopped Note 1938 SLAVE 'c2b' stopped SET GLOBAL slave_parallel_threads= @old_parallel; SET GLOBAL gtid_ignore_duplicates= @old_ignore_duplicates; SET GLOBAL gtid_domain_id=0; STOP ALL SLAVES; Warnings: Note 1938 SLAVE 'a2c' stopped Note 1938 SLAVE 'b2c' stopped SET GLOBAL slave_parallel_threads= @old_parallel; SET GLOBAL gtid_ignore_duplicates= @old_ignore_duplicates; SET GLOBAL gtid_domain_id=0; STOP ALL SLAVES; Warnings: Note 1938 SLAVE 'a2d' stopped SET GLOBAL slave_parallel_threads= @old_parallel; SET GLOBAL gtid_ignore_duplicates= @old_ignore_duplicates; DROP TABLE t1; include/reset_master_slave.inc DROP TABLE t1; include/reset_master_slave.inc DROP TABLE t1; include/reset_master_slave.inc DROP TABLE t1; include/reset_master_slave.inc