-
Notifications
You must be signed in to change notification settings - Fork 4k
/
Copy pathgr_acf_disable_failover.test
124 lines (99 loc) · 5.25 KB
/
gr_acf_disable_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
################################################################################
# Validate that the replication asynchronous connection failover feature cannot
# be disabled on running channels.
#
# Test:
# 0. The test requires 4 servers:
# server1: group primary
# server2: group secondary
# server3: replica server
# 1. Deploy a 2 members group in single primary mode.
# 2. Configure replica to manage the asynchronous connection
# to group.
# 3. Try disable the SOURCE_CONNECTION_AUTO_FAILOVER option
# without stopping the channel.
# 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= 3
--source include/group_replication.inc
--echo
--echo ############################################################
--echo # 1. Deploy a 2 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
--echo
--echo ############################################################
--echo # 2. Configure replica to manage the asynchronous connection
--echo # to group.
--let $rpl_connection_name= server3
--source include/connection.inc
--replace_result $SERVER_MYPORT_1 SERVER_MYPORT_1 $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_1, '', 90, 70)
--let $assert_text= 'There is one row in performance_schema.replication_asynchronous_connection_failover for server1'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover WHERE port=$SERVER_MYPORT_1, count, 1] = 1
--source include/assert.inc
--let $assert_text= 'There is one row in performance_schema.replication_asynchronous_connection_failover_managed for server1'
--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
--echo ############################################################
--echo # 2. Create and start the managed channel.
--let $rpl_connection_name= server3
--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_CONNECTION_AUTO_FAILOVER=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
--let $wait_condition= SELECT COUNT(*)=2 FROM performance_schema.replication_asynchronous_connection_failover
--source include/wait_condition.inc
--echo
--echo ############################################################
--echo # 3. Try disable the SOURCE_CONNECTION_AUTO_FAILOVER option
--echo # without stopping the channel.
--let $rpl_connection_name= server3
--source include/connection.inc
--error ER_REPLICA_CHANNEL_MUST_STOP
CHANGE REPLICATION SOURCE TO SOURCE_CONNECTION_AUTO_FAILOVER=0 FOR CHANNEL 'ch1';
--let $assert_text= Verify replica_monitor thread is running
--let $assert_cond= "[select count(*) FROM performance_schema.threads where NAME=\"thread/sql/replica_monitor\"]" = 1;
--source include/assert.inc
--echo
--echo ############################################################
--echo # 4. Clean up.
--let $rpl_connection_name= server3
--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
--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