include/master-slave.inc [connection master] connection slave; include/stop_slave.inc SET @@global.slave_parallel_threads=4; SET @@global.slave_parallel_mode=optimistic; CHANGE MASTER TO master_use_gtid=slave_pos; SET @@global.debug_dbug="+d,at_write_start_alter"; include/start_slave.inc connection master; SET @@session.binlog_alter_two_phase=true; CREATE TABLE t1 (a INT) ENGINE=innodb; include/save_master_gtid.inc connection slave; include/sync_with_master_gtid.inc connection master; SET @@session.alter_algorithm='INSTANT'; SET @@session.gtid_domain_id=11; ALTER TABLE t1 ADD COLUMN b int; # START Alter having exclusive lock is waiting for the signal connection slave; # FTWRL is sent first to wait for SA connection slave1; FLUSH TABLES WITH READ LOCK; # SA completes connection slave; set DEBUG_SYNC= "now signal alter_cont"; connection slave1; connection slave; # Release CA connection slave1; UNLOCK TABLES; connection master; connection slave; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Gtid # # GTID #-#-# slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) ENGINE=innodb slave-bin.000001 # Gtid # # GTID #-#-# START ALTER slave-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN b int slave-bin.000001 # Gtid # # GTID #-#-# COMMIT ALTER id=# slave-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN b int connection master; DROP TABLE t1; connection slave; # cleanup connection slave; set DEBUG_SYNC = RESET; include/stop_slave.inc set global slave_parallel_threads = 0; set global slave_parallel_mode = optimistic; set @@global.debug_dbug = ""; include/start_slave.inc include/rpl_end.inc