125 lines
4.3 KiB
Plaintext
125 lines
4.3 KiB
Plaintext
#
|
|
# Feature: revise end_pos & relay log flag & timestamp in consensus log
|
|
# Testcase:
|
|
# 0. normal trx, large trx, large event
|
|
# 1. leader transfer
|
|
# 2. configure change
|
|
# 3. learner with replication lag
|
|
# 4. learner shutdown and restart
|
|
#
|
|
--source include/have_debug_new.inc
|
|
|
|
--connect (conn1,127.0.0.1,root,,test,$MYPORT_1)
|
|
flush local logs;
|
|
--connect (conn2,127.0.0.1,root,,test,$MYPORT_2)
|
|
flush local logs;
|
|
--connect (conn3,127.0.0.1,root,,test,$MYPORT_3)
|
|
flush local logs;
|
|
|
|
--connection conn1
|
|
create table t1 (id int);
|
|
insert into t1 values(1);
|
|
|
|
let $MYPORT_CONSENSUS_1 = query_get_value("select $MYPORT_1+40 as c1", c1, 1);
|
|
let $MYPORT_CONSENSUS_2 = query_get_value("select $MYPORT_2+40 as c1", c1, 1);
|
|
let $MYPORT_CONSENSUS_3 = query_get_value("select $MYPORT_3+40 as c1", c1, 1);
|
|
|
|
--replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3
|
|
#eval change consensus_follower "127.0.0.1:$MYPORT_CONSENSUS_3" to consensus_learner;
|
|
eval call dbms_consensus.downgrade_follower("127.0.0.1:$MYPORT_CONSENSUS_3");
|
|
--replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3
|
|
#eval drop consensus_learner "127.0.0.1:$MYPORT_CONSENSUS_3";
|
|
eval call dbms_consensus.drop_learner("127.0.0.1:$MYPORT_CONSENSUS_3");
|
|
|
|
insert into t1 values(1);
|
|
#change consensus_leader to 2;
|
|
--replace_result $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2
|
|
eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_2");
|
|
|
|
--connection conn2
|
|
--enable_reconnect
|
|
|
|
let $wait_condition= select role='Leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local;
|
|
--source include/wait_condition.inc
|
|
|
|
--let $master_binlog2= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
insert into t1 values(1);
|
|
--replace_result $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1
|
|
#change consensus_leader to 1;
|
|
eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_1");
|
|
|
|
--connection conn3
|
|
--enable_reconnect
|
|
--let $master_binlog3= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
|
|
--connection conn1
|
|
--enable_reconnect
|
|
|
|
let $wait_condition= select role='Leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local;
|
|
--source include/wait_condition.inc
|
|
|
|
create table t2 (id int, data longblob);
|
|
# test large trx
|
|
begin;
|
|
insert into t2 values(1, repeat('a', 300*1024));
|
|
insert into t2 values(1, repeat('a', 300*1024));
|
|
insert into t2 values(1, repeat('a', 300*1024));
|
|
insert into t2 values(1, repeat('a', 300*1024));
|
|
commit;
|
|
#test large event
|
|
insert into t2 values(1, repeat('a', 3*1024*1024));
|
|
|
|
sleep 5;
|
|
insert into t1 values(1);
|
|
--replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3
|
|
#eval add consensus_learner "127.0.0.1:$MYPORT_CONSENSUS_3";
|
|
eval call dbms_consensus.add_learner("127.0.0.1:$MYPORT_CONSENSUS_3");
|
|
--replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3
|
|
#eval change consensus_learner "127.0.0.1:$MYPORT_CONSENSUS_3" to consensus_follower;
|
|
eval call dbms_consensus.upgrade_learner("127.0.0.1:$MYPORT_CONSENSUS_3");
|
|
insert into t1 values(1);
|
|
|
|
--source include/wait_follower_catchup.inc
|
|
|
|
--replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3
|
|
eval set global consensus_flow_control="127.0.0.1:$MYPORT_CONSENSUS_3 -2";
|
|
|
|
# server 3 restart
|
|
--connection conn3
|
|
--enable_reconnect
|
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.3.expect
|
|
shutdown;
|
|
|
|
--connection conn1
|
|
insert into t1 values(1);
|
|
sleep 5;
|
|
|
|
set global consensus_flow_control="";
|
|
|
|
insert into t1 values(1);
|
|
sleep 1;
|
|
|
|
--source include/wait_follower_catchup.inc
|
|
|
|
# just show linenumbers in result to make sure mysqlbinlog parse all binlog events successfully
|
|
--connection conn1
|
|
--enable_reconnect
|
|
--let $MYSQLD_DATADIR= `select @@datadir;`
|
|
--let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
--exec $MYSQL_BINLOG --debug-consensuslog-revise-check=1 --verbose $MYSQLD_DATADIR/$master_binlog | wc -l
|
|
--connection conn2
|
|
--enable_reconnect
|
|
--let $MYSQLD_DATADIR= `select @@datadir;`
|
|
--let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
--exec $MYSQL_BINLOG --debug-consensuslog-revise-check=1 --verbose $MYSQLD_DATADIR/$master_binlog | wc -l
|
|
--connection conn3
|
|
--enable_reconnect
|
|
--let $MYSQLD_DATADIR= `select @@datadir;`
|
|
--let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
--exec $MYSQL_BINLOG --debug-consensuslog-revise-check=1 --verbose $MYSQLD_DATADIR/$master_binlog | wc -l
|
|
|
|
--connection default
|
|
--enable_reconnect
|
|
drop table t1;
|
|
drop table t2;
|