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
|
################################################################################
# Validate that recovery channel compression configuration is properly
# exported by performance schema.
#
# Test:
# 0. The test requires two servers: M1 and M2.
# 1. Create a table on the group.
# 2. Test invalid algorithm and level values.
# 3. Test invalid algorithm and level combinations.
# 4. Test valid algorithm and level combinations.
# 5. Clean up.
################################################################################
--source include/big_test.inc
--source include/have_group_replication_plugin.inc
--source include/group_replication.inc
--echo
--echo ############################################################
--echo # 1. Create a table on the group.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--disable_query_log
--let $saved_gr_recovery_compression_algorithm = `SELECT @@GLOBAL.group_replication_recovery_compression_algorithms;`
--let $saved_gr_recovery_compression_level = `SELECT @@GLOBAL.group_replication_recovery_zstd_compression_level;`
--enable_query_log
SET SESSION sql_log_bin= 0;
call mtr.add_suppression("Invalid compression level found while reading connection metadata repository. Resetting level to default.");
call mtr.add_suppression("Plugin group_replication reported: 'Error while creating the group replication recovery channel with donor .*");
call mtr.add_suppression("Plugin group_replication reported: 'Error when configuring the asynchronous recovery channel connection to the donor.");
call mtr.add_suppression("Plugin group_replication reported: 'Maximum number of retries when trying to connect to a donor reached. Aborting group replication incremental recovery.");
call mtr.add_suppression("Plugin group_replication reported: 'Fatal error during the incremental recovery process of Group Replication. The server will leave the group.");
call mtr.add_suppression("Plugin group_replication reported: 'Skipping leave operation: concurrent attempt to leave the group is on-going.");
SET SESSION sql_log_bin= 1;
CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
--source include/rpl_sync.inc
--echo
--echo ############################################################
--echo # 2. Test invalid algorithm and level values.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--error ER_WRONG_TYPE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_compression_algorithms= 1;
--error ER_WRONG_TYPE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_compression_algorithms= 1.0;
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "foo";
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "ZLIB";
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "ZSTD";
--error ER_WRONG_TYPE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= "bar";
--error ER_WRONG_TYPE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 1.0;
--echo
--echo ############################################################
--echo # 3. Test invalid algorithm and level combinations.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "zlib";
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 0;
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 23;
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "zstd";
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 0;
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 23;
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "uncompressed";
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 0;
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 23;
--echo
--echo ############################################################
--echo # 4. Test valid algorithm and level combinations.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
SET @@GLOBAL.group_replication_recovery_compression_algorithms= DEFAULT;
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= DEFAULT;
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "zlib";
--source ../include/gr_recovery_channel_block.inc
--let $assert_text= 'Algorithm must be zlib'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="group_replication_recovery" AND COMPRESSION_ALGORITHM="zlib", count, 1] = 1
--source include/assert.inc
--source ../include/gr_recovery_channel_resume.inc
SET @@GLOBAL.group_replication_recovery_compression_algorithms= DEFAULT;
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= DEFAULT;
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "zstd";
--source ../include/gr_recovery_channel_block.inc
--let $assert_text= 'Algorithm must be zstd and level must be 3 (the default)'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="group_replication_recovery" AND COMPRESSION_ALGORITHM="zstd" AND ZSTD_COMPRESSION_LEVEL=3, count, 1] = 1
--source include/assert.inc
--source ../include/gr_recovery_channel_resume.inc
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "zstd";
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 1;
--source ../include/gr_recovery_channel_block.inc
--let $assert_text= 'Algorithm must be zstd and level must be 1'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="group_replication_recovery" AND COMPRESSION_ALGORITHM="zstd" AND ZSTD_COMPRESSION_LEVEL=1, count, 1] = 1
--source include/assert.inc
--source ../include/gr_recovery_channel_resume.inc
SET @@GLOBAL.group_replication_recovery_compression_algorithms= "zstd";
SET @@GLOBAL.group_replication_recovery_zstd_compression_level= 22;
--source ../include/gr_recovery_channel_block.inc
--let $assert_text= 'Algorithm must be zstd and level must be 22'
--let $assert_cond= [SELECT COUNT(*) AS count FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME="group_replication_recovery" AND COMPRESSION_ALGORITHM="zstd" AND ZSTD_COMPRESSION_LEVEL=22, count, 1] = 1
--source include/assert.inc
--source ../include/gr_recovery_channel_resume.inc
--echo
--echo ############################################################
--echo # 6. Clean up.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
DROP TABLE t1;
--disable_query_log
--eval SET @@GLOBAL.group_replication_recovery_compression_algorithms= "$saved_gr_recovery_compression_algorithm"
--eval SET @@GLOBAL.group_replication_recovery_zstd_compression_level= $saved_gr_recovery_compression_level
--enable_query_log
--source include/group_replication_end.inc
|