File: gr_acf_receiver_member_join.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 (190 lines) | stat: -rw-r--r-- 10,816 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
###############################################################################
# Validate that, on single-primary mode:
#  * the replication failover channels configuration of the member that
#    bootstraps a group, becomes the group configuration.
#  * a member that joins the group, overrides its configuration with the
#    one of the group.
#
# Test:
#   0. This test requires two servers
#   1. Add a single server and managed sources to failover
#      channel 'ch1' to server1.
#   2. Bootstrap the group on server1, all failover configuration
#      will be preserved.
#   3. Join server2 to the group, it will replace its failover
#      configuration.
#   4. Clean up
###############################################################################
--source include/have_group_replication_plugin.inc
--let $rpl_skip_group_replication_start= 1
--let $rpl_group_replication_single_primary_mode=1
--source include/group_replication.inc


--echo
--echo ############################################################
--echo # 1. Add a single server and managed sources to failover
--echo #    channel 'ch1' to server1.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc

CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.1', SOURCE_USER='root', SOURCE_AUTO_POSITION=1, SOURCE_CONNECTION_AUTO_FAILOVER=1, SOURCE_PORT=3306, SOURCE_CONNECT_RETRY=1, SOURCE_RETRY_COUNT=1 FOR CHANNEL 'ch1';
SELECT asynchronous_connection_failover_add_source('ch1', '10.0.0.1', 3306, '', 50);
SELECT asynchronous_connection_failover_add_managed('ch1', 'GroupReplication', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '10.0.0.2', 3306, '', 90, 70);

--let $assert_text= 'There are 2 rows in performance_schema.replication_asynchronous_connection_failover'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover, count, 1] = 2
--source include/assert.inc

--let $assert_text= 'The version of replication_asynchronous_connection_failover must be 2'
--let $assert_cond= [SELECT version FROM performance_schema.replication_group_configuration_version WHERE name=\'replication_asynchronous_connection_failover\', version, 1] = 2
--source include/assert.inc

--let $assert_text= 'There is 1 row in performance_schema.replication_asynchronous_connection_failover_managed'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover_managed, count, 1] = 1
--source include/assert.inc

