Skip to content

Commit 9995012

Browse files
committed
Modify 2 channel circular replication testcase to use IGNORE_SERVER_IDS
The 2 channel circular replication testcase uses the same server id for both MySQLDs on each site to avoid double application of 'reflected' events. This is not necessary with the IGNORE_SERVER_IDs CHANGE MASTER option, so the testcase is modified to use distinct server ids + IGNORE_SERVER_IDS.
1 parent e45e8fb commit 9995012

5 files changed

+76
-17
lines changed

mysql-test/suite/ndb_rpl/ndb_master-slave_2ch.inc

+20-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
# Set up circular cluster replication where each
44
# cluster has two mysqlds and replication directions are
55
# following:
6+
# 1 2
67
# master ---> slave
78
# / \
89
# cluster A cluster B
9-
# \ /
10+
# \ 3 4 /
1011
# master1 <--- slave1
1112
#
1213
# ==== Usage ====
@@ -26,8 +27,9 @@
2627
# $rpl_skip_start_slave, $rpl_debug, $slave_timeout
2728
# See include/master-slave.inc
2829

30+
#--let $rpl_debug= 1
2931
--let $rpl_topology= 1->2,4->3
30-
--let $rpl_skip_check_server_ids= 1
32+
--let $rpl_skip_start_slave= 1
3133
--source include/rpl_init.inc
3234

3335
# Make connections to mysqlds
@@ -37,17 +39,31 @@
3739
--source include/rpl_connect.inc
3840

3941
--let $rpl_connection_name= master1
40-
--let $rpl_server_number= 1
42+
--let $rpl_server_number= 3
4143
--source include/rpl_connect.inc
4244

4345
--let $rpl_connection_name= slave
4446
--let $rpl_server_number= 2
4547
--source include/rpl_connect.inc
4648

4749
--let $rpl_connection_name= slave1
48-
--let $rpl_server_number= 2
50+
--let $rpl_server_number= 4
4951
--source include/rpl_connect.inc
5052

53+
# Now add IGNORE_SERVER_IDS
54+
--disable_query_log
55+
connection master;
56+
CHANGE MASTER TO IGNORE_SERVER_IDS= (1,3);
57+
connection master1;
58+
CHANGE MASTER TO IGNORE_SERVER_IDS= (1,3);
59+
connection slave;
60+
CHANGE MASTER TO IGNORE_SERVER_IDS= (2,4);
61+
connection slave1;
62+
CHANGE MASTER TO IGNORE_SERVER_IDS= (2,4);
63+
64+
# Now start replication
65+
--source include/rpl_start_slaves.inc
66+
--enable_query_log
5167

5268
# Check that all mysqld are compiled with ndb support
5369
--let $_rpl_server= 4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# ==== Purpose ====
2+
#
3+
# Clean up replication configuration after using a 2ch
4+
# setup.
5+
# We need to explicitly reset the IGNORE_SERVER_IDS parameters
6+
# on all Servers to avoid testcase check errors.
7+
#
8+
# ==== Usage ====
9+
#
10+
# [--let $rpl_debug= 1]
11+
# --source suite/ndb_rpl/ndb_master-slave_2ch_end.inc
12+
#
13+
# Parameters:
14+
# $rpl_debug
15+
# See include/master-slave.inc
16+
17+
--source include/rpl_stop_slaves.inc
18+
--connection master
19+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
20+
--connection master1
21+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
22+
--connection slave
23+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
24+
--connection slave1
25+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
26+
--source include/rpl_start_slaves.inc
27+
28+
--source include/rpl_end.inc

mysql-test/suite/ndb_rpl/r/ndb_rpl_circular_2ch.result

+9-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ include/rpl_connect.inc [creating master]
33
include/rpl_connect.inc [creating master1]
44
include/rpl_connect.inc [creating slave]
55
include/rpl_connect.inc [creating slave1]
6+
include/rpl_start_slaves.inc
67

