polardbxengine/mysql-test/suite/group_replication/t/gr_auto_increment_increment...

305 lines
14 KiB
Plaintext

################################################################################
# Verify following auto_increment behaviours:
#
# Test:
# 0. This test starts with 4 non-started members.
# 1. Check the defaults of group_replication_auto_increment_increment,
# auto_increment_increment and auto_increment_offset.
# 2. Check that the value of group_replication_auto_increment_increment
# can be set before GR start, but its effects on
# auto_increment_increment and auto_increment_offset do not happen.
# 3. Check that the effects of group_replication_auto_increment_increment
# on auto_increment_increment and auto_increment_offset happen on
# starting GR.
# 4. When the number of members is bigger than the auto_increment_increment
# value, an error is logged.
# 5. When auto_increment_increment and auto_increment_offset are not equal to 1,
# group_replication should not update their value on START and STOP.
# 6. When auto_increment_increment and auto_increment_offset are equal to 1,
# then verify if plugin on start set auto_increment_increment variable
# equal to group_replication_auto_increment_increment value.
# 7. When group_replication is stopped verify that plugin reset
# auto_increment_increment and auto_increment_offset values to 1.
# 8. Verify start/stop group_replication plugin doesn't affect setting
# auto_increment_increment from group_replication_auto_increment_increment
# value.
# 9. Verify server restart doesn't affect setting auto_increment_increment from
# group_replication_auto_increment_increment value.
# 10. Verify group_replication_auto_increment_increment can't be set when
# group_replication plugin is running.
# 11. Validate that when user tries to set invalid values a
# error is thrown.
# 12. Clean up.
################################################################################
--source include/big_test.inc
--source include/have_group_replication_plugin.inc
--source include/force_restart.inc
--let $rpl_skip_group_replication_start= 1
--let $rpl_server_count= 4
--source include/group_replication.inc
--connection server1
--source include/start_and_bootstrap_group_replication.inc
--connection server3
--source include/start_group_replication.inc
--connection server4
--source include/start_group_replication.inc
# Use server2 so that we can set
# group_replication_auto_increment_increment-slave.opt
--connection server2
# changing GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT for server2
# and so storing it only for server2
--let $_init_auto_increment= `SELECT @@GLOBAL.GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT`
--echo #######################################################################
--echo # 1. Check the defaults of group_replication_auto_increment_increment,
--echo # auto_increment_increment and auto_increment_offset.
--echo #######################################################################
--let $assert_text= The default value of group_replication_auto_increment_increment for server2 should be 7
--let $assert_cond= [SELECT @@GLOBAL.group_replication_auto_increment_increment] = 7
--source include/assert.inc
--let $assert_text= The default value of auto_increment_increment for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 1
--source include/assert.inc
--let $assert_text= The default value of auto_increment_offset for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 1
--source include/assert.inc
--echo #######################################################################
--echo # 2. Check that the value of group_replication_auto_increment_increment
--echo # can be set before GR start, but its effects on
--echo # auto_increment_increment and auto_increment_offset do not happen.
--echo #######################################################################
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 3;
--let $assert_text= The value of group_replication_auto_increment_increment is set to 3
--let $assert_cond= [SELECT @@GLOBAL.group_replication_auto_increment_increment] = 3
--source include/assert.inc
--let $assert_text= The value of auto_increment_increment is not affected
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 1
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset is not affected
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 1
--source include/assert.inc
--source include/start_group_replication.inc
--echo #########################################################################
--echo # 3. Check that the effects of group_replication_auto_increment_increment
--echo # on auto_increment_increment and auto_increment_offset happen on
--echo # starting GR.
--echo #########################################################################
--let $assert_text= The value of group_replication_auto_increment_increment is still 3
--let $assert_cond= [SELECT @@GLOBAL.group_replication_auto_increment_increment] = 3
--source include/assert.inc
--let $assert_text= The value of auto_increment_increment is set to 3
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 3
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset is set to 2
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 2
--source include/assert.inc
--echo ############################################################
--echo # 4. When the number of members is bigger than
--echo # the auto_increment_increment value, an error is logged.
--echo ############################################################
--replace_regex /[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9][0-9][0-9][0-9][-+Z][0-9:]* *[0-9]* \[ERROR\] \[[^\]]*\] */DATE_TIME [ERROR] /
--let $grep_file=$MYSQLTEST_VARDIR/tmp/group_replication_auto_increment_increment_log.err
--let $grep_pattern=Group contains 4 members which is greater than auto_increment_increment value of 3. This can lead to a higher transactional abort rate.
--source include/grep_pattern.inc
--echo ############################################################
--echo # 5. When auto_increment_increment and auto_increment_offset
--echo # not set to default value
--echo # i.e. auto_increment_increment= 1
--echo # auto_increment_offset= 1
--echo # group_replication should not update their value.
--echo ############################################################
--source include/stop_group_replication.inc
SET GLOBAL AUTO_INCREMENT_INCREMENT= 5;
SET GLOBAL AUTO_INCREMENT_OFFSET= 5;
--source include/start_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 5
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 5
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 5
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 5
--source include/assert.inc
--source include/stop_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 5
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 5
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 5
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 5
--source include/assert.inc
--echo ############################################################
--echo # 6. When auto_increment_increment and auto_increment_offset are equal
--echo # to 1, then verify if plugin on start set auto_increment_increment
--echo # variable equal to group_replication_auto_increment_increment value.
--echo ############################################################
SET GLOBAL AUTO_INCREMENT_INCREMENT= 1;
SET GLOBAL AUTO_INCREMENT_OFFSET= 1;
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 4;
--source include/start_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 4
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 4
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 2
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 2
--source include/assert.inc
--echo ############################################################
--echo # 7. When group_replication is stopped verify that plugin reset
--echo # auto_increment_increment and auto_increment_offset values to 1.
--echo ############################################################
--source include/stop_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 1
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 1
--source include/assert.inc
# Set GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT to 1, so that it doesn't
# affect when starting group_replication again.
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 1;
--echo ############################################################
--echo # 8. Verify start/stop group_replication plugin doesn't affect
--echo # setting auto_increment_increment from
--echo # group_replication_auto_increment_increment value.
--echo ############################################################
--source include/start_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 1
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 2
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 2
--source include/assert.inc
--source include/stop_group_replication.inc
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 9;
--source include/start_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 9
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 9
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 2
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 2
--source include/assert.inc
--echo ############################################################
--echo # 9. Verify server restart doesn't affect setting
--echo # auto_increment_increment from
--echo # group_replication_auto_increment_increment value.
--echo ############################################################
--source include/stop_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 1
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 1
--source include/assert.inc
# Set GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT to 1, so that it doesn't
# affect when starting group_replication again.
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 1;
--source include/start_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 1
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 1
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 2
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 2
--source include/assert.inc
# restart server
--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_local_address=$_group_replication_local_address --group_replication_group_seeds=$_group_replication_group_seeds
--replace_result $_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS $_group_replication_group_seeds GROUP_REPLICATION_GROUP_SEEDS
--source include/restart_mysqld.inc
# Needed as we are not using rpl_restart_server.inc
--let $rpl_server_number= 2
--source include/rpl_reconnect.inc
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 9;
--source include/start_group_replication.inc
--let $assert_text= The value of auto_increment_increment for server2 should be 9
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_increment] = 9
--source include/assert.inc
--let $assert_text= The value of auto_increment_offset for server2 should be 2
--let $assert_cond= [SELECT @@GLOBAL.auto_increment_offset] = 2
--source include/assert.inc
--echo ############################################################
--echo # 10. Verify group_replication_auto_increment_increment can't be set
--echo # when group_replication plugin is running.
--echo ############################################################
--error ER_GROUP_REPLICATION_RUNNING
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 9;
--echo ############################################################
--echo # 11. Validate that when user tries to set invalid values a
--echo # error is thrown.
--echo ############################################################
--connection server2
--source include/stop_group_replication.inc
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= -1;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 65536;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 0;
--error ER_WRONG_TYPE_FOR_VAR
SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= 'a';
--echo ############################################################
--echo # 12. clean up and reset auto_increment variables value
--echo ############################################################
--eval SET GLOBAL GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT= $_init_auto_increment
--source include/group_replication_end.inc