innodb_encryption.test 3.12 KB
Newer Older
Monty's avatar
Monty committed
1 2 3 4
#
#
#
-- source include/have_innodb.inc
5
-- source include/have_example_key_management_plugin.inc
6
-- source include/innodb_undo_tablespaces.inc
Monty's avatar
Monty committed
7 8 9 10 11 12 13 14

# embedded does not support restart
-- source include/not_embedded.inc

SET @start_global_value = @@global.innodb_encryption_threads;

SHOW VARIABLES LIKE 'innodb_encrypt%';

15 16
SET GLOBAL innodb_encrypt_tables = ON;

17 18
--let $tables_count= `select count(*) + 1 from information_schema.tables where engine = 'InnoDB'`

19 20
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
--let $wait_timeout= 600
21
--let $wait_condition=SELECT COUNT(*) >= $tables_count FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
22 23 24 25
--source include/wait_condition.inc

SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
Monty's avatar
Monty committed
26 27 28 29 30 31

--echo # Success!

--echo # Now turn off encryption and wait for threads to decrypt everything
SET GLOBAL innodb_encrypt_tables = off;

32 33 34 35 36 37 38 39
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
--let $wait_timeout= 600
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
--source include/wait_condition.inc

SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;

Monty's avatar
Monty committed
40 41 42 43 44 45 46 47 48 49
--echo # Success!

--echo # Shutdown innodb_encryption_threads
SET GLOBAL innodb_encryption_threads=0;

--echo # Turn on encryption
--echo # since threads are off tables should remain unencrypted
SET GLOBAL innodb_encrypt_tables = on;

--echo # Wait 15s to check that nothing gets encrypted
50 51 52 53 54 55 56
--let $wait_timeout= 15
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
--source include/wait_condition.inc

SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;

Monty's avatar
Monty committed
57 58 59 60 61
--echo # Success!

--echo # Startup innodb_encryption_threads
SET GLOBAL innodb_encryption_threads=@start_global_value;

62 63
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
--let $wait_timeout= 600
64
--let $wait_condition=SELECT COUNT(*) >= $tables_count FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
65 66 67 68
--source include/wait_condition.inc

SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
Monty's avatar
Monty committed
69 70 71 72 73 74 75 76

--echo # Success!
--echo # Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
-- let $restart_parameters=--innodb_encrypt_tables=0 --innodb_encryption_threads=0
-- source include/restart_mysqld.inc

SHOW VARIABLES LIKE 'innodb_encrypt%';

77 78
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;