1
*** Set up circular ring by schema A->B->C->D->A ***
3
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
6
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
13
SET auto_increment_increment = 4;
14
SET auto_increment_offset = 1;
17
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_A_PORT,master_user='root',MASTER_LOG_FILE='MASTER_A_LOG_FILE';
18
SET auto_increment_increment = 4;
19
SET auto_increment_offset = 2;
23
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_B_PORT,master_user='root',MASTER_LOG_FILE='MASTER_B_LOG_FILE';
24
SET auto_increment_increment = 4;
25
SET auto_increment_offset = 3;
29
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_C_PORT,master_user='root',MASTER_LOG_FILE='MASTER_C_LOG_FILE';
30
SET auto_increment_increment = 4;
31
SET auto_increment_offset = 4;
32
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_D_PORT,master_user='root',MASTER_LOG_FILE='MASTER_D_LOG_FILE';
33
SHOW VARIABLES LIKE 'auto_increment_%';
35
auto_increment_increment 4
36
auto_increment_offset 1
37
SHOW VARIABLES LIKE 'auto_increment_%';
39
auto_increment_increment 4
40
auto_increment_offset 2
41
SHOW VARIABLES LIKE 'auto_increment_%';
43
auto_increment_increment 4
44
auto_increment_offset 3
45
SHOW VARIABLES LIKE 'auto_increment_%';
47
auto_increment_increment 4
48
auto_increment_offset 4
1
*** Set up circular replication on four servers ***
2
include/rpl_init.inc [topology=1->2->3->4->1]
55
4
*** Preparing data ***
56
5
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=MyISAM;
57
6
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=InnoDB;
59
9
*** Testing schema A->B->C->D->A ***
62
12
INSERT INTO t1(b,c) VALUES('B',1);
63
13
INSERT INTO t1(b,c) VALUES('C',1);
64
14
INSERT INTO t1(b,c) VALUES('D',1);
65
16
SELECT 'Master A',a,b FROM t1 WHERE c = 1 ORDER BY a,b;
95
46
include/start_slave.inc
96
47
INSERT INTO t1 VALUES(6,'C',2);
97
48
INSERT INTO t1(b,c) VALUES('B',2);
49
call mtr.add_suppression("Slave SQL.*Duplicate entry .6. for key .PRIMARY.* Error_code: 1062");
50
include/wait_for_slave_sql_error.inc [errno=1062]
98
51
INSERT INTO t1(b,c) VALUES('A',2);
99
52
INSERT INTO t1(b,c) VALUES('D',2);
118
71
* Reconfigure replication to schema A->B->D->A *
121
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_B_PORT,master_user='root',master_log_file='LOG_FILE',master_log_pos=LOG_POS;
72
include/stop_slave_io.inc
73
include/stop_slave.inc
74
include/rpl_change_topology.inc [new topology=1->2->4->1,2->3]
122
75
include/start_slave.inc
124
77
* Check data inserted before failure *
145
98
INSERT INTO t1(b,c) VALUES('A',3);
146
99
INSERT INTO t1(b,c) VALUES('B',3);
147
100
INSERT INTO t1(b,c) VALUES('D',3);
148
102
SELECT 'Master A',a,b FROM t1 WHERE c = 3 ORDER BY a,b;
168
122
* Remove wrong event from C and restore B->C->D *
169
123
include/stop_slave.inc
170
124
DELETE FROM t1 WHERE a = 6;
125
include/start_slave.inc
174
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_C_PORT,master_user='root',master_log_file='LOG_FILE',master_log_pos=LOG_POS;
128
include/rpl_change_topology.inc [new topology=1->2->3->4->1]
129
include/start_slave.inc
177
132
* Check data inserted before restoring schema A->B->C->D->A *
178
133
SELECT 'Master A',a,b FROM t1 WHERE c IN (2,3) ORDER BY a,b;
213
168
INSERT INTO t1(b,c) VALUES('B',4);
214
169
INSERT INTO t1(b,c) VALUES('C',4);
215
170
INSERT INTO t1(b,c) VALUES('D',4);
216
172
SELECT 'Master A',a,b FROM t1 WHERE c = 4 ORDER BY a,b;