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

166 lines
4.5 KiB
Plaintext

--source include/have_log_bin.inc
--source include/have_gtid.inc
--source include/have_debug_sync_new.inc
call mtr.add_suppression("The consensus follower is not allowed to to do current operation.");
--source include/paxos.inc
# connect 3 server. must have test database
--connect (conn1,127.0.0.1,root,,test,$MYPORT_1)
--connect (conn2,127.0.0.1,root,,test,$MYPORT_2)
--connect (conn3,127.0.0.1,root,,test,$MYPORT_3)
#1. basic write
#leader
--connection conn1
create table t(id int);
insert into t values(0);
--replace_column 2 # 5 #
show master status;
--replace_column 1 #
select * from mysql.gtid_executed;
--source include/wait_follower_catchup.inc
--connection conn2
--replace_column 2 # 5 #
show master status;
--replace_column 1 #
select * from mysql.gtid_executed;
--connection conn1
flush logs;
--replace_column 1 #
select * from mysql.gtid_executed;
drop table t;
#2. switch role
--connection conn1
create table t(id int);
insert into t values(0);
#change consensus_leader to 3;
--replace_result $PAXOS_PORT_3 PAXOS_PORT_3
--eval call dbms_consensus.change_leader("127.0.0.1:$PAXOS_PORT_3")
--connection conn3
--source include/wait_until_connected_again.inc
insert into t values(1);
--replace_column 2 # 5 #
show master status;
--source include/wait_follower_catchup.inc
#change consensus_leader to 1;
--replace_result $PAXOS_PORT_1 PAXOS_PORT_1
--eval call dbms_consensus.change_leader("127.0.0.1:$PAXOS_PORT_1");
--connect (conn4,127.0.0.1,root,,test,$MYPORT_1)
--connection conn4
--source include/wait_until_connected_again.inc
--replace_column 2 # 5 #
show master status;
drop table t;
#3 crash recovery
--connection conn4
create table t(id int);
insert into t values(0);
--source include/wait_follower_catchup.inc
# Request a crash, and restart the server.
set debug='+d,crash_commit_before';
# Write file to make mysql-test-run.pl restart the server
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--error 2013
insert into t values(1);
--disconnect conn1
--disconnect conn4
connection default;
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect
--replace_column 2 # 5 #
show master status;
drop table t;
#4. leader degrade slow
connection default;
create table t(c text);
insert into t values('kongzhi');
--source include/wait_follower_catchup.inc
set global max_binlog_size=4096;
set debug="+d,simulate_leader_degrade_slow";
#--send change consensus_leader to 2
--replace_result $PAXOS_PORT_2 PAXOS_PORT_2
--send_eval call dbms_consensus.change_leader("127.0.0.1:$PAXOS_PORT_2");
connection conn2;
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect
# old leader will store the paxos log in binlog mode
insert into t values(repeat('1', 1024));
insert into t values(repeat('1', 1024));
insert into t values(repeat('1', 1024));
--replace_column 2 # 5 #
show master status;
connection default;
reap;
--enable_reconnect
--source include/wait_until_connected_again_old.inc
--disable_reconnect
#flush logs;
--replace_column 2 # 5 #
show master status;
--sleep 10
--replace_column 2 # 5 #
show master status;
connection conn2;
set global max_binlog_size=(1024 * 1024 * 1024);
drop table t;
#5. duplicate gtid
#connection default;
#set global debug="+d, simulate_duplicate_gtid";
#connection conn2;
#create table t(id int);
#insert into t values(0);
#--source include/wait_follower_catchup.inc
#drop table t;
#connection default;
#set global debug="-d, simulate_duplicate_gtid";
#6. truncate log
connection conn2;
#change consensus_leader to 1;
--replace_result $PAXOS_PORT_1 PAXOS_PORT_1
--eval call dbms_consensus.change_leader("127.0.0.1:$PAXOS_PORT_1")
connection default;
--source include/wait_until_connected_again.inc
create table t(id int);
insert into t values(0);
--replace_column 2 # 5 #
show master status;
set global debug="+d, skip_consensus_fifo_cache";
set global debug="+d, crash_before_large_trx_commit_early";
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--error 2013
#this will be truncated
insert into t values(1);
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect
--replace_column 2 # 5 #
show master status;
#bug22962305 init gtid set scan all binlog files
flush logs;
insert into t values(2);
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect
#bug23162444 gtid error before the cluster has elected a leader
--exec cat $MYSQLTEST_VARDIR/log/mysqld.1.err | grep "Can't find the log has the commit index 0" | wc -l
drop table t;