# Verify that after CHANGE MASTER, replication (I/O thread and SQL # thread) restart from where SQL thread left, not from where # I/O thread left (some old bug fixed in 4.0.17) source include/master-slave.inc; call mtr.add_suppression("Slave I/O: The slave I/O thread stops because a fatal error is encountered when it tried to SET @master_binlog_checksum"); connection master; # Make SQL slave thread advance a bit create table t1(n int); sync_slave_with_master; select * from t1; # Now stop it and make I/O slave thread be ahead stop slave sql_thread; connection master; insert into t1 values(1); insert into t1 values(2); save_master_pos; let $slave_param= Read_Master_Log_Pos; let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1); connection slave; source include/wait_for_slave_param.inc; source include/stop_slave.inc; let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); if ($read_pos == $exec_pos) { source include/show_rpl_debug_info.inc; echo 'Read_Master_Log_Pos: $read_pos' == 'Exec_Master_Log_Pos: $exec_pos'; die Failed because Read_Master_Log_Pos is equal to Exec_Master_Log_Pos; } change master to master_user='root'; let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); if ($read_pos != $exec_pos) { source include/show_rpl_debug_info.inc; echo 'Read_Master_Log_Pos: $read_pos' <> 'Exec_Master_Log_Pos: $exec_pos'; die Failed because Read_Master_Log_Pos is not equal to Exec_Master_Log_Pos; } start slave; sync_with_master; select * from t1; connection master; drop table t1; sync_slave_with_master; # End of 4.1 tests # # BUG#12190 CHANGE MASTER has differ path requiremts on MASTER_LOG_FILE and RELAY_LOG_FILE # if ($bug_59037_is_fixed == 'true') { --source include/rpl_reset.inc connection master; create table t1 (a int); insert into t1 values (1); flush logs; insert into t1 values (2); # Note: the master positon saved by this will also be used by the # 'sync_with_master' below. sync_slave_with_master; # Check if the table t1 and t2 are identical on master and slave; let $diff_tables= master:t1,slave:t1 source include/diff_tables.inc; connection slave; source include/stop_slave.inc; delete from t1 where a=2; # start replication from the second insert, after fix of BUG#12190, # relay_log_file does not use absolute path, only the filename is # required # # Note: the follow change master will automatically reset # relay_log_purge to false, save the old value to restore let $relay_log_purge= `select @@global.relay_log_purge`; CHANGE MASTER TO relay_log_file='slave-relay-bin.000005', relay_log_pos=4; start slave sql_thread; source include/wait_for_slave_sql_to_start.inc; # Sync to the same position saved by the 'sync_slave_with_master' above. sync_with_master; # Check if the table t1 and t2 are identical on master and slave; let $diff_tables= master:t1,slave:t1 source include/diff_tables.inc; # clean up connection slave; start slave io_thread; source include/wait_for_slave_io_to_start.inc; eval set global relay_log_purge=$relay_log_purge; connection master; drop table t1; } --connection master # MDEV-22741: *SAN: ERROR: AddressSanitizer: use-after-poison on address in # instrings/strmake.c:36 from change_master (on optimized builds) CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_CERT='', MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH=''; CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0; --source include/rpl_end.inc