# # Test of sql_slave_skip_counter and rpl_max_size # # Create a schema and a table i # on the 1st master --source include/not_embedded.inc --let $rpl_server_count= 0 --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.this_will_not_be_replicated (i int) engine=MyISAM; create table db.t1 (i int) engine=MyISAM; create table db.t2 (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.t3 (i int) engine=MyISAM; --connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3) # 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', master_use_gtid=no; 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', master_use_gtid=no; # the schema creation will be replicated from the 1st master, # so we want to skip it in the second replication connection # The events we want to skip are: # # The start format statement event # drop database if exists db # create database db # Create table db.t1 # - > 4 events in total --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= 4; 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 = ''; --connection master2 --save_master_pos --connection slave --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 shouldn't have been executed # so t1 should still exist) show tables in db; # Cleanup drop database db; --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 --source include/reset_master_slave.inc --disconnect slave --connection master1 drop database db; --source include/reset_master_slave.inc --disconnect master1 --connection master2 drop database db; --source include/reset_master_slave.inc --disconnect master2