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
|
###############################################################################
# Validate that when a group is being bootstrapped on server start, all
# configured replication channels MUST be started unless skipped
# (through --skip-slave-start).
#
# Test:
# 0. This test requires 2 servers
# server1: single server
# server2: group in single-primary mode
# server2 will replicate from server1.
# 1. Configure a replication channel to replicate from server1
# 2. Restart the server with GR configured to start together with
# server, and set --skip_slave_start=0.
# 3. Wait until server is up.
# Check that GR and replication channel are working.
# 4. Write something on server1 and read it on server2.
# 5. Clean up
###############################################################################
--source include/big_test.inc
--source include/force_restart.inc
--source include/have_group_replication_plugin.inc
--let $rpl_group_replication_single_primary_mode=1
--let $rpl_skip_group_replication_start= 1
--source include/group_replication.inc
--echo
--echo ############################################################
--echo # 1. Configure a replication channel to replicate from server1
--let $rpl_connection_name= server2
--source include/rpl_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
--echo
--echo ############################################################
--echo # 2. Restart the server with GR configured to start together with
--echo # server, and set --skip_slave_start=0.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $allow_rpl_inited= 1
--let $_group_replication_local_address= `SELECT @@GLOBAL.group_replication_local_address`
--let $_group_replication_group_seeds= `SELECT @@GLOBAL.group_replication_group_seeds`
--let $restart_parameters=restart:--group_replication_group_name=$group_replication_group_name --group_replication_local_address=$_group_replication_local_address --group_replication_group_seeds=$_group_replication_group_seeds --group_replication_bootstrap_group=1 --group_replication_start_on_boot=1 --group_replication_single_primary_mode=1 --group_replication_enforce_update_everywhere_checks=0 --skip_slave_start=0
--replace_result $group_replication_group_name GROUP_REPLICATION_GROUP_NAME $_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS $_group_replication_group_seeds GROUP_REPLICATION_GROUP_SEEDS
--source include/restart_mysqld.inc
--echo
--echo ############################################################
--echo # 3. Wait until server is up.
--echo # Check that GR and replication channel are working.
--let $rpl_server_number= 2
--source include/rpl_reconnect.inc
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $group_replication_member_state= ONLINE
--source include/gr_wait_for_member_state.inc
--source include/gr_assert_primary_member.inc
--source include/wait_for_slave_to_start.inc
--echo
--echo ############################################################
--echo # 4. Write something on server1 and read it on server2.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY);
INSERT INTO t1 VALUES (1);
--let $sync_slave_connection= server2
--source include/sync_slave_sql_with_master.inc
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $assert_text= 'There is one row in t1'
--let $assert_cond= [SELECT COUNT(*) count FROM t1, count, 1] = 1
--source include/assert.inc
--echo
--echo ############################################################
--echo # 5. Clean up.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
DROP TABLE t1;
--let $sync_slave_connection= server2
--source include/sync_slave_sql_with_master.inc
--source include/group_replication_end.inc
|