1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
-- source include/have_binlog_format_mixed.inc
-- source include/master-slave.inc
# Testing rpl option replicate_rewrite_db
--echo #
--echo # MDEV-15530 Variable replicate_rewrite_db cannot be found
--echo # in "show global variables"
--echo #
--echo # Create DBs and verify that slave has to be stopped before setting sys var
connection slave;
--let $rpl_server_id= `select @@session.server_id`
select @@session.server_id;
# These DBs will be rewrited from opt file
create database replica_db1;
create database y;
# This DB will be rewrited from test case
create database test_replica;
let $rewrite_db_sss= query_get_value(SHOW SLAVE STATUS, Replicate_Rewrite_DB, 1);
eval SELECT @@GLOBAL.replicate_rewrite_db, '$rewrite_db_sss' as 'Replicate_Rewrite_DB from SHOW SLAVE STATUS';
--echo # Create DBs and tables on primary
connection master;
--enable_warnings
create database primary_db1;
create database x;
use primary_db1;
create table my_table (t int);
insert into my_table values (2),(4);
use x;
create table my_table (t int);
insert into my_table values (654),(532);
--source include/save_master_gtid.inc
--echo # Check replica
--connection slave
--source include/sync_with_master_gtid.inc
--let $diff_tables=master:primary_db1.my_table,slave:replica_db1.my_table
--source include/diff_tables.inc
--let $diff_tables=master:x.my_table,slave:y.my_table
--source include/diff_tables.inc
SELECT @@GLOBAL.replicate_rewrite_db;
show tables from replica_db1;
select * from replica_db1.my_table;
show tables from y;
select * from y.my_table;
--echo # Set replica sys var replicate_rewrite_db
connection slave;
--error ER_SLAVE_MUST_STOP
SET @@GLOBAL.replicate_rewrite_db="test_master->test_replica";
source include/stop_slave.inc;
SET @save_replicate_rewrite_db = @@GLOBAL.replicate_rewrite_db;
SELECT @@GLOBAL.replicate_rewrite_db;
SET @@GLOBAL.replicate_rewrite_db="test_master->test_replica";
SHOW DATABASES like 'test_replica';
source include/start_slave.inc;
let $rewrite_db_sss= query_get_value(SHOW SLAVE STATUS, Replicate_Rewrite_DB, 1);
eval SELECT @@GLOBAL.replicate_rewrite_db, '$rewrite_db_sss' as 'Replicate_Rewrite_DB from SHOW SLAVE STATUS';
--echo # Create DB and tables on primary
connection master;
--enable_warnings
create database test_master;
use test_master;
create table my_table (t int);
insert into my_table values (1),(3);
--source include/save_master_gtid.inc
--echo # Ensure that the replica receives all of the primary's events without
--echo # error
--connection slave
--source include/sync_with_master_gtid.inc
let $error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1);
--echo Last_SQL_Error = $error
let $errno= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1);
--echo Last_SQL_Errno = $errno
SELECT @@GLOBAL.replicate_rewrite_db;
SHOW tables from test_replica;
select * from test_replica.my_table;
# Additional check for tables
--let $diff_tables=master:test_master.my_table,slave:test_replica.my_table
--source include/diff_tables.inc
--echo # Update of values on primary for DB not set in replication_rewrite_db
--source include/stop_slave.inc
--source include/reset_slave.inc
connection master;
use x;
insert into my_table values (314);
select * from my_table;
--source include/save_master_gtid.inc
connection slave;
--source include/start_slave.inc
SELECT @@GLOBAL.replicate_rewrite_db;
--source include/sync_with_master_gtid.inc
# This shouldn't get the new values from x DB on master
select * from y.my_table;
--echo # Dynamic updates to the replication filter should be lost after server restart
# Old value
connection slave;
SELECT @@GLOBAL.replicate_rewrite_db;
connection master;
use x;
insert into my_table values (1000);
select * from my_table;
--source include/save_master_gtid.inc
connection slave;
--source include/stop_slave.inc
--source include/reset_slave.inc
--let $rpl_server_number= 2
--source include/rpl_restart_server.inc
--replace_result $MASTER_MYPORT MASTER_MYPORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_SSL_VERIFY_SERVER_CERT=0;
# New value
connection slave;
--source include/start_slave.inc
SELECT @@GLOBAL.replicate_rewrite_db;
--source include/sync_with_master_gtid.inc
# This should update values with 314 and 1000 from primary
select * from y.my_table;
--echo # Cleanup
connection master;
drop database test_master;
drop database primary_db1;
drop database x;
--source include/save_master_gtid.inc
--connection slave
--source include/sync_with_master_gtid.inc
drop database test_replica;
drop database replica_db1;
drop database y;
source include/stop_slave.inc;
source include/start_slave.inc;
--source include/rpl_end.inc
# end of 10.11 tests
|