File: gr_single_primary_stop.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (130 lines) | stat: -rw-r--r-- 4,918 bytes parent folder | download
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