mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
8ac1b41cf3
Changed names of multi-source log files so that original suffixes are kept. include/my_sys.h: Added fn_ext2(), which returns pointer to last '.' in file name mysql-test/extra/rpl_tests/rpl_max_relay_size.test: Updated test mysql-test/suite/multi_source/info_logs-master.opt: Test with strange file names mysql-test/suite/multi_source/info_logs.result: Updated results mysql-test/suite/multi_source/info_logs.test: Changed to test with complex names to be able to verify the filename generator code mysql-test/suite/multi_source/relaylog_events.result: Updated results mysql-test/suite/multi_source/reset_slave.result: Updated results mysql-test/suite/multi_source/skip_counter.result: Updated results mysql-test/suite/multi_source/skip_counter.test: Added testing of max_relay_log_size mysql-test/suite/rpl/r/rpl_row_max_relay_size.result: Updated results mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result: Updated results mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result: Updated results mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test: Updated results mysys/mf_fn_ext.c: Added fn_ext2(), which returns pointer to last '.' in file name sql/log.cc: Removed some wrong casts sql/log.h: Updated comment to reflect new code sql/log_event.cc: Updated DBUG_PRINT sql/mysqld.cc: Added that max_relay_log_size copies it's values from max_binlog_size sql/mysqld.h: Removed max_relay_log_size sql/rpl_mi.cc: Changed names of multi-source log files so that original suffixes are kept. sql/rpl_mi.h: Updated prototype sql/rpl_rli.cc: Updated comment to reflect new code Made max_relay_log_size depending on master connection. sql/rpl_rli.h: Made max_relay_log_size depending on master connection. sql/set_var.h: Made option global so that one can check and change min & max values (sorry Sergei) sql/sql_class.h: Made max_relay_log_size depending on master connection. sql/sql_repl.cc: Updated calls to create_signed_file_name() sql/sys_vars.cc: Made max_relay_log_size depending on master connection. Made old code more reusable sql/sys_vars.h: Changed Sys_var_multi_source_uint to ulong to be able to handle max_relay_log_size Made old code more reusable
151 lines
4.1 KiB
Text
151 lines
4.1 KiB
Text
#
|
|
# Test of sql_slave_skip_counter and rpl_max_size
|
|
#
|
|
|
|
--enable_connect_log
|
|
|
|
# Create a schema and a table i
|
|
# on the 1st master
|
|
|
|
--connect (master1,127.0.0.1,root,,,$SERVER_MYPORT_1)
|
|
|
|
--disable_warnings
|
|
drop database if exists db;
|
|
--enable_warnings
|
|
create database db;
|
|
create table db.t1 (i int) engine=MyISAM;
|
|
--save_master_pos
|
|
|
|
# Create the same schema and another table
|
|
# on the 2nd master
|
|
|
|
--connect (master2,127.0.0.1,root,,,$SERVER_MYPORT_2)
|
|
|
|
--disable_warnings
|
|
drop database if exists db;
|
|
--enable_warnings
|
|
create database db;
|
|
create table db.t2 (i int) engine=MyISAM;
|
|
|
|
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
|
|
--disable_connect_log
|
|
|
|
# Start replication from the first master
|
|
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1
|
|
eval change master 'master1' to
|
|
master_port=$SERVER_MYPORT_1,
|
|
master_host='127.0.0.1',
|
|
master_user='root';
|
|
|
|
start slave 'master1';
|
|
set default_master_connection = 'master1';
|
|
--source include/wait_for_slave_to_start.inc
|
|
--sync_with_master 0,'master1'
|
|
|
|
# Start replication from the second master
|
|
|
|
set default_master_connection = 'master2';
|
|
|
|
--replace_result $SERVER_MYPORT_2 MYPORT_2
|
|
eval change master 'master2' to
|
|
master_port=$SERVER_MYPORT_2,
|
|
master_host='127.0.0.1',
|
|
master_user='root';
|
|
|
|
# the schema creation will be replicated from the 1st master,
|
|
# so we want to skip it in the second replication connection.
|
|
|
|
# Normally it should have been 2 events, but
|
|
# currently Binlog_checkpoint also counts. Maybe we'll need
|
|
# to modify the test later
|
|
|
|
--let $skip_counter_saved = `select @@global.sql_slave_skip_counter`
|
|
--let $max_relay_log_size_saved= `select @@global.max_relay_log_size`
|
|
--let $max_binlog_size_saved= `select @@global.max_binlog_size`
|
|
set global sql_slave_skip_counter = 2;
|
|
select @@global.sql_slave_skip_counter;
|
|
select @@session.sql_slave_skip_counter;
|
|
set session sql_slave_skip_counter = 3;
|
|
select @@global.sql_slave_skip_counter;
|
|
select @@session.sql_slave_skip_counter;
|
|
set global sql_slave_skip_counter= default;
|
|
select @@global.sql_slave_skip_counter;
|
|
select @@session.sql_slave_skip_counter;
|
|
set global sql_slave_skip_counter= 3;
|
|
set default_master_connection = 'master1';
|
|
select @@session.sql_slave_skip_counter;
|
|
set default_master_connection = 'qqq';
|
|
select @@session.sql_slave_skip_counter;
|
|
set default_master_connection = 'master2';
|
|
select @@session.sql_slave_skip_counter;
|
|
|
|
# Test of setting max_relay_log_size
|
|
select @@global.max_relay_log_size;
|
|
set global max_relay_log_size = 1*1024*1024;
|
|
select @@global.max_relay_log_size;
|
|
select @@session.max_relay_log_size;
|
|
set session max_relay_log_size = 3*1024*1024;
|
|
select @@global.max_relay_log_size;
|
|
select @@session.max_relay_log_size;
|
|
set global max_relay_log_size= default;
|
|
select @@global.max_relay_log_size;
|
|
select @@session.max_relay_log_size;
|
|
set global max_relay_log_size= 3*1024*1024;
|
|
set default_master_connection = 'master1';
|
|
select @@session.max_relay_log_size;
|
|
set default_master_connection = 'qqq';
|
|
select @@session.max_relay_log_size;
|
|
set default_master_connection = 'master2';
|
|
select @@session.max_relay_log_size;
|
|
set global max_binlog_size= 4*1024*1024;
|
|
select @@global.max_relay_log_size;
|
|
|
|
|
|
start slave 'master2';
|
|
--source include/wait_for_slave_to_start.inc
|
|
set default_master_connection = '';
|
|
|
|
--enable_connect_log
|
|
|
|
--connection master2
|
|
--save_master_pos
|
|
|
|
--connection slave
|
|
|
|
--disable_connect_log
|
|
--sync_with_master 0,'master2'
|
|
|
|
# If the skip_counter worked as expected, we should
|
|
# get here (replication shouldn't have broken)
|
|
# and should see both tables here
|
|
# (drop database which came from master2 shoudn't have been executed
|
|
# so t1 should still exist)
|
|
|
|
show tables in db;
|
|
|
|
# Cleanup
|
|
|
|
drop database db;
|
|
set default_master_connection = 'master1';
|
|
stop slave;
|
|
|
|
--source include/wait_for_slave_to_stop.inc
|
|
set default_master_connection = 'master2';
|
|
stop slave;
|
|
|
|
--source include/wait_for_slave_to_stop.inc
|
|
--eval set global sql_slave_skip_counter = $skip_counter_saved
|
|
--eval set global max_relay_log_size = $max_relay_log_size_saved
|
|
--eval set global max_binlog_size = $max_binlog_size_saved
|
|
|
|
--enable_connect_log
|
|
--disconnect slave
|
|
|
|
--connection master1
|
|
drop database db;
|
|
--disconnect master1
|
|
|
|
--connection master2
|
|
drop database db;
|
|
--disconnect master2
|