EVOLUTION-MANAGER
Edit File: innodb_lotoftables.test
-- source include/have_innodb.inc -- source include/have_example_key_management_plugin.inc -- source include/big_test.inc # embedded does not support restart -- source include/not_embedded.inc --disable_query_log let $innodb_encryption_threads_orig = `SELECT @@global.innodb_encryption_threads`; --enable_query_log # empty the change buffer and the undo logs to avoid extra reads SET GLOBAL innodb_fast_shutdown=0; --source include/restart_mysqld.inc SHOW VARIABLES LIKE 'innodb_encrypt%'; # # This will create 100 tables where that could be # encrypted an unencrypt # create database innodb_encrypted_1; use innodb_encrypted_1; show status like 'innodb_pages0_read%'; set autocommit=0; let $tables = 100; --disable_query_log while ($tables) { eval create table t_$tables (a int not null primary key, b varchar(200)) engine=innodb stats_persistent=0; commit; let $rows = 100; while($rows) { eval insert into t_$tables values ($rows, substring(MD5(RAND()), -64)); dec $rows; } commit; dec $tables; } --enable_query_log set autocommit=1; commit work; show status like 'innodb_pages0_read%'; # # Verify # --echo # should be empty SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%'; # # This will create 100 tables that are encrypted always # create database innodb_encrypted_2; use innodb_encrypted_2; show status like 'innodb_pages0_read%'; set autocommit=0; --disable_query_log let $tables = 100; while ($tables) { eval create table t_$tables (a int not null primary key, b varchar(200)) engine=innodb stats_persistent=0 encrypted=yes; commit; let $rows = 100; while($rows) { eval insert into t_$tables values ($rows, substring(MD5(RAND()), -64)); dec $rows; } commit; dec $tables; } --enable_query_log commit work; set autocommit=1; show status like 'innodb_pages0_read%'; # # Verify # --echo # should contain 100 tables SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; --echo # should contain 0 tables SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; # # This will create 100 tables that are not encrypted # create database innodb_encrypted_3; use innodb_encrypted_3; show status like 'innodb_pages0_read%'; set autocommit=0; --disable_query_log let $tables = 100; while ($tables) { eval create table t_$tables (a int not null primary key, b varchar(200)) engine=innodb stats_persistent=0 encrypted=no; commit; let $rows = 100; while($rows) { eval insert into t_$tables values ($rows, substring(MD5(RAND()), -64)); dec $rows; } commit; dec $tables; } --enable_query_log commit work; set autocommit=1; show status like 'innodb_pages0_read%'; # # Verify # --echo # should contain 100 tables SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; --echo # should contain 100 tables SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; use test; show status like 'innodb_pages0_read%'; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; SET GLOBAL innodb_encrypt_tables = on; SET GLOBAL innodb_encryption_threads=4; --let $wait_timeout= 600 --let $wait_condition=SELECT COUNT(*) = 100 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 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; show status like 'innodb_pages0_read%'; --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 --echo # Restart Success! SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use test; SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use innodb_encrypted_1; SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use innodb_encrypted_2; SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use innodb_encrypted_3; SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use innodb_encrypted_1; --disable_result_log --disable_query_log let $tables = 100; while ($tables) { eval select * from t_$tables; dec $tables; } --enable_query_log --enable_result_log SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use innodb_encrypted_2; --disable_result_log --disable_query_log let $tables = 100; while ($tables) { eval select * from t_$tables; dec $tables; } --enable_query_log --enable_result_log SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; use innodb_encrypted_3; --disable_result_log --disable_query_log let $tables = 100; while ($tables) { eval select * from t_$tables; dec $tables; } --enable_query_log --enable_result_log SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read'; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; SET GLOBAL innodb_encrypt_tables = off; SET GLOBAL innodb_encryption_threads=4; --let $wait_timeout= 600 --let $wait_condition=SELECT COUNT(*) = 100 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 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; # # Cleanup # use test; drop database innodb_encrypted_1; drop database innodb_encrypted_2; drop database innodb_encrypted_3; --disable_query_log EVAL SET GLOBAL innodb_encryption_threads = $innodb_encryption_threads_orig; --enable_query_log