1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#######################################################################################
# WL9426 : In a group of 3 or more servers:-
# Just after stopping/crashing primary server, stop secondary member which is
# probable to become a primary. Test that one of the available secondary member
# becomes a primary member.
# Test :
# 0. This test requires 3 servers
# 1. Create a group replication setup with 3 members
# 2. Crash the primary member
# 3. Wait for that server to go down and become unreachable
# 4. Stop the group replication next probable primary which is secondary
# 5. Bring back the server and set all the required group replication variables
# 6. Test that the remained server which is ONLINE in the group becomes the primary.
# 7. Perform some insert operations on the primary
# 8. Bring back the servers in to group replication setup
# 9. Wait for data to recover and validate the data and cleanup
#######################################################################################
# Don't test this under valgrind, memory leaks will occur
--source include/not_valgrind.inc
--source include/big_test.inc
--source include/have_group_replication_plugin.inc
--let $rpl_server_count= 3
--let $rpl_skip_group_replication_start= 1
--let $rpl_group_replication_single_primary_mode=1
--source include/force_restart.inc
--source include/group_replication.inc
# Start group replication on all the servers
--source include/start_and_bootstrap_group_replication.inc
--let $member1_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
# save this, since it will be used to recover the server later on
--let $local_address_server1= `SELECT @@GLOBAL.group_replication_local_address`
--let $group_seeds_server1= `SELECT @@GLOBAL.group_replication_group_seeds`
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--source include/start_group_replication.inc
--let $rpl_connection_name= server3
--source include/rpl_connection.inc
--source include/start_group_replication.inc
--echo #
--echo # Crash the primary server
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
# Making sure this is the primary server
--let $group_replication_expected_uuid= $member1_uuid
--source include/gr_wait_primary_member_uuid.inc
# We do kill and restart the servers.
--source include/kill_and_restart_mysqld.inc
# reset the group_replication_id var
--let $group_replication_member_id= $member2_uuid
--let $rpl_server_number= 1
--source include/rpl_reconnect.inc
# Check that only 2 member is alive in the group on server 2
--let $rpl_connection_name= server_2
--source include/rpl_connection.inc
--echo # wait for number of alive members to be 2
--let $group_replication_number_of_members= 2
--source include/gr_wait_for_number_of_members.inc
# Check that only 2 member is alive in the group on server 3
--let $rpl_connection_name= server_3
--source include/rpl_connection.inc
--echo # wait for number of alive members to be 2
--let $group_replication_number_of_members= 2
--source include/gr_wait_for_number_of_members.inc
--let $rpl_connection_name= server_1
--source include/rpl_connection.inc
--replace_result $group_seeds_server1 GROUP_SEEDS_SERVER1
--eval SET @@global.group_replication_group_seeds="$group_seeds_server1"
--replace_result $local_address_server1 LOCAL_ADDRESS_SERVER1
--eval SET @@global.group_replication_local_address="$local_address_server1"
--replace_result $group_replication_group_name GROUP_REPLICATION_GROUP_NAME
--eval SET @@global.group_replication_group_name="$group_replication_group_name"
--eval SET @@global.group_replication_enforce_update_everywhere_checks=0
--eval SET @@global.group_replication_single_primary_mode=1
# Stop the secondary member which is probable to become a primary
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--source include/stop_group_replication.inc
--let $rpl_connection_name= server3
--source include/rpl_connection.inc
--let $server3_uuid= `SELECT @@server_uuid`
--let $group_replication_expected_uuid= $server3_uuid
--source include/gr_wait_primary_member_uuid.inc
CREATE TABLE test.t1 ( a int primary key);
INSERT INTO test.t1 VALUES(1);
# Start group replication again in server 1 and server 2
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--source include/start_group_replication.inc
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--source include/start_group_replication.inc
--let $wait_condition=SELECT COUNT(*)=3 FROM performance_schema.replication_group_members where MEMBER_STATE="ONLINE"
--source include/wait_condition.inc
--let $group_replication_expected_uuid= $server3_uuid
--source include/gr_wait_primary_member_uuid.inc
# Connect to primary and cleanup
--let $rpl_connection_name= server3
--source include/rpl_connection.inc
DROP TABLE test.t1;
--source include/group_replication_end.inc
|