78
*** Check server_id of mysqld servers ***
89
SHOW VARIABLES LIKE "server_id";
@@ -12,7 +13,7 @@ SET auto_increment_offset = 1;
1213
SET auto_increment_increment = 2;
1314
SHOW VARIABLES LIKE "server_id";
1415
Variable_name Value
15-
server_id 1
16+
server_id 3
1617
SET auto_increment_offset = 1;
1718
SET auto_increment_increment = 2;
1819
SHOW VARIABLES LIKE "server_id";
@@ -22,7 +23,7 @@ SET auto_increment_offset = 2;
2223
SET auto_increment_increment = 2;
2324
SHOW VARIABLES LIKE "server_id";
2425
Variable_name Value
25-
server_id 2
26+
server_id 4
2627
SET auto_increment_offset = 2;
2728
SET auto_increment_increment = 2;
2829

@@ -48,4 +49,10 @@ Check data on both clusters
4849
include/diff_tables.inc [master:t1, slave:t1]
4950
DROP TABLE IF EXISTS t1;
5051

52+
include/rpl_stop_slaves.inc
53+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
54+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
55+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
56+
CHANGE MASTER TO IGNORE_SERVER_IDS= ();
57+
include/rpl_start_slaves.inc
5158
include/rpl_end.inc

mysql-test/suite/ndb_rpl/t/ndb_rpl_circular_2ch.cnf

+15-10
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,39 @@
22

33
# 2 clusters, each with 2 MySQLDs
44
# All MySQLDs log-slave-updates
5-
# Potential infinite loops are broken by both servers
6-
# on each cluster having the same server-id
7-
# To support > 2 clusters and/or different server-ids per
8-
# MySQLD server, we need some other loop breaking
9-
# mechanism
5+
# All MySQLDs log-apply-status
6+
# Infinite loops broken in the test using Ignore_server_ids mechanism
107

118
[mysqld.1.1]
129
server-id= 1
1310
log-bin
11+
ndb_connectstring= @mysql_cluster.1.ndb_connectstring
1412
log-slave-updates
13+
skip-slave-start
1514

1615
[mysqld.2.1]
17-
server-id= 1
16+
server-id= 3
1817
log-bin
18+
ndb_connectstring= @mysql_cluster.1.ndb_connectstring
1919
log-slave-updates
20+
skip-slave-start
2021

2122
[mysqld.1.slave]
2223
server-id= 2
2324
log-bin
25+
ndb_connectstring= @mysql_cluster.slave.ndb_connectstring
2426
log-slave-updates
2527
skip-slave-start
2628

2729
[mysqld.2.slave]
28-
server-id= 2
30+
server-id= 4
2931
log-bin
3032
ndb_connectstring= @mysql_cluster.slave.ndb_connectstring
33+
log-slave-updates
34+
skip-slave-start
3135

3236
[ENV]
33-
34-
SLAVE_MYPORT1= @mysqld.2.slave.port
35-
SLAVE_MYSOCK1= @mysqld.2.slave.socket
37+
SERVER_MYPORT_1= @mysqld.1.1.port
38+
SERVER_MYPORT_2= @mysqld.1.slave.port
39+
SERVER_MYPORT_3= @mysqld.2.1.port
40+
SERVER_MYPORT_4= @mysqld.2.slave.port

mysql-test/suite/ndb_rpl/t/ndb_rpl_circular_2ch.test

+4-1
Original file line numberDiff line numberDiff line change
@@ -163,5 +163,8 @@ DROP TABLE IF EXISTS t1;
163163
--source include/wait_for_query_to_fail.inc
164164
--echo
165165

166+
--connection master
167+
166168
# End of test 5.1
167-
--source include/rpl_end.inc
169+
--source suite/ndb_rpl/ndb_master-slave_2ch_end.inc
170+

0 commit comments

Comments
 (0)