# # Test of sql_slave_skip_counter # --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` 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; 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 --enable_connect_log --disconnect slave --connection master1 drop database db; --disconnect master1 --connection master2 drop database db; --disconnect master2