Quelle rpl_semisync_ali_issues.result
Sprache: Lisp
include/master-slave.inc
[connection master]
CALL mtr.add_suppression("Failed to start semi-sync ACK receiver thread.*");
CALL mtr.add_suppression("Failed to register slave to semi-sync ACK receiver thread.*");
CALL mtr.add_suppression("Failed to stop ack receiver thread on pthread_join.*");
CALL mtr.add_suppression("Got an error reading communication packets:*");
CALL mtr.add_suppression("Timeout waiting for reply of binlog*");
CALL mtr.add_suppression("slave_read_sync_header*");
CALL mtr.add_suppression("Missing magic number for semi-sync*");
CALL mtr.add_suppression("Got timeout reading communication packets*");
CALL mtr.add_suppression("Failed to call*");
CALL mtr.add_suppression("Execution failed on master*");
CALL mtr.add_suppression("Failed on request_dump()*");
CALL mtr.add_suppression("Semi-sync master failed on*");
CALL mtr.add_suppression("Master command COM_BINLOG_DUMP failed*");
CALL mtr.add_suppression("on master failed*");
CALL mtr.add_suppression("Semi-sync slave net_flush*");
CALL mtr.add_suppression("Failed to flush master info*");
CALL mtr.add_suppression("Request to stop slave SQL Thread received while apply*");
connection master;
[ enable semi-sync on master ] set global rpl_semi_sync_master_enabled = 1;
show variables like 'rpl_semi_sync_master_enabled';
Variable_name Value
rpl_semi_sync_master_enabled ON
connection slave;
[ enable semi-sync on slave ]
stop slave; set global rpl_semi_sync_slave_enabled = 1;
start slave;
show status like 'rpl_semi_sync_slave%';
Variable_name Value
Rpl_semi_sync_slave_send_ack 0
Rpl_semi_sync_slave_status ON
connection master;
CREATE TABLE t1(a INT) ENGINE=InnoDB;
connection slave;
connection master;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connect con3,localhost,root,,;
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
show status like "rpl_semi_sync_master_yes_tx";
Variable_name Value
Rpl_semi_sync_master_yes_tx 1
#########################################
# Test rpl_semi_sync_master_wait_point #
#########################################
# Test after_sync and after_commit first.
#Test after_sync
connection con1; SET GLOBAL rpl_semi_sync_master_timeout = 1000000; SET GLOBAL rpl_semi_sync_master_wait_point= 'AFTER_SYNC'; SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL after_sync_done WAIT_FOR end";
INSERT into t1 values (1);;
connection con2; SET DEBUG_SYNC= "now WAIT_FOR after_sync_done";
connection slave;
#slave can see record (1) after sync slave with master
select * from t1;
a 1
connection con2;
#con2 shouldn't see record (1)
select * from t1;
a SET DEBUG_SYNC= "now SIGNAL end";
connection con1;
connection con1;
select * from t1;
a 1
truncate table t1;
INSERT INTO t1 VALUES (100);
connection slave;
connection con1; SET DEBUG_SYNC= 'reset'; SET DEBUG_SYNC= "commit_before_get_LOCK_log SIGNAL before_fetch_done WAIT_FOR more_queue";
INSERT into t1 VALUES (1);;
connection con2; SET DEBUG_SYNC= "now WAIT_FOR before_fetch_done"; SET DEBUG_SYNC= "after_semisync_queue SIGNAL more_queue";
INSERT INTO t1 VALUES (2);
connection con1;
connection con1; SET DEBUG_SYNC= 'reset'; SET DEBUG_SYNC= "commit_before_get_LOCK_log SIGNAL before_fetch_done WAIT_FOR disable_semisync";
INSERT into t1 VALUES (3);;
connection con2; SET DEBUG_SYNC= "now WAIT_FOR before_fetch_done"; SET GLOBAL rpl_semi_sync_master_enabled= 0; SET DEBUG_SYNC= "now SIGNAL disable_semisync";
connection con1; SET GLOBAL rpl_semi_sync_master_enabled = 1;
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
#Test after_commit
connection con1; SET GLOBAL rpl_semi_sync_master_wait_point= 'AFTER_COMMIT'; SET DEBUG_SYNC= "after_group_after_commit SIGNAL after_commit_done WAIT_FOR end";
INSERT into t1 values (4);;
connection con2; SET DEBUG_SYNC= "now WAIT_FOR after_commit_done";
connection slave;
select * from t1;
a 100 1 2 3 4
connection con2;
select * from t1;
a 100 1 2 3 4 SET DEBUG_SYNC= "now SIGNAL end";
connection con1;
connection con1;
select * from t1;
a 100 1 2 3 4
truncate table t1;
#######################################################
# Test some other options in order to cover the patch #
#######################################################
connection slave;
# Test rpl_semi_sync_slave_trace_level SET GLOBAL rpl_semi_sync_slave_trace_level= 1; SET GLOBAL rpl_semi_sync_slave_trace_level= 16; SET GLOBAL rpl_semi_sync_slave_trace_level= 64; SET GLOBAL rpl_semi_sync_slave_trace_level= 128; SET GLOBAL rpl_semi_sync_slave_trace_level= 32;
connection master;
# Test rpl_semi_sync_master_trace_level SET GLOBAL rpl_semi_sync_master_trace_level= 1; SET GLOBAL rpl_semi_sync_master_trace_level= 16; SET GLOBAL rpl_semi_sync_master_trace_level= 64; SET GLOBAL rpl_semi_sync_master_trace_level= 128; SET GLOBAL rpl_semi_sync_master_trace_level= 32;
# Test rpl_semi_sync_master_timeout SET GLOBAL rpl_semi_sync_master_timeout= 1000; SET GLOBAL rpl_semi_sync_master_timeout= 10000; SET GLOBAL rpl_semi_sync_master_timeout = 1000000;
# Test rpl_semi_sync_slave_kill_conn_timeout SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 10; SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 20; SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 60; SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 5;
############################################
# Test rpl_semi_sync_master_wait_no_slave #
############################################ SET GLOBAL rpl_semi_sync_master_wait_no_slave = 1;
connection slave;
STOP SLAVE IO_THREAD;
include/wait_for_slave_io_to_stop.inc
connection con1; SET GLOBAL rpl_semi_sync_master_timeout = 1000;
INSERT INTO t1 values (1);;
connection con1;
# Rpl_semi_sync_master_no_tx should be non-zero
SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx'
connection slave;
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
connection con1;
INSERT INTO t1 values (2);
connection slave;
connection con1;
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
show status like 'Rpl_semi_sync_master_status';
Variable_name Value
Rpl_semi_sync_master_status ON
connection slave;
STOP SLAVE IO_THREAD;
include/wait_for_slave_io_to_stop.inc
connection con1; SET GLOBAL rpl_semi_sync_master_wait_no_slave= 0; SET GLOBAL rpl_semi_sync_master_timeout= 1000000000;
INSERT INTO t1 values (3);
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 0
show status like 'Rpl_semi_sync_master_status';
Variable_name Value
Rpl_semi_sync_master_status ON
connection slave;
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
connection con1; SET GLOBAL rpl_semi_sync_master_timeout= 10000000; SET GLOBAL rpl_semi_sync_master_wait_no_slave= 1;
INSERT INTO t1 values (4);
connection slave;
connection con1;
show status like 'Rpl_semi_sync_master_status';
Variable_name Value
Rpl_semi_sync_master_status ON
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
##########################################
# Test rpl_semi_sync_slave_delay_master #
##########################################
connection slave; SET GLOBAL rpl_semi_sync_slave_delay_master= 1;
START SLAVE IO_THREAD;
Warnings:
Note 1254 Slave is already running
include/wait_for_slave_io_to_start.inc
connection con1;
INSERT INTO t1 values (3);
include/sync_slave_io_with_master.inc
connection con1;
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
show status like 'Rpl_semi_sync_master_status';
Variable_name Value
Rpl_semi_sync_master_status ON
connection slave;
connection slave;
select * from t1 order by a;
a 1 2 3 3 4
connection con1;
select * from t1 order by a;
a 1 2 3 3 4
connection slave; SET GLOBAL rpl_semi_sync_slave_delay_master = 0;
STOP SLAVE IO_THREAD;
include/wait_for_slave_io_to_stop.inc
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
##########################################################
# Test rpl_semi_sync_master_enabled and new ACK thread #
#########################################################
connection con1; SET GLOBAL rpl_semi_sync_master_enabled = 0;
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
INSERT INTO t1 VALUES (1); SET GLOBAL rpl_semi_sync_master_enabled = 1;
INSERT INTO t1 VALUES (2);
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
# Test failure of select error . SET GLOBAL debug_dbug = 'd,rpl_semisync_simulate_select_error';
INSERT INTO t1 VALUES(3);
connection slave;
connection con1;
# Test failure of pthread_create SET GLOBAL rpl_semi_sync_master_enabled = 0; SET GLOBAL debug_dbug = 'd,rpl_semisync_simulate_create_thread_failure'; SET GLOBAL rpl_semi_sync_master_enabled= ON;
# Test failure of pthread_join SET GLOBAL rpl_semi_sync_master_enabled= OFF;
#
# Failure on registering semisync slave
# SET GLOBAL debug_dbug= 'd,rpl_semisync_simulate_add_slave_failure'; SET GLOBAL rpl_semi_sync_master_enabled= ON;
connection slave;
STOP SLAVE IO_THREAD;
include/wait_for_slave_io_to_stop.inc
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
connection con1; SET GLOBAL debug_dbug='';
connection slave;
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
connection con1;
connection slave;
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 0
##################################################################
# Test fixing of BUG#70669 #
#SLAVE CAN'T CONTINUE REPLICATION AFTER MASTER'S CRASH RECOVERY #
#################################################################
connection con1; SET GLOBAL sync_binlog = 1;
CREATE TABLE t2 (c1 INT);
connection slave;
connection con1;
INSERT INTO t2 values (1);
connection slave;
connection con2;
connection con1;
connection slave;
show tables like 't2';
Tables_in_test (t2)
t2
select * from t2;
c1 1
connection con1;
INSERT INTO t2 VALUES (2);
connection con2;
INSERT INTO t2 VALUES (3);
connection con1;
connection con2;
connection con1; SET GLOBAL sync_binlog = 0;
DROP TABLE t2;
connection con2;
connection slave;
show tables like 't2';
Tables_in_test (t2)
connection con2;
#cleanup
connection master; SET DEBUG_SYNC= 'reset';
disconnect con1;
disconnect con2;
disconnect con3; SET GLOBAL rpl_semi_sync_master_timeout= 10000; SET GLOBAL rpl_semi_sync_master_enabled = 0;
DROP TABLE t1;
connection slave; SET GLOBAL rpl_semi_sync_slave_enabled = 0;
include/rpl_end.inc
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.