-- 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; SELECT @@GLOBAL.replicate_rewrite_db; let $rewrite_db_sss= query_get_value(SHOW SLAVE STATUS, Replicate_Rewrite_DB, 1); --echo # Ensuring SHOW SLAVE STATUS produces correct value for Replicate_Rewrite_DB... if (`SELECT strcmp(@@global.replicate_rewrite_db, "$rewrite_db_sss") != 0`) { die SHOW SLAVE STATUS Replicate_Rewrite_DB value $rewrite_db_sss does not match variable @@GLOBAL.replicate_rewrite_db; } --echo # ...success --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"; SELECT @@GLOBAL.replicate_rewrite_db; SHOW DATABASES like 'test_replica'; source include/start_slave.inc; let $rewrite_db_sss= query_get_value(SHOW SLAVE STATUS, Replicate_Rewrite_DB, 1); --echo # Ensuring SHOW SLAVE STATUS produces correct value for Replicate_Rewrite_DB... if (`SELECT strcmp(@@global.replicate_rewrite_db, "$rewrite_db_sss") != 0`) { die SHOW SLAVE STATUS Replicate_Rewrite_DB value $rewrite_db_sss does not match variable @@GLOBAL.replicate_rewrite_db; } --echo # ...success --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 connection master; use x; insert into my_table values (314); select * from my_table; --source include/save_master_gtid.inc connection slave; --source include/stop_slave.inc --source include/reset_slave.inc --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'; # 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