2009-12-04 02:46:33 +01:00
|
|
|
source include/have_semisync_plugin.inc;
|
|
|
|
source include/not_embedded.inc;
|
|
|
|
source include/master-slave.inc;
|
|
|
|
source include/have_innodb.inc;
|
|
|
|
|
|
|
|
let $engine_type= InnoDB;
|
|
|
|
|
|
|
|
# Suppress warnings that might be generated during the test
|
|
|
|
disable_query_log;
|
|
|
|
connection master;
|
|
|
|
call mtr.add_suppression("Timeout waiting for reply of binlog");
|
|
|
|
call mtr.add_suppression("Semi-sync master .* waiting for slave reply");
|
|
|
|
call mtr.add_suppression("Read semi-sync reply");
|
2010-01-07 16:39:11 +01:00
|
|
|
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT.");
|
2009-12-04 02:46:33 +01:00
|
|
|
connection slave;
|
|
|
|
call mtr.add_suppression("Master server does not support semi-sync");
|
|
|
|
call mtr.add_suppression("Semi-sync slave .* reply");
|
|
|
|
enable_query_log;
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
disable_query_log;
|
|
|
|
let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled', Value, 1);
|
|
|
|
if (`select '$value' = 'No such row'`)
|
|
|
|
{
|
|
|
|
set sql_log_bin=0;
|
|
|
|
eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
|
|
|
|
SET GLOBAL rpl_semi_sync_master_enabled = 1;
|
|
|
|
set sql_log_bin=1;
|
|
|
|
}
|
|
|
|
enable_query_log;
|
|
|
|
|
|
|
|
connection slave;
|
|
|
|
source include/stop_slave.inc;
|
|
|
|
|
|
|
|
disable_query_log;
|
|
|
|
let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', Value, 1);
|
|
|
|
if (`select '$value' = 'No such row'`)
|
|
|
|
{
|
|
|
|
set sql_log_bin=0;
|
|
|
|
eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
|
|
|
|
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
|
|
|
|
set sql_log_bin=1;
|
|
|
|
}
|
|
|
|
enable_query_log;
|
|
|
|
|
|
|
|
source include/start_slave.inc;
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
SET GLOBAL event_scheduler = ON;
|
|
|
|
|
|
|
|
replace_result $engine_type ENGINE_TYPE;
|
|
|
|
eval CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=$engine_type;
|
|
|
|
INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a');
|
|
|
|
INSERT INTO t1 SELECT i+5, f FROM t1;
|
|
|
|
INSERT INTO t1 SELECT i+10, f FROM t1;
|
|
|
|
|
|
|
|
CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND
|
|
|
|
DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID()));
|
|
|
|
CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND
|
|
|
|
DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev2_',CONNECTION_ID()));
|
|
|
|
|
|
|
|
connection slave;
|
|
|
|
STOP SLAVE IO_THREAD;
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
let $run = 20;
|
|
|
|
while ($run)
|
|
|
|
{
|
|
|
|
connect (m$run,localhost,root,,);
|
|
|
|
connection m$run;
|
|
|
|
send;
|
|
|
|
eval UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = $run;
|
|
|
|
connection master;
|
|
|
|
dec $run;
|
|
|
|
}
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
SET GLOBAL event_scheduler = OFF;
|
|
|
|
|
|
|
|
let $run = 20;
|
|
|
|
while ($run)
|
|
|
|
{
|
|
|
|
connection m$run;
|
|
|
|
reap;
|
|
|
|
disconnect m$run;
|
|
|
|
dec $run;
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Clean up
|
|
|
|
#
|
|
|
|
connection slave;
|
|
|
|
source include/stop_slave.inc;
|
|
|
|
|
|
|
|
disable_warnings;
|
|
|
|
UNINSTALL PLUGIN rpl_semi_sync_slave;
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
UNINSTALL PLUGIN rpl_semi_sync_master;
|
|
|
|
enable_warnings;
|
|
|
|
|
|
|
|
connection slave;
|
|
|
|
source include/start_slave.inc;
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
DROP EVENT ev1;
|
|
|
|
DROP EVENT ev2;
|
|
|
|
DROP TABLE t1;
|
|
|
|
sync_slave_with_master;
|