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
|