polardbxengine/mysql-test/suite/xcluster/t/revise_event.test

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;