mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
8377acc7d1
"CHANGE MASTER makes SQL thread restart from coordinates of I/O thread". So, in CHANGE MASTER: when it seems reasonable that the user did not want to discontinue its replication (i.e. when he is not specifying host or port or master_log_file or master_log_pos; this will be documented), set the coordinates of the I/O thread to those of the SQL thread. This way, the SQL thread will see no discontinuity in the relay log (i.e. will skip no events), because the I/O thread will fill the brand new relay log with the events which are just after the position where the SQL thread had stopped (before CHANGE MASTER was issued). And a new test for this bug.
26 lines
604 B
Text
26 lines
604 B
Text
source include/master-slave.inc;
|
|
|
|
connection slave;
|
|
select get_lock("a",5);
|
|
connection master;
|
|
create table t1(n int);
|
|
insert into t1 values(1+get_lock("a",10)*0);
|
|
insert into t1 values(2);
|
|
save_master_pos;
|
|
connection slave;
|
|
sleep 3; # can't sync_with_master as we should be blocked
|
|
stop slave;
|
|
select * from t1;
|
|
show slave status;
|
|
change master to master_user='root';
|
|
show slave status;
|
|
# Will restart from after the values(2), which is bug
|
|
select release_lock("a");
|
|
start slave;
|
|
sync_with_master;
|
|
select * from t1;
|
|
connection master;
|
|
drop table t1;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|