--let $assert_text= 'The version of replication_asynchronous_connection_failover_managed must be 1'
--let $assert_cond= [SELECT version FROM performance_schema.replication_group_configuration_version WHERE name=\'replication_asynchronous_connection_failover_managed\', version, 1] = 1
--source include/assert.inc

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER must be enabled on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER=1 must be persisted on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM mysql.slave_master_info WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

SELECT * FROM performance_schema.replication_asynchronous_connection_failover;

SELECT * FROM performance_schema.replication_asynchronous_connection_failover_managed;

SELECT * FROM performance_schema.replication_group_configuration_version WHERE name LIKE 'replication_asynchronous_connection_failover%';


--echo
--echo ############################################################
--echo # 2. Bootstrap the group on server1, all failover configuration
--echo #    will be preserved.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc

# Do not automatically start failover channels.
SELECT group_replication_disable_member_action("mysql_start_failover_channels_if_primary", "AFTER_PRIMARY_ELECTION");

--source include/start_and_bootstrap_group_replication.inc

--let $assert_text= The action mysql_start_failover_channels_if_primary must be disabled
--let $assert_cond= [SELECT enabled FROM performance_schema.replication_group_member_actions WHERE name=\'mysql_start_failover_channels_if_primary\' AND event=\'AFTER_PRIMARY_ELECTION\', enabled, 1] = 0
--source include/assert.inc

--let $assert_text= 'There are 2 rows in performance_schema.replication_asynchronous_connection_failover'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover, count, 1] = 2
--source include/assert.inc

--let $assert_text= 'The version of replication_asynchronous_connection_failover must be 2'
--let $assert_cond= [SELECT version FROM performance_schema.replication_group_configuration_version WHERE name=\'replication_asynchronous_connection_failover\', version, 1] = 2
--source include/assert.inc

--let $assert_text= 'There is 1 row in performance_schema.replication_asynchronous_connection_failover_managed'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover_managed, count, 1] = 1
--source include/assert.inc

--let $assert_text= 'The version of replication_asynchronous_connection_failover_managed must be 1'
--let $assert_cond= [SELECT version FROM performance_schema.replication_group_configuration_version WHERE name=\'replication_asynchronous_connection_failover_managed\', version, 1] = 1
--source include/assert.inc

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER must be enabled on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER=1 must be persisted on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM mysql.slave_master_info WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

SELECT * FROM performance_schema.replication_asynchronous_connection_failover;

SELECT * FROM performance_schema.replication_asynchronous_connection_failover_managed;

SELECT * FROM performance_schema.replication_group_configuration_version WHERE name LIKE 'replication_asynchronous_connection_failover%';


--echo
--echo ############################################################
--echo # 3. Join server2 to the group, it will replace its failover
--echo #    configuration.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc

CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.1', SOURCE_USER='root', SOURCE_AUTO_POSITION=1, SOURCE_CONNECTION_AUTO_FAILOVER=0, SOURCE_PORT=3306, SOURCE_CONNECT_RETRY=1, SOURCE_RETRY_COUNT=1 FOR CHANNEL 'ch1';
SELECT asynchronous_connection_failover_add_source('ch9', '10.0.0.19', 3306, '', 50);
SELECT asynchronous_connection_failover_add_source('ch9', '10.0.0.20', 3306, '', 50);
SELECT asynchronous_connection_failover_add_managed('ch9', 'GroupReplication', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '10.0.0.29', 3306, '', 90, 70);

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER=0 must be persisted on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM mysql.slave_master_info WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=0, count, 1] = 1
--source include/assert.inc

--source include/start_group_replication.inc

--let $assert_text= The action mysql_start_failover_channels_if_primary must be disabled
--let $assert_cond= [SELECT enabled FROM performance_schema.replication_group_member_actions WHERE name=\'mysql_start_failover_channels_if_primary\' AND event=\'AFTER_PRIMARY_ELECTION\', enabled, 1] = 0
--source include/assert.inc

--let $assert_text= 'There are 2 rows in performance_schema.replication_asynchronous_connection_failover'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover, count, 1] = 2
--source include/assert.inc

--let $assert_text= 'The version of replication_asynchronous_connection_failover must be 2'
--let $assert_cond= [SELECT version FROM performance_schema.replication_group_configuration_version WHERE name=\'replication_asynchronous_connection_failover\', version, 1] = 2
--source include/assert.inc

--let $assert_text= 'There is 1 row in performance_schema.replication_asynchronous_connection_failover_managed'
--let $assert_cond= [SELECT COUNT(*) count FROM performance_schema.replication_asynchronous_connection_failover_managed, count, 1] = 1
--source include/assert.inc

--let $assert_text= 'The version of replication_asynchronous_connection_failover_managed must be 1'
--let $assert_cond= [SELECT version FROM performance_schema.replication_group_configuration_version WHERE name=\'replication_asynchronous_connection_failover_managed\', version, 1] = 1
--source include/assert.inc

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER must be enabled for ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

SELECT * FROM performance_schema.replication_asynchronous_connection_failover;

SELECT * FROM performance_schema.replication_asynchronous_connection_failover_managed;

SELECT * FROM performance_schema.replication_group_configuration_version WHERE name LIKE 'replication_asynchronous_connection_failover%';

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER must be enabled on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

--let $assert_text= 'SOURCE_CONNECTION_AUTO_FAILOVER=1 must be persisted on ch1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM mysql.slave_master_info WHERE CHANNEL_NAME="ch1" AND SOURCE_CONNECTION_AUTO_FAILOVER=1, count, 1] = 1
--source include/assert.inc

--echo
--echo ############################################################
--echo # 4. Clean up.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--let $rpl_channel_name='ch1'
--let $rpl_multi_source= 1
--let $rpl_reset_slave_all= 1
--source include/rpl_reset_slave.inc
--let $rpl_channel_name=
--let $rpl_multi_source=

--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $rpl_channel_name='ch1'
--let $rpl_multi_source= 1
--let $rpl_reset_slave_all= 1
--source include/rpl_reset_slave.inc
--let $rpl_channel_name=
--let $rpl_multi_source=

--source include/group_replication_end.inc