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); # start with leader follower1 follower2 # add learner1 let $learner_base_port = query_get_value("select $MYPORT_1+50 as c1", c1, 1); --source include/start_new_learner.inc let $learner1_cluster_info = $learner_cluster_info; #add consensus_learner '$learner1_cluster_info'; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.add_learner($learner1_cluster_info); # add learner2 let $learner_base_port = query_get_value("select $MYPORT_1+51 as c1", c1, 1); --source include/start_new_learner.inc let $learner2_cluster_info = $learner_cluster_info; #add consensus_learner '$learner2_cluster_info'; --replace_result $learner2_cluster_info learner2_cluster_info eval call dbms_consensus.add_learner($learner2_cluster_info); select server_id, role from information_schema.alisql_cluster_global; # learner1 to follower3 #change consensus_learner '$learner1_cluster_info' to consensus_follower; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.upgrade_learner($learner1_cluster_info); select server_id, role from information_schema.alisql_cluster_global; # drop learner2 #drop consensus_learner '$learner2_cluster_info'; --replace_result $learner2_cluster_info learner2_cluster_info eval call dbms_consensus.drop_learner($learner2_cluster_info); select server_id, role from information_schema.alisql_cluster_global; #change consensus_node '$learner1_cluster_info' consensus_force_sync true consensus_election_weight 5; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.configure_follower($learner1_cluster_info, 5, 1); #change consensus_follower '$learner1_cluster_info' to consensus_learner; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.downgrade_follower($learner1_cluster_info); #eval change consensus_node '$learner1_cluster_info' consensus_learner_source '127.0.0.1:$MYPORT_CONSENSUS_1' consensus_use_applyindex true; --replace_result $learner1_cluster_info learner1_cluster_info $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 eval call dbms_consensus.configure_learner($learner1_cluster_info, "127.0.0.1:$MYPORT_CONSENSUS_1", 1); #change consensus_learner for consensus_meta; call dbms_consensus.refresh_learner_meta(); # drop learner2 #drop consensus_learner '$learner1_cluster_info'; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.drop_learner($learner1_cluster_info); # add follower #add consensus_follower '$learner1_cluster_info'; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.add_follower($learner1_cluster_info); # drop follower #drop consensus_follower '$learner1_cluster_info'; --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.downgrade_follower($learner1_cluster_info); --replace_result $learner1_cluster_info learner1_cluster_info eval call dbms_consensus.drop_learner($learner1_cluster_info); select server_id, role from information_schema.alisql_cluster_global; --replace_result $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2 #eval change consensus_leader to "127.0.0.1:$MYPORT_CONSENSUS_2"; eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_2"); # show alisql_cluster_consensus_membership_change from new leader --connect (conn2,127.0.0.1,root,,test,$MYPORT_2) --connection conn2 # wait leader election let $wait_condition= select role='Leader' from information_schema.alisql_cluster_local; --source include/wait_condition.inc --replace_result $learner1_cluster_info learner1_cluster_info $learner2_cluster_info learner2_cluster_info $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2 select command from information_schema.alisql_cluster_consensus_membership_change; --replace_result $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 #eval change consensus_leader to "127.0.0.1:$MYPORT_CONSENSUS_1"; eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_1"); --connect (conn1,127.0.0.1,root,,test,$MYPORT_1) --connection conn1 # wait leader election let $wait_condition= select role='Leader' from information_schema.alisql_cluster_local; --source include/wait_condition.inc --replace_result $learner1_cluster_info learner1_cluster_info $learner2_cluster_info learner2_cluster_info $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2 select command from information_schema.alisql_cluster_consensus_membership_change; # show from follower --connect (conn3,127.0.0.1,root,,test,$MYPORT_3) --connection conn3 --replace_result $learner1_cluster_info learner1_cluster_info $learner2_cluster_info learner2_cluster_info $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2 select command from information_schema.alisql_cluster_consensus_membership_change; --connection conn1 select server_id, role from information_schema.alisql_cluster_global; # cleanup 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