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
|