1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00
Files
mariadb/mysql-test/suite/rpl/t/rpl_rewrite_db_sys_vars.test
2024-05-21 19:38:51 +02:00

152 lines
4.6 KiB
Plaintext

-- 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