-
Notifications
You must be signed in to change notification settings - Fork 4k
/
Copy pathgr_acf_enable_failover.test
132 lines (104 loc) · 5.68 KB
/
gr_acf_enable_failover.test
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
131
132
################################################################################
# Validate that the replication asynchronous connection failover feature cannot
# be enabled when a replication channel is already running.
#
# Test:
# 0. The test requires 4 servers:
# server1: group primary
# server2: group secondary
# server3: group secondary
# server4: replica server
# 1. Deploy a 3 members group in single primary mode.
# 2. Create and start a replication channel.
# 3. Configure replica to manage the asynchronous connection
# to the group.
# 4. Clean up.
################################################################################
--source include/big_test.inc
--source include/have_group_replication_plugin.inc
--let $rpl_skip_group_replication_start= 1
--let $rpl_server_count= 4
--source include/group_replication.inc
--echo
--echo ############################################################
--echo # 1. Deploy a 3 members group in single primary mode.
--let $rpl_connection_name= server1
--source include/connection.inc
--let $server1_uuid= `SELECT @@server_uuid`
--source include/start_and_bootstrap_group_replication.inc
--let $rpl_connection_name= server2
--source include/connection.inc
--source include/start_group_replication.inc
--let $rpl_connection_name= server3
--source include/connection.inc
--source include/start_group_replication.inc
--echo
--echo ############################################################
--echo # 2. Create and start a replication channel.
--let $rpl_connection_name= server4
--source include/connection.inc
--replace_result $SERVER_MYPORT_1 SERVER_1_PORT
--eval CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1', SOURCE_USER='root', SOURCE_AUTO_POSITION=1, SOURCE_PORT=$SERVER_MYPORT_1, SOURCE_CONNECT_RETRY=1, SOURCE_RETRY_COUNT=1 FOR CHANNEL 'ch1'
--let $rpl_channel_name='ch1'
--source include/rpl/start_replica.inc
--let $rpl_channel_name=
--let $assert_text= Verify channel ch1 IO_THREAD is ON and connected to server1
--let $assert_cond= "[SELECT SERVICE_STATE FROM performance_schema.replication_connection_status WHERE channel_name=\'ch1\' AND source_uuid=\'$server1_uuid\', SERVICE_STATE, 1]" = "ON"
--source include/assert.inc
--echo
--echo ############################################################
--echo # 3. Configure replica to manage the asynchronous connection
--echo # to the group.
--let $rpl_connection_name= server4
--source include/connection.inc
--error ER_REPLICA_CHANNEL_MUST_STOP
CHANGE REPLICATION SOURCE TO SOURCE_CONNECTION_AUTO_FAILOVER=1 FOR CHANNEL 'ch1';
--let $rpl_channel_name='ch1'
--source include/rpl/stop_replica.inc
CHANGE REPLICATION SOURCE TO SOURCE_CONNECTION_AUTO_FAILOVER=1 FOR CHANNEL 'ch1';
--source include/rpl/start_replica.inc
--let $rpl_channel_name=
--replace_result $SERVER_MYPORT_2 SERVER_MYPORT_2 $group_replication_group_name GROUP_NAME
--eval SELECT asynchronous_connection_failover_add_managed('ch1', 'GroupReplication', '$group_replication_group_name', '127.0.0.1', $SERVER_MYPORT_2, '', 90, 70)
--let $assert_text= 'There is one row in performance_schema.replication_asynchronous_connection_failover_managed'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover_managed WHERE managed_name="$group_replication_group_name", count, 1] = 1
--source include/assert.inc
--echo "['There are 3 rows in performance_schema.replication_asynchronous_connection_failover']"
--let $wait_condition= SELECT COUNT(*)=3 FROM performance_schema.replication_asynchronous_connection_failover
--source include/wait_condition.inc
--echo
--echo ############################################################
--echo # 4. Clean up.
--let $rpl_connection_name= server4
--source include/connection.inc
--let $rpl_channel_name='ch1'
--source include/rpl/stop_replica.inc
--let $rpl_reset_slave_all= 1
--let $rpl_multi_source= 1
--source include/rpl/reset_replica.inc
--let $rpl_channel_name=
--let $rpl_reset_slave_all=
--let $rpl_multi_source=
--replace_result $group_replication_group_name GROUP_NAME
--eval SELECT asynchronous_connection_failover_delete_managed('ch1', '$group_replication_group_name')
--let $assert_text= 'There are no rows in performance_schema.replication_asynchronous_connection_failover'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover, count, 1] = 0
--source include/assert.inc
--let $assert_text= 'There are no rows in performance_schema.replication_asynchronous_connection_failover_managed'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover_managed, count, 1] = 0
--source include/assert.inc
SET SESSION sql_log_bin = 0;
call mtr.add_suppression("The source .* for channel 'ch1' has joined the group .*, and so added its entry into replication_asynchronous_connection_failover table.");
call mtr.add_suppression("The group .* for the channel .* has been removed, and so removed its entry from replication_asynchronous_connection_failover_managed and all the group members from replication_asynchronous_connection_failover table.");
call mtr.add_suppression("The group .* for the channel .* has been added, and so added its entry in replication_asynchronous_connection_failover_managed and source to replication_asynchronous_connection_failover table.");
SET SESSION sql_log_bin = 1;
--let $rpl_connection_name= server3
--source include/connection.inc
--source include/stop_group_replication.inc
--let $rpl_connection_name= server2
--source include/connection.inc
--source include/stop_group_replication.inc
--let $rpl_connection_name= server1
--source include/connection.inc
--source include/stop_group_replication.inc
--source include/group_replication_end.inc