config root man

Current Path : /usr/opt/mysql57/mysql-test/suite/group_replication/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //usr/opt/mysql57/mysql-test/suite/group_replication/t/gr_recovery_reconnection_options.test

################################################################################
# This test evaluates the functioning of the recovery reconnection options.
# 1) It sets the retry and reconnection time variables and checks their values
# 2) It verifies that the reconnection interval is respected by:
#
# Test:
#   0. The test requires three servers.
#   1. Starting 2 members and some data with no replication user for recovery
#   2. Set invalid recovery retries and check its value on 3rd member. Set invalid
#      recovery reconnection interval and check its value on 3rd member.
#      Start 3rd member with a reconnection interval of 1 minute and 3 retries.
#   3. With a configured recovery user, start member 3 and watch its state after
#      10 seconds. Recovery will fail to connect but it wont exhaust its 3
#      configured retries so the state will still be "RECOVERING".
#   4. Configure replication users on the available donors.
#   5. Watch the member turning online after 60 seconds as on the last retry
#      after the sleep the donors are now configured to accept the connection.
#   6. Clean up.
################################################################################

--source include/big_test.inc
--let $group_replication_group_name=c827dcd0-2646-11e5-867f-0800200c9a66
--source ../inc/have_group_replication_plugin.inc
--let $rpl_skip_group_replication_start= 1
--let $rpl_server_count= 3
--source ../inc/group_replication.inc

--let $recovery_user= recovery_user
--let $recovery_password= recovery_password

--echo #
--echo # Start a group with 2 members and some data but no replication user
--echo #

--connection server1
--source ../inc/start_and_bootstrap_group_replication.inc

#insert some data
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);

--echo #
--echo # Add some extra data on server 2 and then start group replication
--echo # Create a replication user so recovery can connect
--echo #

--connection server2
--source include/start_group_replication.inc

--echo #
--echo # On member 3:
--echo # Set the number of recovery retries and check its value
--echo # Set the recovery reconnection interval and check its value
--echo #

--connection server3

SET SESSION sql_log_bin= 0;
call mtr.add_suppression("There was an error when connecting to the donor*");
call mtr.add_suppression("For details please check performance_schema.replication_connection_status table and error log messages of Slave I/O for channel group_replication_recovery.");
SET SESSION sql_log_bin= 1;

SET @debug_save_rec_int= @@GLOBAL.group_replication_recovery_reconnect_interval;
SET @debug_save_retries= @@GLOBAL.group_replication_recovery_retry_count;

# Set invalid values. These should fail.
--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL group_replication_recovery_reconnect_interval= NULL;

--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL group_replication_recovery_reconnect_interval= "a";

--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL group_replication_recovery_reconnect_interval= 1.2;

--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL group_replication_recovery_retry_count= NULL;

--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL group_replication_recovery_retry_count= "a";

--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL group_replication_recovery_retry_count= 1.2;

# Set out of range values. These must truncate.
--disable_warnings
SET GLOBAL group_replication_recovery_reconnect_interval= -1;
--enable_warnings
--let $assert_text= The value for group_replication_recovery_reconnect_interval should be 0
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_recovery_reconnect_interval]" = 0
--source include/assert.inc

--disable_warnings
SET GLOBAL group_replication_recovery_reconnect_interval= 31536001;
--enable_warnings
--let $assert_text= The value for group_replication_recovery_reconnect_interval should be 31536000
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_recovery_reconnect_interval]" = 31536000
--source include/assert.inc

--disable_warnings
SET GLOBAL group_replication_recovery_retry_count= -1;
--enable_warnings
--let $assert_text= The value for group_replication_recovery_retry_count should be 0
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_recovery_retry_count]" = 0
--source include/assert.inc

--disable_warnings
SET GLOBAL group_replication_recovery_retry_count= 31536001;
--enable_warnings
--let $assert_text= The value for group_replication_recovery_retry_count should be 31536000
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_recovery_retry_count]" = 31536000
--source include/assert.inc

# Set the retry count to 3, one for each possible donor, plus one
--eval SET GLOBAL group_replication_recovery_retry_count= 3

--let $assert_text= The value of the recovery retry count should be 3
--let $assert_cond= "[SELECT @@group_replication_recovery_retry_count]" = "3"
--source include/assert.inc

# Wait one minute between attempts to connect to the group (the 2 donors)
--eval SET GLOBAL group_replication_recovery_reconnect_interval= 60

--let $assert_text= The value of the recovery reconnection interval should be 60 sec
--let $assert_cond= "[SELECT @@group_replication_recovery_reconnect_interval]" = "60"
--source include/assert.inc


--echo #
--echo # On member 3:
--echo # Set the recovery user and pass so it can't connect to any of the donors
--echo # After 10 second it should still be recovering, as the process is sleeping
--echo #

--disable_warnings
--eval CHANGE MASTER TO MASTER_USER="$recovery_user", MASTER_PASSWORD="$recovery_password" FOR CHANNEL 'group_replication_recovery'
--enable_warnings

--eval SET GLOBAL group_replication_group_name= "$group_replication_group_name";
--source include/start_group_replication_command.inc

#give it time to fail twice and sleep
--sleep 10

--let $group_replication_member_state= RECOVERING
--source ../inc/gr_wait_for_member_state.inc

--echo #
--echo # Create the recovery user on server 1 and server 2
--echo # The joiner should now connect to server 1 or 2 when failing over.
--echo #

--connection server1
SET SESSION sql_log_bin= 0;
--eval CREATE USER "$recovery_user" IDENTIFIED BY "$recovery_password"
--eval GRANT REPLICATION SLAVE ON *.* TO "$recovery_user"
FLUSH PRIVILEGES;
SET SESSION sql_log_bin= 1;

--connection server2
SET SESSION sql_log_bin= 0;
--eval CREATE USER "$recovery_user" IDENTIFIED BY "$recovery_password"
--eval GRANT REPLICATION SLAVE ON *.* TO "$recovery_user"
FLUSH PRIVILEGES;
SET SESSION sql_log_bin= 1;

--echo # After a minute, the node should failover on the last try and recover
--connection server3

# 80 sec sleep (the member should be online in 50 sec + 30 sec margin)
--let $wait_timeout= 80
--let $group_replication_member_state= ONLINE
--source ../inc/gr_wait_for_member_state.inc

--let $assert_text= On the recovered member, the table should exist and have 1 elements
--let $assert_cond= [SELECT COUNT(*) FROM t1] = 1;
--source include/assert.inc

--echo #
--echo # Cleaning up
--echo #

SET @@GLOBAL.group_replication_recovery_reconnect_interval= @debug_save_rec_int;
SET @@GLOBAL.group_replication_recovery_retry_count= @debug_save_retries;

DROP TABLE t1;

--connection server2

SET SESSION sql_log_bin= 0;
--eval DROP USER "$recovery_user"
SET SESSION sql_log_bin= 1;

--connection server1

SET SESSION sql_log_bin= 0;
--eval DROP USER "$recovery_user"
SET SESSION sql_log_bin= 1;

--source ../inc/group_replication_end.inc

Man Man