mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 11:31:51 +01:00
41a125474f
Until-pos guarding did not distiguish the master originated events from ones that the slave can introduce to the relay log e.g Rotate to the next relay log at slave restarting. The local Rotate's coordinate are incomparable with the Until-master-pos. That led to the unexpectable stop this bug describes. Fixed with to avoid Until-master-pos comparison for a local slave's event. Notice that if --replicate-same-server is true such event is treated as coming from the master side.
224 lines
5.9 KiB
Text
224 lines
5.9 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
stop slave;
|
|
create table t1(n int not null auto_increment primary key);
|
|
insert into t1 values (1),(2),(3),(4);
|
|
drop table t1;
|
|
create table t2(n int not null auto_increment primary key);
|
|
insert into t2 values (1),(2);
|
|
insert into t2 values (3),(4);
|
|
drop table t2;
|
|
show binlog events;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 4 Format_desc 1 98 Server ver: VERSION, Binlog ver: 4
|
|
master-bin.000001 98 Query 1 219 use `test`; create table t1(n int not null auto_increment primary key)
|
|
master-bin.000001 219 Query 1 319 use `test`; insert into t1 values (1),(2),(3),(4)
|
|
master-bin.000001 319 Query 1 395 use `test`; drop table t1
|
|
master-bin.000001 395 Query 1 516 use `test`; create table t2(n int not null auto_increment primary key)
|
|
master-bin.000001 516 Query 1 608 use `test`; insert into t2 values (1),(2)
|
|
master-bin.000001 608 Query 1 700 use `test`; insert into t2 values (3),(4)
|
|
master-bin.000001 700 Query 1 776 use `test`; drop table t2
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=319;
|
|
select * from t1;
|
|
n
|
|
1
|
|
2
|
|
3
|
|
4
|
|
SHOW SLAVE STATUS;
|
|
Slave_IO_State #
|
|
Master_Host 127.0.0.1
|
|
Master_User root
|
|
Master_Port MASTER_MYPORT
|
|
Connect_Retry 1
|
|
Master_Log_File master-bin.000001
|
|
Read_Master_Log_Pos 776
|
|
Relay_Log_File slave-relay-bin.000004
|
|
Relay_Log_Pos #
|
|
Relay_Master_Log_File master-bin.000001
|
|
Slave_IO_Running #
|
|
Slave_SQL_Running No
|
|
Replicate_Do_DB
|
|
Replicate_Ignore_DB
|
|
Replicate_Do_Table
|
|
Replicate_Ignore_Table
|
|
Replicate_Wild_Do_Table
|
|
Replicate_Wild_Ignore_Table
|
|
Last_Errno 0
|
|
Last_Error
|
|
Skip_Counter 0
|
|
Exec_Master_Log_Pos 319
|
|
Relay_Log_Space #
|
|
Until_Condition Master
|
|
Until_Log_File master-bin.000001
|
|
Until_Log_Pos 319
|
|
Master_SSL_Allowed No
|
|
Master_SSL_CA_File
|
|
Master_SSL_CA_Path
|
|
Master_SSL_Cert
|
|
Master_SSL_Cipher
|
|
Master_SSL_Key
|
|
Seconds_Behind_Master #
|
|
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
|
select * from t1;
|
|
n
|
|
1
|
|
2
|
|
3
|
|
4
|
|
SHOW SLAVE STATUS;
|
|
Slave_IO_State #
|
|
Master_Host 127.0.0.1
|
|
Master_User root
|
|
Master_Port MASTER_MYPORT
|
|
Connect_Retry 1
|
|
Master_Log_File master-bin.000001
|
|
Read_Master_Log_Pos 776
|
|
Relay_Log_File slave-relay-bin.000004
|
|
Relay_Log_Pos #
|
|
Relay_Master_Log_File master-bin.000001
|
|
Slave_IO_Running #
|
|
Slave_SQL_Running No
|
|
Replicate_Do_DB
|
|
Replicate_Ignore_DB
|
|
Replicate_Do_Table
|
|
Replicate_Ignore_Table
|
|
Replicate_Wild_Do_Table
|
|
Replicate_Wild_Ignore_Table
|
|
Last_Errno 0
|
|
Last_Error
|
|
Skip_Counter 0
|
|
Exec_Master_Log_Pos 319
|
|
Relay_Log_Space #
|
|
Until_Condition Master
|
|
Until_Log_File master-no-such-bin.000001
|
|
Until_Log_Pos 291
|
|
Master_SSL_Allowed No
|
|
Master_SSL_CA_File
|
|
Master_SSL_CA_Path
|
|
Master_SSL_Cert
|
|
Master_SSL_Cipher
|
|
Master_SSL_Key
|
|
Seconds_Behind_Master #
|
|
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
|
|
select * from t2;
|
|
n
|
|
1
|
|
2
|
|
SHOW SLAVE STATUS;
|
|
Slave_IO_State #
|
|
Master_Host 127.0.0.1
|
|
Master_User root
|
|
Master_Port MASTER_MYPORT
|
|
Connect_Retry 1
|
|
Master_Log_File master-bin.000001
|
|
Read_Master_Log_Pos 776
|
|
Relay_Log_File slave-relay-bin.000004
|
|
Relay_Log_Pos #
|
|
Relay_Master_Log_File master-bin.000001
|
|
Slave_IO_Running #
|
|
Slave_SQL_Running No
|
|
Replicate_Do_DB
|
|
Replicate_Ignore_DB
|
|
Replicate_Do_Table
|
|
Replicate_Ignore_Table
|
|
Replicate_Wild_Do_Table
|
|
Replicate_Wild_Ignore_Table
|
|
Last_Errno 0
|
|
Last_Error
|
|
Skip_Counter 0
|
|
Exec_Master_Log_Pos 608
|
|
Relay_Log_Space #
|
|
Until_Condition Relay
|
|
Until_Log_File slave-relay-bin.000004
|
|
Until_Log_Pos 746
|
|
Master_SSL_Allowed No
|
|
Master_SSL_CA_File
|
|
Master_SSL_CA_Path
|
|
Master_SSL_Cert
|
|
Master_SSL_Cipher
|
|
Master_SSL_Key
|
|
Seconds_Behind_Master #
|
|
start slave;
|
|
stop slave;
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=776;
|
|
SHOW SLAVE STATUS;
|
|
Slave_IO_State #
|
|
Master_Host 127.0.0.1
|
|
Master_User root
|
|
Master_Port MASTER_MYPORT
|
|
Connect_Retry 1
|
|
Master_Log_File master-bin.000001
|
|
Read_Master_Log_Pos 776
|
|
Relay_Log_File slave-relay-bin.000004
|
|
Relay_Log_Pos #
|
|
Relay_Master_Log_File master-bin.000001
|
|
Slave_IO_Running Yes
|
|
Slave_SQL_Running No
|
|
Replicate_Do_DB
|
|
Replicate_Ignore_DB
|
|
Replicate_Do_Table
|
|
Replicate_Ignore_Table
|
|
Replicate_Wild_Do_Table
|
|
Replicate_Wild_Ignore_Table
|
|
Last_Errno 0
|
|
Last_Error
|
|
Skip_Counter 0
|
|
Exec_Master_Log_Pos 776
|
|
Relay_Log_Space #
|
|
Until_Condition Master
|
|
Until_Log_File master-bin.000001
|
|
Until_Log_Pos 776
|
|
Master_SSL_Allowed No
|
|
Master_SSL_CA_File
|
|
Master_SSL_CA_Path
|
|
Master_SSL_Cert
|
|
Master_SSL_Cipher
|
|
Master_SSL_Key
|
|
Seconds_Behind_Master #
|
|
start slave until master_log_file='master-bin', master_log_pos=561;
|
|
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
|
|
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
|
start slave until master_log_file='master-bin.000001';
|
|
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
|
start slave until relay_log_file='slave-relay-bin.000002';
|
|
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
|
start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
|
|
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
|
start slave sql_thread;
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=776;
|
|
Warnings:
|
|
Note 1254 Slave is already running
|
|
include/stop_slave.inc
|
|
drop table if exists t1;
|
|
reset slave;
|
|
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
|
|
drop table if exists t1;
|
|
reset master;
|
|
create table t1 (a int primary key auto_increment);
|
|
start slave;
|
|
include/stop_slave.inc
|
|
master and slave are in sync now
|
|
select 0 as zero;
|
|
zero
|
|
0
|
|
insert into t1 set a=null;
|
|
insert into t1 set a=null;
|
|
select count(*) as two from t1;
|
|
two
|
|
2
|
|
start slave until master_log_file='master-bin.000001', master_log_pos= UNTIL_POS;;
|
|
slave stopped at the prescribed position
|
|
select 0 as zero;
|
|
zero
|
|
0
|
|
select count(*) as one from t1;
|
|
one
|
|
1
|
|
drop table t1;
|
|
start slave;
|