--source include/have_debug_new.inc --echo # --echo # ---- test Leader ---- --echo # let $learner_base_port = query_get_value("select $MYPORT_1+50 as c1", c1, 1); --source include/start_new_learner.inc --connection default flush local logs; flush local logs; #eval add consensus_learner $learner_cluster_info; --replace_result $learner_cluster_info learner_cluster_info eval call dbms_consensus.add_learner($learner_cluster_info); create table t1(id int); insert into t1 values (1); --sleep 2 --connect (learner,127.0.0.1,root,,test,$learner_port) --source include/wait_apply_catchup.inc --connection default #eval drop consensus_learner $learner_cluster_info; --replace_result $learner_cluster_info learner_cluster_info eval call dbms_consensus.drop_learner($learner_cluster_info); --let $MASTER_BINLOG= query_get_value(SHOW MASTER STATUS, File, 1) --let $MASTER_POS= query_get_value(SHOW MASTER STATUS, Position, 1) --connection learner #change consensus_node to consensus_force_single_mode; call dbms_consensus.force_single_mode(); let $wait_condition= select role='Leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local; --source include/wait_condition.inc --replace_result $MYPORT_1 MYPORT_1 $MASTER_BINLOG MASTER_BINLOG $MASTER_POS MASTER_POS eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MYPORT_1, MASTER_USER='root', MASTER_PASSWORD='', MASTER_LOG_FILE='$MASTER_BINLOG', MASTER_LOG_POS=$MASTER_POS, MASTER_AUTO_POSITION=0 FOR CHANNEL 'testsync'; start slave for channel "testsync"; --connection default insert into t1 values (2); select * from t1; --let $MASTER_BINLOG= query_get_value(SHOW MASTER STATUS, File, 1) --let $MASTER_POS= query_get_value(SHOW MASTER STATUS, Position, 1) --connection learner --replace_result $MASTER_BINLOG MASTER_BINLOG $MASTER_POS MASTER_POS eval SELECT MASTER_POS_WAIT('$MASTER_BINLOG', $MASTER_POS, 0, "testsync") >= 0; select * from t1; --connection default insert into t1 values (3); flush local logs; #purge force consensus_log before 10000000; call dbms_consensus.force_purge_log(10000000); insert into t1 values (4); flush local logs; insert into t1 values (5); insert into t1 values (6); select * from t1; --let $MASTER_BINLOG= query_get_value(SHOW MASTER STATUS, File, 1) --let $MASTER_POS= query_get_value(SHOW MASTER STATUS, Position, 1) --connection learner --replace_result $MASTER_BINLOG MASTER_BINLOG $MASTER_POS MASTER_POS eval SELECT MASTER_POS_WAIT('$MASTER_BINLOG', $MASTER_POS, 0, "testsync") >= 0; select * from t1; stop slave for channel "testsync"; --echo # --echo # ---- test Follower ---- --echo # --connect (foll,127.0.0.1,root,,test,$MYPORT_2) flush local logs; flush local logs; let $learner_base_port = query_get_value("select $MYPORT_1+51 as c1", c1, 1); --source include/start_new_learner.inc --connection default #eval add consensus_learner $learner_cluster_info; --replace_result $learner_cluster_info learner_cluster_info eval call dbms_consensus.add_learner($learner_cluster_info); insert into t1 values (1); --sleep 2 --connect (learner2,127.0.0.1,root,,test,$learner_port) --source include/wait_apply_catchup.inc --connection default #eval drop consensus_learner $learner_cluster_info; --replace_result $learner_cluster_info learner_cluster_info eval call dbms_consensus.drop_learner($learner_cluster_info); insert into t1 values (2); # not in learner2 --connection foll --source include/wait_apply_catchup.inc --let $MASTER_BINLOG= query_get_value(SHOW MASTER STATUS, File, 1) --let $MASTER_POS= query_get_value(SHOW MASTER STATUS, Position, 1) --connection learner2 #change consensus_node to consensus_force_single_mode; call dbms_consensus.force_single_mode(); let $wait_condition= select role='Leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local; --source include/wait_condition.inc --replace_result $MYPORT_2 MYPORT_2 $MASTER_BINLOG MASTER_BINLOG $MASTER_POS MASTER_POS eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MYPORT_2, MASTER_USER='root', MASTER_PASSWORD='', MASTER_LOG_FILE='$MASTER_BINLOG', MASTER_LOG_POS=$MASTER_POS, MASTER_AUTO_POSITION=0 FOR CHANNEL 'testsync'; start slave for channel "testsync"; --connection default insert into t1 values (3); --connection foll --source include/wait_apply_catchup.inc select * from t1; --let $MASTER_BINLOG= query_get_value(SHOW MASTER STATUS, File, 1) --let $MASTER_POS= query_get_value(SHOW MASTER STATUS, Position, 1) --connection learner2 --replace_result $MASTER_BINLOG MASTER_BINLOG $MASTER_POS MASTER_POS eval SELECT MASTER_POS_WAIT('$MASTER_BINLOG', $MASTER_POS, 0, "testsync") >= 0; select * from t1; --connection default insert into t1 values (4); --connection foll --source include/wait_apply_catchup.inc flush local logs; #purge force consensus_log before 10000000; call dbms_consensus.force_purge_log(10000000); --connection default insert into t1 values (5); --connection foll --source include/wait_apply_catchup.inc flush local logs; --connection default insert into t1 values (6); insert into t1 values (7); --connection foll --source include/wait_apply_catchup.inc select * from t1; --let $MASTER_BINLOG= query_get_value(SHOW MASTER STATUS, File, 1) --let $MASTER_POS= query_get_value(SHOW MASTER STATUS, Position, 1) --connection learner2 --replace_result $MASTER_BINLOG MASTER_BINLOG $MASTER_POS MASTER_POS eval SELECT MASTER_POS_WAIT('$MASTER_BINLOG', $MASTER_POS, 0, "testsync") >= 0; select * from t1; --connection default drop table t1; let $learner_base_port = query_get_value("select $MYPORT_1+50 as c1", c1, 1); --source include/stop_new_learner.inc let $learner_base_port = query_get_value("select $MYPORT_1+51 as c1", c1, 1); --source include/stop_new_learner.inc