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
|
################################################################################
# Test script to test UNDO tablespace encryption setting to be displayed in
# INFORMATION_SCHEMA.INNODB_TABLESPACES.
################################################################################
# Note:
# Due to encrypt options used below its not possible to return to clean
# state: create and use separate datadir for this test
--echo #
--echo # Bug #29492911 : ENABLING UNDO-TABLESPACE ENCRYPTION DOESN'T MARK TABLESPACE ENCRYPTION FLAG
--echo #
let $MYSQL_DATA_DIR = `select @@datadir`;
SHOW VARIABLES LIKE "%innodb_undo_log_encrypt%";
--let $INNODB_FILE_PER_TABLE= `SELECT @@innodb_file_per_table`
--let $PAGE_SIZE= `select @@innodb_page_size`
--let $LOG_SIZE= `select @@innodb_redo_log_capacity`
--let $MYSQL_ENC_DATADIR= $MYSQL_TMP_DIR/undo_tablespace_encrypt_dir
--mkdir $MYSQL_ENC_DATADIR
--let $BOOTSTRAP_LOG= $MYSQL_TMP_DIR/bootstrap_enc.log
--let $BOOTSTRAP_SQL= $MYSQL_TMP_DIR/boot.sql
--write_file $BOOTSTRAP_SQL
CREATE DATABASE test;
EOF
--source include/shutdown_mysqld.inc
--source include/wait_until_disconnected.inc
--source include/keyring_tests/helper/binary_backup_manifest.inc
--let NEW_CMD = $MYSQLD --no-defaults --innodb_dedicated_server=OFF --initialize-insecure --innodb_redo_log_capacity=$LOG_SIZE --innodb_page_size=$PAGE_SIZE --datadir=$MYSQL_ENC_DATADIR --init-file=$BOOTSTRAP_SQL --secure-file-priv="" >>$BOOTSTRAP_LOG 2>&1
--exec $NEW_CMD
--echo ###############################################################################
--echo # With keyring and innodb_undo_log_encrypt=ON
--echo ###############################################################################
--source include/keyring_tests/helper/binary_restore_manifest.inc
--let $restart_parameters="restart: $PLUGIN_DIR_OPT --datadir=$MYSQL_ENC_DATADIR --log_error_verbosity=3 --innodb_undo_log_encrypt=ON --log-error=$MYSQLTEST_VARDIR/log/restart_1.err "
--source include/start_mysqld_no_echo.inc
SHOW VARIABLES LIKE "%innodb_undo_log_encrypt%";
--echo # Create a new UNDO tablespace. Should be created as ENCRYPTED.
CREATE UNDO TABLESPACE undo_3 ADD DATAFILE 'undo_3.ibu';
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
SET GLOBAL innodb_undo_log_encrypt=OFF;
SHOW VARIABLES LIKE "%innodb_undo_log_encrypt%";
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
--echo # Create a new UNDO tablespace. Should be created as UNENCRYPTED.
CREATE UNDO TABLESPACE undo_4 ADD DATAFILE 'undo_4.ibu';
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
SET GLOBAL innodb_undo_log_encrypt=ON;
SHOW VARIABLES LIKE "%innodb_undo_log_encrypt%";
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
--echo ###############################################################################
--echo # With keyring and innodb_undo_log_encrypt=OFF
--echo ###############################################################################
--let $restart_parameters="restart: $PLUGIN_DIR_OPT --datadir=$MYSQL_ENC_DATADIR --log_error_verbosity=3 --innodb_undo_log_encrypt=OFF --log-error=$MYSQLTEST_VARDIR/log/restart_1.err"
--source include/restart_mysqld_no_echo.inc
# Mark UNDO tablespace inactive so that it could be dropped.
ALTER UNDO TABLESPACE undo_3 set INACTIVE;
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
let $inactive_undo_space = undo_3;
source include/wait_until_undo_space_is_empty.inc;
DROP UNDO TABLESPACE undo_3;
# Mark UNDO tablespace inactive so that it could be dropped.
ALTER UNDO TABLESPACE undo_4 set INACTIVE;
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
let $inactive_undo_space = undo_4;
source include/wait_until_undo_space_is_empty.inc;
DROP UNDO TABLESPACE undo_4;
SELECT NAME, SPACE_TYPE, ENCRYPTION, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE='Undo';
# Reset to initial state
--source include/shutdown_mysqld.inc
--source include/wait_until_disconnected.inc
--let $restart_parameters="restart: $PLUGIN_DIR_OPT"
--source include/start_mysqld_no_echo.inc
--remove_file $BOOTSTRAP_LOG
--remove_file $BOOTSTRAP_SQL
--force-rmdir $MYSQL_ENC_DATADIR
|