mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-4485: Master did not allow slave to connect from the very start (empty GTID pos) if GTIDs from other multi_source master was present
The idea in the code was to protect the user that tries to connect a slave to a master with completely different domains than what was intended. If none of the domains in the start position are present at all in the master binlog, we gave an error. However, this is a stupid idea. Because when a slave connects to a master to start replication from the very start of binlogs - such as when setting up new master->slave servers from scratch - there will be just this situation, the requested slave position is empty for all the domains in the master's binlog. So the code that gives this error is wrong, and the solution is simply to remove it.
This commit is contained in:
15
mysql-test/suite/rpl/r/rpl_gtid_mdev4485.result
Normal file
15
mysql-test/suite/rpl/r/rpl_gtid_mdev4485.result
Normal file
@ -0,0 +1,15 @@
|
||||
include/rpl_init.inc [topology=1->3]
|
||||
*** MDEV-4485. Master did not allow slave to connect from the very start (empty GTID pos) if GTIDs from other multi_source master was present ***
|
||||
create table t1 (i int);
|
||||
create table t2 (i int);
|
||||
set default_master_connection = 'm2';
|
||||
change master to master_host='127.0.0.1', master_port=SERVER_MYPORT_2, master_user='root', master_use_gtid=slave_pos;
|
||||
include/start_slave.inc
|
||||
insert into t2 values (1);
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
set default_master_connection = 'm2';
|
||||
include/stop_slave.inc
|
||||
RESET SLAVE ALL;
|
||||
set default_master_connection = '';
|
||||
include/rpl_end.inc
|
18
mysql-test/suite/rpl/t/rpl_gtid_mdev4485.cnf
Normal file
18
mysql-test/suite/rpl/t/rpl_gtid_mdev4485.cnf
Normal file
@ -0,0 +1,18 @@
|
||||
!include suite/rpl/rpl_1slave_base.cnf
|
||||
!include include/default_client.cnf
|
||||
|
||||
[mysqld.1]
|
||||
log-slave-updates
|
||||
gtid-domain-id=1
|
||||
|
||||
[mysqld.2]
|
||||
log-slave-updates
|
||||
gtid-domain-id=2
|
||||
|
||||
[mysqld.3]
|
||||
log-slave-updates
|
||||
gtid-domain-id=3
|
||||
|
||||
[ENV]
|
||||
SERVER_MYPORT_3= @mysqld.3.port
|
||||
SERVER_MYSOCK_3= @mysqld.3.socket
|
40
mysql-test/suite/rpl/t/rpl_gtid_mdev4485.test
Normal file
40
mysql-test/suite/rpl/t/rpl_gtid_mdev4485.test
Normal file
@ -0,0 +1,40 @@
|
||||
--let $rpl_topology= 1->3
|
||||
--source include/rpl_init.inc
|
||||
|
||||
--echo *** MDEV-4485. Master did not allow slave to connect from the very start (empty GTID pos) if GTIDs from other multi_source master was present ***
|
||||
|
||||
--connection server_1
|
||||
create table t1 (i int);
|
||||
|
||||
--connection server_2
|
||||
create table t2 (i int);
|
||||
|
||||
--connection server_3
|
||||
|
||||
set default_master_connection = 'm2';
|
||||
--replace_result $SERVER_MYPORT_2 SERVER_MYPORT_2
|
||||
eval change master to master_host='127.0.0.1', master_port=$SERVER_MYPORT_2, master_user='root', master_use_gtid=slave_pos;
|
||||
--source include/start_slave.inc
|
||||
|
||||
--connection server_2
|
||||
insert into t2 values (1);
|
||||
--save_master_pos
|
||||
|
||||
--connection server_3
|
||||
--sync_with_master 0,'m2'
|
||||
|
||||
--connection server_1
|
||||
drop table t1;
|
||||
|
||||
--connection server_2
|
||||
drop table t2;
|
||||
|
||||
--connection server_3
|
||||
--sync_with_master 0,'m2'
|
||||
set default_master_connection = 'm2';
|
||||
--source include/stop_slave.inc
|
||||
RESET SLAVE ALL;
|
||||
set default_master_connection = '';
|
||||
|
||||
--connection server_1
|
||||
--source include/rpl_end.inc
|
Reference in New Issue
Block a user