-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-8874 Replication filters configured in my.cnf are ignored if sla…
…ve reset and reconfigured Don't delete the rpl_filter on RESET SLAVE.
- Loading branch information
1 parent
aa55d93
commit 7f2cfa8
Showing
5 changed files
with
287 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
!include my.cnf | ||
|
||
[mysqld.1] | ||
log-bin | ||
log-slave-updates | ||
|
||
[mysqld.2] | ||
log-bin | ||
log-slave-updates | ||
|
||
[mysqld.3] | ||
log-bin | ||
log-slave-updates | ||
|
||
[mysqld.4] | ||
server-id=4 | ||
log-bin=server4-bin | ||
log-slave-updates | ||
m1.replicate_ignore_table='a.t1' | ||
m2.replicate_ignore_table='b.t1' | ||
replicate_ignore_table='c.t1' | ||
|
||
[ENV] | ||
SERVER_MYPORT_4= @mysqld.4.port | ||
SERVER_MYSOCK_4= @mysqld.4.socket |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
create database a; | ||
use a; | ||
create table t1(a int); | ||
insert into t1 values(1); | ||
create table t2(a int); | ||
insert into t2 values(1); | ||
create database b; | ||
use b; | ||
create table t1(a int); | ||
insert into t1 values(1); | ||
create table t2(a int); | ||
insert into t2 values(1); | ||
create database c; | ||
use c; | ||
create table t1(a int); | ||
insert into t1 values(1); | ||
create table t2(a int); | ||
insert into t2 values(1); | ||
change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root'; | ||
change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root'; | ||
change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root'; | ||
start all slaves; | ||
set default_master_connection = 'm1'; | ||
include/wait_for_slave_to_start.inc | ||
set default_master_connection = 'm2'; | ||
include/wait_for_slave_to_start.inc | ||
set default_master_connection = ''; | ||
include/wait_for_slave_to_start.inc | ||
select @@global.'m1'.replicate_ignore_table; | ||
@@global.'m1'.replicate_ignore_table | ||
a.t1 | ||
select @@global.'m2'.replicate_ignore_table; | ||
@@global.'m2'.replicate_ignore_table | ||
b.t1 | ||
select @@global.replicate_ignore_table; | ||
@@global.replicate_ignore_table | ||
c.t1 | ||
use a; | ||
#No t1 table | ||
show tables; | ||
Tables_in_a | ||
t2 | ||
use b; | ||
#No t1 table | ||
show tables; | ||
Tables_in_b | ||
t2 | ||
use c; | ||
#No t1 table | ||
show tables; | ||
Tables_in_c | ||
t2 | ||
#TEST | ||
STOP ALL SLAVES; | ||
Warnings: | ||
Note 1938 SLAVE 'm2' stopped | ||
Note 1938 SLAVE '' stopped | ||
Note 1938 SLAVE 'm1' stopped | ||
RESET SLAVE 'm1' ALL ; | ||
RESET SLAVE 'm2' ALL ; | ||
RESET SLAVE ALL ; | ||
drop database a; | ||
drop database b; | ||
drop database c; | ||
change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root'; | ||
change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root'; | ||
change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root'; | ||
start all slaves; | ||
Warnings: | ||
Note 1937 SLAVE 'm2' started | ||
Note 1937 SLAVE '' started | ||
Note 1937 SLAVE 'm1' started | ||
set default_master_connection = 'm1'; | ||
include/wait_for_slave_to_start.inc | ||
set default_master_connection = 'm2'; | ||
include/wait_for_slave_to_start.inc | ||
set default_master_connection = ''; | ||
include/wait_for_slave_to_start.inc | ||
#Replication Filter should be intact (t1 still not replicated) | ||
select @@global.'m1'.replicate_ignore_table; | ||
@@global.'m1'.replicate_ignore_table | ||
a.t1 | ||
select @@global.'m2'.replicate_ignore_table; | ||
@@global.'m2'.replicate_ignore_table | ||
b.t1 | ||
select @@global.replicate_ignore_table; | ||
@@global.replicate_ignore_table | ||
c.t1 | ||
use a; | ||
#No t1 table | ||
show tables; | ||
Tables_in_a | ||
t2 | ||
use b; | ||
#No t1 table | ||
show tables; | ||
Tables_in_b | ||
t2 | ||
use c; | ||
#No t1 table | ||
show tables; | ||
Tables_in_c | ||
t2 | ||
#CleanUp | ||
drop database a; | ||
drop database b; | ||
drop database c; | ||
stop all slaves; | ||
SET default_master_connection = "m1"; | ||
include/wait_for_slave_to_stop.inc | ||
SET default_master_connection = "m2"; | ||
include/wait_for_slave_to_stop.inc | ||
SET default_master_connection = ""; | ||
include/wait_for_slave_to_stop.inc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
--source include/not_embedded.inc | ||
--source include/have_innodb.inc | ||
--source include/have_debug.inc | ||
# MDEV-8874 | ||
# In Named Master slave connection if we do reset slave 'connection_name' ALL and then | ||
# if we reconnect slave, replication filters are ignored. | ||
# This patch fixes this issue. | ||
--connect (server_1,127.0.0.1,root,,,$SERVER_MYPORT_1) | ||
--connect (server_2,127.0.0.1,root,,,$SERVER_MYPORT_2) | ||
--connect (server_3,127.0.0.1,root,,,$SERVER_MYPORT_3) | ||
--connect (server_4,127.0.0.1,root,,,$SERVER_MYPORT_4) | ||
|
||
--connection server_1 | ||
create database a; | ||
use a; | ||
create table t1(a int); | ||
insert into t1 values(1); | ||
create table t2(a int); | ||
insert into t2 values(1); | ||
--save_master_pos | ||
|
||
--connection server_2 | ||
create database b; | ||
use b; | ||
create table t1(a int); | ||
insert into t1 values(1); | ||
create table t2(a int); | ||
insert into t2 values(1); | ||
--save_master_pos | ||
|
||
--connection server_3 | ||
create database c; | ||
use c; | ||
create table t1(a int); | ||
insert into t1 values(1); | ||
create table t2(a int); | ||
insert into t2 values(1); | ||
--save_master_pos | ||
|
||
--connection server_4 | ||
--disable_warnings | ||
--replace_result $SERVER_MYPORT_1 MYPORT_1 | ||
eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root'; | ||
--replace_result $SERVER_MYPORT_2 MYPORT_2 | ||
eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root'; | ||
--replace_result $SERVER_MYPORT_3 MYPORT_3 | ||
eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root'; | ||
start all slaves; | ||
set default_master_connection = 'm1'; | ||
--source include/wait_for_slave_to_start.inc | ||
set default_master_connection = 'm2'; | ||
--source include/wait_for_slave_to_start.inc | ||
set default_master_connection = ''; | ||
--source include/wait_for_slave_to_start.inc | ||
select @@global.'m1'.replicate_ignore_table; | ||
select @@global.'m2'.replicate_ignore_table; | ||
select @@global.replicate_ignore_table; | ||
|
||
--enable_warnings | ||
--sync_with_master 0,'m1' | ||
--sync_with_master 0,'m2' | ||
--sync_with_master 0,'' | ||
use a; | ||
--echo #No t1 table | ||
show tables; | ||
use b; | ||
--echo #No t1 table | ||
show tables; | ||
use c; | ||
--echo #No t1 table | ||
show tables; | ||
--echo #TEST | ||
STOP ALL SLAVES; | ||
RESET SLAVE 'm1' ALL ; | ||
RESET SLAVE 'm2' ALL ; | ||
RESET SLAVE ALL ; | ||
drop database a; | ||
drop database b; | ||
drop database c; | ||
--replace_result $SERVER_MYPORT_1 MYPORT_1 | ||
eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root'; | ||
--replace_result $SERVER_MYPORT_2 MYPORT_2 | ||
eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root'; | ||
--replace_result $SERVER_MYPORT_3 MYPORT_3 | ||
eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root'; | ||
start all slaves; | ||
set default_master_connection = 'm1'; | ||
--source include/wait_for_slave_to_start.inc | ||
set default_master_connection = 'm2'; | ||
--source include/wait_for_slave_to_start.inc | ||
set default_master_connection = ''; | ||
--source include/wait_for_slave_to_start.inc | ||
--sync_with_master 0,'m1' | ||
--sync_with_master 0,'m2' | ||
--sync_with_master 0,'' | ||
|
||
--echo #Replication Filter should be intact (t1 still not replicated) | ||
select @@global.'m1'.replicate_ignore_table; | ||
select @@global.'m2'.replicate_ignore_table; | ||
select @@global.replicate_ignore_table; | ||
use a; | ||
--echo #No t1 table | ||
show tables; | ||
use b; | ||
--echo #No t1 table | ||
show tables; | ||
use c; | ||
--echo #No t1 table | ||
show tables; | ||
|
||
|
||
#--echo #restart the server | ||
#--source include/restart_mysqld.inc | ||
|
||
|
||
--echo #CleanUp | ||
--connection server_1 | ||
drop database a; | ||
--save_master_pos | ||
|
||
--connection server_2 | ||
drop database b; | ||
--save_master_pos | ||
|
||
--connection server_3 | ||
drop database c; | ||
--save_master_pos | ||
|
||
--connection server_4 | ||
--sync_with_master 0,'m1' | ||
--sync_with_master 0,'m2' | ||
--sync_with_master 0,'' | ||
--disable_warnings | ||
stop all slaves; | ||
--enable_warnings | ||
SET default_master_connection = "m1"; | ||
--source include/wait_for_slave_to_stop.inc | ||
SET default_master_connection = "m2"; | ||
--source include/wait_for_slave_to_stop.inc | ||
SET default_master_connection = ""; | ||
--source include/wait_for_slave_to_stop.inc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters