mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
152 lines
4.6 KiB
Plaintext
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
|