############################################################################### # # When changing to single primary mode with no appointed primary, # if a solo member exists with running slave channels, that # member shall be the elected primary. # # Test: # 0. This test needs three servers # 1. server1 start group replication and server2 join # 2. server1 as slave connection to server3 # 3. Set primary election max weight on server2 # 4. Execute action to single primary mode. # It shall succeed, server 1 is the only with slave connections # 5. Confirm that server2 has super_read_only= 1 # 6. Server1 is the primary server on the group # Servers with slave channels take priority over high weight members # 7. Cleanup # ############################################################################### --source include/have_group_replication_plugin.inc --let $rpl_skip_group_replication_start= 1 --let $rpl_server_count= 3 --source include/group_replication.inc --echo --echo # 1. server1 start group replication and server2 join --source include/start_and_bootstrap_group_replication.inc --let $rpl_connection_name= server2 --source include/rpl_connection.inc --source include/start_group_replication.inc --echo --echo # 2. server1 as slave connection to server3 --let $rpl_connection_name= server1 --source include/rpl_connection.inc --replace_result $SERVER_MYPORT_3 SERVER_3_PORT --eval CHANGE REPLICATION SOURCE TO SOURCE_HOST='localhost', SOURCE_USER='root', SOURCE_PORT=$SERVER_MYPORT_3 for channel 'ch3_1' --let $rpl_channel_name='ch3_1' --source include/start_slave.inc --let $rpl_channel_name= --echo --echo # 3. Set primary election max weight on server2 --let $rpl_connection_name= server2 --source include/rpl_connection.inc SET @@GLOBAL.group_replication_member_weight= 100; --echo --echo # 4. Execute action to single primary mode. It shall succeed, server 1 --echo # is the only with slave connections SELECT group_replication_switch_to_single_primary_mode(); --echo --echo # 5. Confirm that server2 has super_read_only= 1 --let $wait_condition= SELECT @@GLOBAL.super_read_only = '1' --source include/wait_condition.inc --echo --echo # 6. Server1 is the primary server on the group --echo # Servers with slave channels take priority over high weight members --let $rpl_connection_name= server2 --source include/rpl_connection.inc --source include/gr_assert_secondary_member.inc --let $rpl_connection_name= server1 --source include/rpl_connection.inc --source include/gr_assert_primary_member.inc --echo --echo # 7. Cleanup STOP SLAVE FOR CHANNEL 'ch3_1'; RESET SLAVE ALL FOR CHANNEL 'ch3_1'; --let $rpl_connection_name= server2 --source include/rpl_connection.inc SET @@GLOBAL.group_replication_member_weight= DEFAULT; --let $rpl_group_replication_single_primary_mode=1 --let $rpl_group_replication_reset_persistent_vars=1 --source include/group_replication_end.inc