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 |
Current File : //usr/opt/mysql57/mysql-test/suite/group_replication/t/gr_recovery_connection_options.test |
################################################################################ # Recovery donor connection options test # This test checks the user options used for donor connection during recovery. # # Test: # 0) The test requires three servers. # 1) Start server1 to boot the group. Insert some data for recovery. Create # the recovery user for the donor connection. # 2) Start server2 after changing the connection credentials using the # change master for the server. See that the recovery is successful. # 3) On server3 set incorrect password. Keep recovery retry count to low. # 4) Set DEBUG point to verify member is in RECOVERY state. Start server3. # Check that members is recovering. Then, recovery failed causing the # member to go to ERROR state. # 5) On server3 set master_user to empty user. # 6) Set DEBUG point to verify member is in RECOVERY state. Start server3. # Check that members is recovering. Then, recovery failed causing the # member to go to ERROR state. # 7) On server3 set master_user to non-existing user. # 8) Set DEBUG point to verify member is in RECOVERY state. Start server3. # Check that members is recovering. Then, recovery failed causing the # member to go to ERROR state. # 9) Do the cleanup in the end. ################################################################################ --source include/big_test.inc --source include/have_debug_sync.inc --let $group_replication_group_name= b5eb4110-a3a2-11e3-a5e2-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 --let $recovery_bad_password= recovery_bad_password --echo # --echo # Start the donor member --echo # --connection server1 --source ../inc/start_and_bootstrap_group_replication.inc --let $group_replication_number_of_members= 1 --source ../inc/gr_wait_for_number_of_members.inc #insert some data CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); --echo # --echo # Install a rpl user for the donor connection --echo # --eval CREATE USER "$recovery_user" IDENTIFIED BY "$recovery_password" --eval GRANT REPLICATION SLAVE ON *.* TO "$recovery_user" FLUSH PRIVILEGES; --connection server2 --echo # --echo # Set valid options --echo # --disable_warnings --eval CHANGE MASTER TO MASTER_USER='$recovery_user', MASTER_PASSWORD='$recovery_password' FOR CHANNEL 'group_replication_recovery'; --enable_warnings --echo # --echo # Start the joiner member with the given credentials and check if it is OK --echo # --source include/start_group_replication.inc let $assert_text= On the recovered member, the table should contain 1 elements; let $assert_cond= [select count(*) from t1] = 1; source include/assert.inc; --echo # --echo # Create a new member and give it a bad password, watching it fail --echo # SET @debug_save= @@GLOBAL.DEBUG; --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."); call mtr.add_suppression("Maximum number of retries when*"); call mtr.add_suppression("Fatal error during the Recovery process of Group Replication. The server will leave the group."); call mtr.add_suppression("The member is leaving a group without being on one"); call mtr.add_suppression("The member is already leaving or joining a group."); call mtr.add_suppression("Error leaving the group"); call mtr.add_suppression("Skipping leave operation: concurrent attempt to leave the group is on-going."); call mtr.add_suppression(".*Invalid .* username when attempting to connect to the master server.*"); set session sql_log_bin=1; --let $debug_save_count= `SELECT @@GLOBAL.group_replication_recovery_retry_count` --let $debug_save_rec_int= `SELECT @@GLOBAL.group_replication_recovery_reconnect_interval` SET @debug_save= @@GLOBAL.DEBUG; SET @@GLOBAL.DEBUG='d,recovery_thread_wait_before_finish'; --disable_warnings CHANGE MASTER TO MASTER_USER='$recovery_user', MASTER_PASSWORD='$recovery_bad_password' FOR CHANNEL 'group_replication_recovery'; --enable_warnings --echo # Set the retry count to try only twice. One time for each member. --eval SET GLOBAL group_replication_recovery_retry_count= 2; --echo # Set the reconnect interval to one. To prevent timeout on recovery. --eval SET GLOBAL group_replication_recovery_reconnect_interval= 1; --let $assert_text= The value of the recovery retry count should be equal to 2 --let $assert_cond= "[SELECT @@group_replication_recovery_retry_count]" = "2" --source include/assert.inc --echo # Start recovery and wait to verify the member is in recovery --let $group_replication_start_member_state= RECOVERING --source include/start_group_replication.inc --echo # The member should error out as it can't connect SET DEBUG_SYNC= "now SIGNAL signal.recovery_end"; --let $group_replication_member_state= ERROR --source ../inc/gr_wait_for_member_state.inc --echo # --echo # Set MASTER_USER to an empty user name, watching it fail --echo # --source include/stop_group_replication.inc CHANGE MASTER TO MASTER_USER= '', MASTER_PASSWORD= '' FOR CHANNEL 'group_replication_recovery'; --echo # Start recovery and wait to verify the member is in recovery --let $group_replication_start_member_state= RECOVERING --source include/start_group_replication.inc SET DEBUG_SYNC= "now SIGNAL signal.recovery_end"; --let $group_replication_member_state= ERROR --source ../inc/gr_wait_for_member_state.inc --echo # Verify that the show slave status shows specific IO_error let $show_statement= SHOW SLAVE STATUS FOR CHANNEL 'group_replication_recovery'; let $field= Last_IO_Errno; let $condition= = '1045'; --source include/wait_show_condition.inc --source include/stop_group_replication.inc --echo # --echo # Set MASTER_USER to non existing user, watching it fail --echo # CHANGE MASTER TO MASTER_USER= 'parveez', MASTER_PASSWORD= 'me' FOR CHANNEL 'group_replication_recovery'; --echo # Start recovery and wait to verify the member is in recovery --let $group_replication_start_member_state= RECOVERING --source include/start_group_replication.inc SET DEBUG_SYNC= "now SIGNAL signal.recovery_end"; --let $group_replication_member_state= ERROR --source ../inc/gr_wait_for_member_state.inc --echo # Verify that show slave status shows specific IO_ERROR let $show_statement= SHOW SLAVE STATUS FOR CHANNEL 'group_replication_recovery'; let $field= Last_IO_Errno; let $condition= = '1045'; --source include/wait_show_condition.inc --source include/stop_group_replication.inc --connection server2 --let $group_replication_number_of_members= 2 --source ../inc/gr_wait_for_number_of_members.inc --echo # --echo # Clean up --echo # --eval DROP USER "$recovery_user" --connection server3 SET DEBUG_SYNC='RESET'; SET @@GLOBAL.DEBUG = @debug_save; --eval SET GLOBAL group_replication_recovery_retry_count= $debug_save_count --eval SET GLOBAL group_replication_recovery_reconnect_interval= $debug_save_rec_int --connection server2 DROP TABLE t1; --source ../inc/group_replication_end.inc