diff options
22 files changed, 1357 insertions, 390 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index cb42a359896..702ac088557 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -2598,10 +2598,6 @@ xb_load_single_table_tablespace( ut_free(name); - if (fil_space_crypt_t* crypt_info = file->get_crypt_info()) { - fil_space_destroy_crypt_data(&crypt_info); - } - delete file; if (err != DB_SUCCESS && err != DB_CORRUPTION && xtrabackup_backup) { diff --git a/mysql-test/suite/encryption/r/innodb-first-page-read.result b/mysql-test/suite/encryption/r/innodb-first-page-read.result index 9b57b9de5f9..6df80e8223d 100644 --- a/mysql-test/suite/encryption/r/innodb-first-page-read.result +++ b/mysql-test/suite/encryption/r/innodb-first-page-read.result @@ -1,5 +1,6 @@ SET GLOBAL innodb_file_format = `Barracuda`; SET GLOBAL innodb_file_per_table = ON; +FLUSH STATUS; create database innodb_test; use innodb_test; create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; @@ -50,40 +51,48 @@ insert into innodb_datadir1 select * from innodb_normal; insert into innodb_datadir2 select * from innodb_normal; insert into innodb_datadir3 select * from innodb_normal; commit; +FLUSH STATUS; # Restart server and see how many page 0's are read -# result should be less than actual number of tables -# i.e. < 23 + 3 = 26 -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +# result should actual number of tables except remote tables could be read twice +# i.e. < 23 + 3*2 = 29 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 use innodb_test; -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 use test; -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 set global innodb_encrypt_tables=OFF; # wait until tables are decrypted -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +# result should be actual number of tables except remote tables could be read twice +# i.e. < 23 + 3*2 = 29 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 use innodb_test; -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 use test; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 +FLUSH STATUS; # restart and see number read page 0 -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 use innodb_test; -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 use test; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; +VARIABLE_VALUE <= 29 +1 drop database innodb_test; -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 26 +FLUSH STATUS; diff --git a/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result b/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result index a642ad20183..680db692c17 100644 --- a/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result +++ b/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result @@ -2,9 +2,6 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_ NAME SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; NAME -mysql/innodb_table_stats -mysql/innodb_index_stats -innodb_system create database enctests; use enctests; create table t1(a int not null primary key, b char(200)) engine=innodb; diff --git a/mysql-test/suite/encryption/r/innodb_encryption.result b/mysql-test/suite/encryption/r/innodb_encryption.result index ce494098d44..c49cf3813c9 100644 --- a/mysql-test/suite/encryption/r/innodb_encryption.result +++ b/mysql-test/suite/encryption/r/innodb_encryption.result @@ -8,25 +8,22 @@ innodb_encrypt_tables ON innodb_encryption_rotate_key_age 15 innodb_encryption_rotation_iops 100 innodb_encryption_threads 4 -DESCRIBE INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; -Field Type Null Key Default Extra -SPACE int(11) unsigned NO 0 -NAME varchar(655) YES NULL -ENCRYPTION_SCHEME int(11) unsigned NO 0 -KEYSERVER_REQUESTS int(11) unsigned NO 0 -MIN_KEY_VERSION int(11) unsigned NO 0 -CURRENT_KEY_VERSION int(11) unsigned NO 0 -KEY_ROTATION_PAGE_NUMBER bigint(21) unsigned YES NULL -KEY_ROTATION_MAX_PAGE_NUMBER bigint(21) unsigned YES NULL -CURRENT_KEY_ID int(11) unsigned NO 0 -ROTATING_OR_FLUSHING int(1) unsigned NO 0 -# Wait max 5 min for key encryption threads to encrypt one space -# Success! -# Wait max 10 min for key encryption threads to encrypt all space +SET GLOBAL innodb_encrypt_tables = ON; +# Wait max 10 min for key encryption threads to encrypt all spaces +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; +NAME +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; +NAME +innodb_system # Success! # Now turn off encryption and wait for threads to decrypt everything SET GLOBAL innodb_encrypt_tables = off; -# Wait max 10 min for key encryption threads to decrypt all space +# Wait max 10 min for key encryption threads to encrypt all spaces +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; +NAME +innodb_system +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; +NAME # Success! # Shutdown innodb_encryption_threads SET GLOBAL innodb_encryption_threads=0; @@ -34,16 +31,20 @@ SET GLOBAL innodb_encryption_threads=0; # since threads are off tables should remain unencrypted SET GLOBAL innodb_encrypt_tables = on; # Wait 15s to check that nothing gets encrypted +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; +NAME +innodb_system +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; +NAME # Success! # Startup innodb_encryption_threads SET GLOBAL innodb_encryption_threads=@start_global_value; -# Wait 1 min to check that it start encrypting again -# Success! -# -# Check that restart with encryption turned off works -# even if spaces are encrypted -# -# First wait max 10 min for key encryption threads to encrypt all spaces +# Wait max 10 min for key encryption threads to encrypt all spaces +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; +NAME +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; +NAME +innodb_system # Success! # Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0 SHOW VARIABLES LIKE 'innodb_encrypt%'; @@ -53,9 +54,8 @@ innodb_encrypt_tables OFF innodb_encryption_rotate_key_age 15 innodb_encryption_rotation_iops 100 innodb_encryption_threads 0 -SELECT COUNT(*) > 0 as should_be_1 -FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION -WHERE MIN_KEY_VERSION <> 0; -should_be_1 -1 -# Restart mysqld again...with default options +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; +NAME +innodb_system +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; +NAME diff --git a/mysql-test/suite/encryption/r/innodb_lotoftables.result b/mysql-test/suite/encryption/r/innodb_lotoftables.result index cf5724b527a..da07a52f8c3 100644 --- a/mysql-test/suite/encryption/r/innodb_lotoftables.result +++ b/mysql-test/suite/encryption/r/innodb_lotoftables.result @@ -17,10 +17,9 @@ commit work; show status like 'innodb_pages0_read%'; Variable_name Value Innodb_pages0_read 3 -# should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 +# should be empty +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%'; +NAME create database innodb_encrypted_2; use innodb_encrypted_2; show status like 'innodb_pages0_read%'; @@ -32,14 +31,112 @@ set autocommit=1; show status like 'innodb_pages0_read%'; Variable_name Value Innodb_pages0_read 3 -# should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 -# should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 +# 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; +NAME +innodb_encrypted_2/t_1 +innodb_encrypted_2/t_10 +innodb_encrypted_2/t_100 +innodb_encrypted_2/t_11 +innodb_encrypted_2/t_12 +innodb_encrypted_2/t_13 +innodb_encrypted_2/t_14 +innodb_encrypted_2/t_15 +innodb_encrypted_2/t_16 +innodb_encrypted_2/t_17 +innodb_encrypted_2/t_18 +innodb_encrypted_2/t_19 +innodb_encrypted_2/t_2 +innodb_encrypted_2/t_20 +innodb_encrypted_2/t_21 +innodb_encrypted_2/t_22 +innodb_encrypted_2/t_23 +innodb_encrypted_2/t_24 +innodb_encrypted_2/t_25 +innodb_encrypted_2/t_26 +innodb_encrypted_2/t_27 +innodb_encrypted_2/t_28 +innodb_encrypted_2/t_29 +innodb_encrypted_2/t_3 +innodb_encrypted_2/t_30 +innodb_encrypted_2/t_31 +innodb_encrypted_2/t_32 +innodb_encrypted_2/t_33 +innodb_encrypted_2/t_34 +innodb_encrypted_2/t_35 +innodb_encrypted_2/t_36 +innodb_encrypted_2/t_37 +innodb_encrypted_2/t_38 +innodb_encrypted_2/t_39 +innodb_encrypted_2/t_4 +innodb_encrypted_2/t_40 +innodb_encrypted_2/t_41 +innodb_encrypted_2/t_42 +innodb_encrypted_2/t_43 +innodb_encrypted_2/t_44 +innodb_encrypted_2/t_45 +innodb_encrypted_2/t_46 +innodb_encrypted_2/t_47 +innodb_encrypted_2/t_48 +innodb_encrypted_2/t_49 +innodb_encrypted_2/t_5 +innodb_encrypted_2/t_50 +innodb_encrypted_2/t_51 +innodb_encrypted_2/t_52 +innodb_encrypted_2/t_53 +innodb_encrypted_2/t_54 +innodb_encrypted_2/t_55 +innodb_encrypted_2/t_56 +innodb_encrypted_2/t_57 +innodb_encrypted_2/t_58 +innodb_encrypted_2/t_59 +innodb_encrypted_2/t_6 +innodb_encrypted_2/t_60 +innodb_encrypted_2/t_61 +innodb_encrypted_2/t_62 +innodb_encrypted_2/t_63 +innodb_encrypted_2/t_64 +innodb_encrypted_2/t_65 +innodb_encrypted_2/t_66 +innodb_encrypted_2/t_67 +innodb_encrypted_2/t_68 +innodb_encrypted_2/t_69 +innodb_encrypted_2/t_7 +innodb_encrypted_2/t_70 +innodb_encrypted_2/t_71 +innodb_encrypted_2/t_72 +innodb_encrypted_2/t_73 +innodb_encrypted_2/t_74 +innodb_encrypted_2/t_75 +innodb_encrypted_2/t_76 +innodb_encrypted_2/t_77 +innodb_encrypted_2/t_78 +innodb_encrypted_2/t_79 +innodb_encrypted_2/t_8 +innodb_encrypted_2/t_80 +innodb_encrypted_2/t_81 +innodb_encrypted_2/t_82 +innodb_encrypted_2/t_83 +innodb_encrypted_2/t_84 +innodb_encrypted_2/t_85 +innodb_encrypted_2/t_86 +innodb_encrypted_2/t_87 +innodb_encrypted_2/t_88 +innodb_encrypted_2/t_89 +innodb_encrypted_2/t_9 +innodb_encrypted_2/t_90 +innodb_encrypted_2/t_91 +innodb_encrypted_2/t_92 +innodb_encrypted_2/t_93 +innodb_encrypted_2/t_94 +innodb_encrypted_2/t_95 +innodb_encrypted_2/t_96 +innodb_encrypted_2/t_97 +innodb_encrypted_2/t_98 +innodb_encrypted_2/t_99 +# 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; +NAME create database innodb_encrypted_3; use innodb_encrypted_3; show status like 'innodb_pages0_read%'; @@ -51,33 +148,626 @@ set autocommit=1; show status like 'innodb_pages0_read%'; Variable_name Value Innodb_pages0_read 3 -# should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 -# should be 200 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -200 +# 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; +NAME +innodb_encrypted_2/t_1 +innodb_encrypted_2/t_10 +innodb_encrypted_2/t_100 +innodb_encrypted_2/t_11 +innodb_encrypted_2/t_12 +innodb_encrypted_2/t_13 +innodb_encrypted_2/t_14 +innodb_encrypted_2/t_15 +innodb_encrypted_2/t_16 +innodb_encrypted_2/t_17 +innodb_encrypted_2/t_18 +innodb_encrypted_2/t_19 +innodb_encrypted_2/t_2 +innodb_encrypted_2/t_20 +innodb_encrypted_2/t_21 +innodb_encrypted_2/t_22 +innodb_encrypted_2/t_23 +innodb_encrypted_2/t_24 +innodb_encrypted_2/t_25 +innodb_encrypted_2/t_26 +innodb_encrypted_2/t_27 +innodb_encrypted_2/t_28 +innodb_encrypted_2/t_29 +innodb_encrypted_2/t_3 +innodb_encrypted_2/t_30 +innodb_encrypted_2/t_31 +innodb_encrypted_2/t_32 +innodb_encrypted_2/t_33 +innodb_encrypted_2/t_34 +innodb_encrypted_2/t_35 +innodb_encrypted_2/t_36 +innodb_encrypted_2/t_37 +innodb_encrypted_2/t_38 +innodb_encrypted_2/t_39 +innodb_encrypted_2/t_4 +innodb_encrypted_2/t_40 +innodb_encrypted_2/t_41 +innodb_encrypted_2/t_42 +innodb_encrypted_2/t_43 +innodb_encrypted_2/t_44 +innodb_encrypted_2/t_45 +innodb_encrypted_2/t_46 +innodb_encrypted_2/t_47 +innodb_encrypted_2/t_48 +innodb_encrypted_2/t_49 +innodb_encrypted_2/t_5 +innodb_encrypted_2/t_50 +innodb_encrypted_2/t_51 +innodb_encrypted_2/t_52 +innodb_encrypted_2/t_53 +innodb_encrypted_2/t_54 +innodb_encrypted_2/t_55 +innodb_encrypted_2/t_56 +innodb_encrypted_2/t_57 +innodb_encrypted_2/t_58 +innodb_encrypted_2/t_59 +innodb_encrypted_2/t_6 +innodb_encrypted_2/t_60 +innodb_encrypted_2/t_61 +innodb_encrypted_2/t_62 +innodb_encrypted_2/t_63 +innodb_encrypted_2/t_64 +innodb_encrypted_2/t_65 +innodb_encrypted_2/t_66 +innodb_encrypted_2/t_67 +innodb_encrypted_2/t_68 +innodb_encrypted_2/t_69 +innodb_encrypted_2/t_7 +innodb_encrypted_2/t_70 +innodb_encrypted_2/t_71 +innodb_encrypted_2/t_72 +innodb_encrypted_2/t_73 +innodb_encrypted_2/t_74 +innodb_encrypted_2/t_75 +innodb_encrypted_2/t_76 +innodb_encrypted_2/t_77 +innodb_encrypted_2/t_78 +innodb_encrypted_2/t_79 +innodb_encrypted_2/t_8 +innodb_encrypted_2/t_80 +innodb_encrypted_2/t_81 +innodb_encrypted_2/t_82 +innodb_encrypted_2/t_83 +innodb_encrypted_2/t_84 +innodb_encrypted_2/t_85 +innodb_encrypted_2/t_86 +innodb_encrypted_2/t_87 +innodb_encrypted_2/t_88 +innodb_encrypted_2/t_89 +innodb_encrypted_2/t_9 +innodb_encrypted_2/t_90 +innodb_encrypted_2/t_91 +innodb_encrypted_2/t_92 +innodb_encrypted_2/t_93 +innodb_encrypted_2/t_94 +innodb_encrypted_2/t_95 +innodb_encrypted_2/t_96 +innodb_encrypted_2/t_97 +innodb_encrypted_2/t_98 +innodb_encrypted_2/t_99 +# 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; +NAME +innodb_encrypted_3/t_1 +innodb_encrypted_3/t_10 +innodb_encrypted_3/t_100 +innodb_encrypted_3/t_11 +innodb_encrypted_3/t_12 +innodb_encrypted_3/t_13 +innodb_encrypted_3/t_14 +innodb_encrypted_3/t_15 +innodb_encrypted_3/t_16 +innodb_encrypted_3/t_17 +innodb_encrypted_3/t_18 +innodb_encrypted_3/t_19 +innodb_encrypted_3/t_2 +innodb_encrypted_3/t_20 +innodb_encrypted_3/t_21 +innodb_encrypted_3/t_22 +innodb_encrypted_3/t_23 +innodb_encrypted_3/t_24 +innodb_encrypted_3/t_25 +innodb_encrypted_3/t_26 +innodb_encrypted_3/t_27 +innodb_encrypted_3/t_28 +innodb_encrypted_3/t_29 +innodb_encrypted_3/t_3 +innodb_encrypted_3/t_30 +innodb_encrypted_3/t_31 +innodb_encrypted_3/t_32 +innodb_encrypted_3/t_33 +innodb_encrypted_3/t_34 +innodb_encrypted_3/t_35 +innodb_encrypted_3/t_36 +innodb_encrypted_3/t_37 +innodb_encrypted_3/t_38 +innodb_encrypted_3/t_39 +innodb_encrypted_3/t_4 +innodb_encrypted_3/t_40 +innodb_encrypted_3/t_41 +innodb_encrypted_3/t_42 +innodb_encrypted_3/t_43 +innodb_encrypted_3/t_44 +innodb_encrypted_3/t_45 +innodb_encrypted_3/t_46 +innodb_encrypted_3/t_47 +innodb_encrypted_3/t_48 +innodb_encrypted_3/t_49 +innodb_encrypted_3/t_5 +innodb_encrypted_3/t_50 +innodb_encrypted_3/t_51 +innodb_encrypted_3/t_52 +innodb_encrypted_3/t_53 +innodb_encrypted_3/t_54 +innodb_encrypted_3/t_55 +innodb_encrypted_3/t_56 +innodb_encrypted_3/t_57 +innodb_encrypted_3/t_58 +innodb_encrypted_3/t_59 +innodb_encrypted_3/t_6 +innodb_encrypted_3/t_60 +innodb_encrypted_3/t_61 +innodb_encrypted_3/t_62 +innodb_encrypted_3/t_63 +innodb_encrypted_3/t_64 +innodb_encrypted_3/t_65 +innodb_encrypted_3/t_66 +innodb_encrypted_3/t_67 +innodb_encrypted_3/t_68 +innodb_encrypted_3/t_69 +innodb_encrypted_3/t_7 +innodb_encrypted_3/t_70 +innodb_encrypted_3/t_71 +innodb_encrypted_3/t_72 +innodb_encrypted_3/t_73 +innodb_encrypted_3/t_74 +innodb_encrypted_3/t_75 +innodb_encrypted_3/t_76 +innodb_encrypted_3/t_77 +innodb_encrypted_3/t_78 +innodb_encrypted_3/t_79 +innodb_encrypted_3/t_8 +innodb_encrypted_3/t_80 +innodb_encrypted_3/t_81 +innodb_encrypted_3/t_82 +innodb_encrypted_3/t_83 +innodb_encrypted_3/t_84 +innodb_encrypted_3/t_85 +innodb_encrypted_3/t_86 +innodb_encrypted_3/t_87 +innodb_encrypted_3/t_88 +innodb_encrypted_3/t_89 +innodb_encrypted_3/t_9 +innodb_encrypted_3/t_90 +innodb_encrypted_3/t_91 +innodb_encrypted_3/t_92 +innodb_encrypted_3/t_93 +innodb_encrypted_3/t_94 +innodb_encrypted_3/t_95 +innodb_encrypted_3/t_96 +innodb_encrypted_3/t_97 +innodb_encrypted_3/t_98 +innodb_encrypted_3/t_99 use test; show status like 'innodb_pages0_read%'; Variable_name Value Innodb_pages0_read 3 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -200 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_2/t_1 +innodb_encrypted_2/t_10 +innodb_encrypted_2/t_100 +innodb_encrypted_2/t_11 +innodb_encrypted_2/t_12 +innodb_encrypted_2/t_13 +innodb_encrypted_2/t_14 +innodb_encrypted_2/t_15 +innodb_encrypted_2/t_16 +innodb_encrypted_2/t_17 +innodb_encrypted_2/t_18 +innodb_encrypted_2/t_19 +innodb_encrypted_2/t_2 +innodb_encrypted_2/t_20 +innodb_encrypted_2/t_21 +innodb_encrypted_2/t_22 +innodb_encrypted_2/t_23 +innodb_encrypted_2/t_24 +innodb_encrypted_2/t_25 +innodb_encrypted_2/t_26 +innodb_encrypted_2/t_27 +innodb_encrypted_2/t_28 +innodb_encrypted_2/t_29 +innodb_encrypted_2/t_3 +innodb_encrypted_2/t_30 +innodb_encrypted_2/t_31 +innodb_encrypted_2/t_32 +innodb_encrypted_2/t_33 +innodb_encrypted_2/t_34 +innodb_encrypted_2/t_35 +innodb_encrypted_2/t_36 +innodb_encrypted_2/t_37 +innodb_encrypted_2/t_38 +innodb_encrypted_2/t_39 +innodb_encrypted_2/t_4 +innodb_encrypted_2/t_40 +innodb_encrypted_2/t_41 +innodb_encrypted_2/t_42 +innodb_encrypted_2/t_43 +innodb_encrypted_2/t_44 +innodb_encrypted_2/t_45 +innodb_encrypted_2/t_46 +innodb_encrypted_2/t_47 +innodb_encrypted_2/t_48 +innodb_encrypted_2/t_49 +innodb_encrypted_2/t_5 +innodb_encrypted_2/t_50 +innodb_encrypted_2/t_51 +innodb_encrypted_2/t_52 +innodb_encrypted_2/t_53 +innodb_encrypted_2/t_54 +innodb_encrypted_2/t_55 +innodb_encrypted_2/t_56 +innodb_encrypted_2/t_57 +innodb_encrypted_2/t_58 +innodb_encrypted_2/t_59 +innodb_encrypted_2/t_6 +innodb_encrypted_2/t_60 +innodb_encrypted_2/t_61 +innodb_encrypted_2/t_62 +innodb_encrypted_2/t_63 +innodb_encrypted_2/t_64 +innodb_encrypted_2/t_65 +innodb_encrypted_2/t_66 +innodb_encrypted_2/t_67 +innodb_encrypted_2/t_68 +innodb_encrypted_2/t_69 +innodb_encrypted_2/t_7 +innodb_encrypted_2/t_70 +innodb_encrypted_2/t_71 +innodb_encrypted_2/t_72 +innodb_encrypted_2/t_73 +innodb_encrypted_2/t_74 +innodb_encrypted_2/t_75 +innodb_encrypted_2/t_76 +innodb_encrypted_2/t_77 +innodb_encrypted_2/t_78 +innodb_encrypted_2/t_79 +innodb_encrypted_2/t_8 +innodb_encrypted_2/t_80 +innodb_encrypted_2/t_81 +innodb_encrypted_2/t_82 +innodb_encrypted_2/t_83 +innodb_encrypted_2/t_84 +innodb_encrypted_2/t_85 +innodb_encrypted_2/t_86 +innodb_encrypted_2/t_87 +innodb_encrypted_2/t_88 +innodb_encrypted_2/t_89 +innodb_encrypted_2/t_9 +innodb_encrypted_2/t_90 +innodb_encrypted_2/t_91 +innodb_encrypted_2/t_92 +innodb_encrypted_2/t_93 +innodb_encrypted_2/t_94 +innodb_encrypted_2/t_95 +innodb_encrypted_2/t_96 +innodb_encrypted_2/t_97 +innodb_encrypted_2/t_98 +innodb_encrypted_2/t_99 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_3/t_1 +innodb_encrypted_3/t_10 +innodb_encrypted_3/t_100 +innodb_encrypted_3/t_11 +innodb_encrypted_3/t_12 +innodb_encrypted_3/t_13 +innodb_encrypted_3/t_14 +innodb_encrypted_3/t_15 +innodb_encrypted_3/t_16 +innodb_encrypted_3/t_17 +innodb_encrypted_3/t_18 +innodb_encrypted_3/t_19 +innodb_encrypted_3/t_2 +innodb_encrypted_3/t_20 +innodb_encrypted_3/t_21 +innodb_encrypted_3/t_22 +innodb_encrypted_3/t_23 +innodb_encrypted_3/t_24 +innodb_encrypted_3/t_25 +innodb_encrypted_3/t_26 +innodb_encrypted_3/t_27 +innodb_encrypted_3/t_28 +innodb_encrypted_3/t_29 +innodb_encrypted_3/t_3 +innodb_encrypted_3/t_30 +innodb_encrypted_3/t_31 +innodb_encrypted_3/t_32 +innodb_encrypted_3/t_33 +innodb_encrypted_3/t_34 +innodb_encrypted_3/t_35 +innodb_encrypted_3/t_36 +innodb_encrypted_3/t_37 +innodb_encrypted_3/t_38 +innodb_encrypted_3/t_39 +innodb_encrypted_3/t_4 +innodb_encrypted_3/t_40 +innodb_encrypted_3/t_41 +innodb_encrypted_3/t_42 +innodb_encrypted_3/t_43 +innodb_encrypted_3/t_44 +innodb_encrypted_3/t_45 +innodb_encrypted_3/t_46 +innodb_encrypted_3/t_47 +innodb_encrypted_3/t_48 +innodb_encrypted_3/t_49 +innodb_encrypted_3/t_5 +innodb_encrypted_3/t_50 +innodb_encrypted_3/t_51 +innodb_encrypted_3/t_52 +innodb_encrypted_3/t_53 +innodb_encrypted_3/t_54 +innodb_encrypted_3/t_55 +innodb_encrypted_3/t_56 +innodb_encrypted_3/t_57 +innodb_encrypted_3/t_58 +innodb_encrypted_3/t_59 +innodb_encrypted_3/t_6 +innodb_encrypted_3/t_60 +innodb_encrypted_3/t_61 +innodb_encrypted_3/t_62 +innodb_encrypted_3/t_63 +innodb_encrypted_3/t_64 +innodb_encrypted_3/t_65 +innodb_encrypted_3/t_66 +innodb_encrypted_3/t_67 +innodb_encrypted_3/t_68 +innodb_encrypted_3/t_69 +innodb_encrypted_3/t_7 +innodb_encrypted_3/t_70 +innodb_encrypted_3/t_71 +innodb_encrypted_3/t_72 +innodb_encrypted_3/t_73 +innodb_encrypted_3/t_74 +innodb_encrypted_3/t_75 +innodb_encrypted_3/t_76 +innodb_encrypted_3/t_77 +innodb_encrypted_3/t_78 +innodb_encrypted_3/t_79 +innodb_encrypted_3/t_8 +innodb_encrypted_3/t_80 +innodb_encrypted_3/t_81 +innodb_encrypted_3/t_82 +innodb_encrypted_3/t_83 +innodb_encrypted_3/t_84 +innodb_encrypted_3/t_85 +innodb_encrypted_3/t_86 +innodb_encrypted_3/t_87 +innodb_encrypted_3/t_88 +innodb_encrypted_3/t_89 +innodb_encrypted_3/t_9 +innodb_encrypted_3/t_90 +innodb_encrypted_3/t_91 +innodb_encrypted_3/t_92 +innodb_encrypted_3/t_93 +innodb_encrypted_3/t_94 +innodb_encrypted_3/t_95 +innodb_encrypted_3/t_96 +innodb_encrypted_3/t_97 +innodb_encrypted_3/t_98 +innodb_encrypted_3/t_99 SET GLOBAL innodb_encrypt_tables = on; SET GLOBAL innodb_encryption_threads=4; -# Wait until all encrypted tables have been encrypted -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -200 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_2/t_1 +innodb_encrypted_2/t_10 +innodb_encrypted_2/t_100 +innodb_encrypted_2/t_11 +innodb_encrypted_2/t_12 +innodb_encrypted_2/t_13 +innodb_encrypted_2/t_14 +innodb_encrypted_2/t_15 +innodb_encrypted_2/t_16 +innodb_encrypted_2/t_17 +innodb_encrypted_2/t_18 +innodb_encrypted_2/t_19 +innodb_encrypted_2/t_2 +innodb_encrypted_2/t_20 +innodb_encrypted_2/t_21 +innodb_encrypted_2/t_22 +innodb_encrypted_2/t_23 +innodb_encrypted_2/t_24 +innodb_encrypted_2/t_25 +innodb_encrypted_2/t_26 +innodb_encrypted_2/t_27 +innodb_encrypted_2/t_28 +innodb_encrypted_2/t_29 +innodb_encrypted_2/t_3 +innodb_encrypted_2/t_30 +innodb_encrypted_2/t_31 +innodb_encrypted_2/t_32 +innodb_encrypted_2/t_33 +innodb_encrypted_2/t_34 +innodb_encrypted_2/t_35 +innodb_encrypted_2/t_36 +innodb_encrypted_2/t_37 +innodb_encrypted_2/t_38 +innodb_encrypted_2/t_39 +innodb_encrypted_2/t_4 +innodb_encrypted_2/t_40 +innodb_encrypted_2/t_41 +innodb_encrypted_2/t_42 +innodb_encrypted_2/t_43 +innodb_encrypted_2/t_44 +innodb_encrypted_2/t_45 +innodb_encrypted_2/t_46 +innodb_encrypted_2/t_47 +innodb_encrypted_2/t_48 +innodb_encrypted_2/t_49 +innodb_encrypted_2/t_5 +innodb_encrypted_2/t_50 +innodb_encrypted_2/t_51 +innodb_encrypted_2/t_52 +innodb_encrypted_2/t_53 +innodb_encrypted_2/t_54 +innodb_encrypted_2/t_55 +innodb_encrypted_2/t_56 +innodb_encrypted_2/t_57 +innodb_encrypted_2/t_58 +innodb_encrypted_2/t_59 +innodb_encrypted_2/t_6 +innodb_encrypted_2/t_60 +innodb_encrypted_2/t_61 +innodb_encrypted_2/t_62 +innodb_encrypted_2/t_63 +innodb_encrypted_2/t_64 +innodb_encrypted_2/t_65 +innodb_encrypted_2/t_66 +innodb_encrypted_2/t_67 +innodb_encrypted_2/t_68 +innodb_encrypted_2/t_69 +innodb_encrypted_2/t_7 +innodb_encrypted_2/t_70 +innodb_encrypted_2/t_71 +innodb_encrypted_2/t_72 +innodb_encrypted_2/t_73 +innodb_encrypted_2/t_74 +innodb_encrypted_2/t_75 +innodb_encrypted_2/t_76 +innodb_encrypted_2/t_77 +innodb_encrypted_2/t_78 +innodb_encrypted_2/t_79 +innodb_encrypted_2/t_8 +innodb_encrypted_2/t_80 +innodb_encrypted_2/t_81 +innodb_encrypted_2/t_82 +innodb_encrypted_2/t_83 +innodb_encrypted_2/t_84 +innodb_encrypted_2/t_85 +innodb_encrypted_2/t_86 +innodb_encrypted_2/t_87 +innodb_encrypted_2/t_88 +innodb_encrypted_2/t_89 +innodb_encrypted_2/t_9 +innodb_encrypted_2/t_90 +innodb_encrypted_2/t_91 +innodb_encrypted_2/t_92 +innodb_encrypted_2/t_93 +innodb_encrypted_2/t_94 +innodb_encrypted_2/t_95 +innodb_encrypted_2/t_96 +innodb_encrypted_2/t_97 +innodb_encrypted_2/t_98 +innodb_encrypted_2/t_99 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_3/t_1 +innodb_encrypted_3/t_10 +innodb_encrypted_3/t_100 +innodb_encrypted_3/t_11 +innodb_encrypted_3/t_12 +innodb_encrypted_3/t_13 +innodb_encrypted_3/t_14 +innodb_encrypted_3/t_15 +innodb_encrypted_3/t_16 +innodb_encrypted_3/t_17 +innodb_encrypted_3/t_18 +innodb_encrypted_3/t_19 +innodb_encrypted_3/t_2 +innodb_encrypted_3/t_20 +innodb_encrypted_3/t_21 +innodb_encrypted_3/t_22 +innodb_encrypted_3/t_23 +innodb_encrypted_3/t_24 +innodb_encrypted_3/t_25 +innodb_encrypted_3/t_26 +innodb_encrypted_3/t_27 +innodb_encrypted_3/t_28 +innodb_encrypted_3/t_29 +innodb_encrypted_3/t_3 +innodb_encrypted_3/t_30 +innodb_encrypted_3/t_31 +innodb_encrypted_3/t_32 +innodb_encrypted_3/t_33 +innodb_encrypted_3/t_34 +innodb_encrypted_3/t_35 +innodb_encrypted_3/t_36 +innodb_encrypted_3/t_37 +innodb_encrypted_3/t_38 +innodb_encrypted_3/t_39 +innodb_encrypted_3/t_4 +innodb_encrypted_3/t_40 +innodb_encrypted_3/t_41 +innodb_encrypted_3/t_42 +innodb_encrypted_3/t_43 +innodb_encrypted_3/t_44 +innodb_encrypted_3/t_45 +innodb_encrypted_3/t_46 +innodb_encrypted_3/t_47 +innodb_encrypted_3/t_48 +innodb_encrypted_3/t_49 +innodb_encrypted_3/t_5 +innodb_encrypted_3/t_50 +innodb_encrypted_3/t_51 +innodb_encrypted_3/t_52 +innodb_encrypted_3/t_53 +innodb_encrypted_3/t_54 +innodb_encrypted_3/t_55 +innodb_encrypted_3/t_56 +innodb_encrypted_3/t_57 +innodb_encrypted_3/t_58 +innodb_encrypted_3/t_59 +innodb_encrypted_3/t_6 +innodb_encrypted_3/t_60 +innodb_encrypted_3/t_61 +innodb_encrypted_3/t_62 +innodb_encrypted_3/t_63 +innodb_encrypted_3/t_64 +innodb_encrypted_3/t_65 +innodb_encrypted_3/t_66 +innodb_encrypted_3/t_67 +innodb_encrypted_3/t_68 +innodb_encrypted_3/t_69 +innodb_encrypted_3/t_7 +innodb_encrypted_3/t_70 +innodb_encrypted_3/t_71 +innodb_encrypted_3/t_72 +innodb_encrypted_3/t_73 +innodb_encrypted_3/t_74 +innodb_encrypted_3/t_75 +innodb_encrypted_3/t_76 +innodb_encrypted_3/t_77 +innodb_encrypted_3/t_78 +innodb_encrypted_3/t_79 +innodb_encrypted_3/t_8 +innodb_encrypted_3/t_80 +innodb_encrypted_3/t_81 +innodb_encrypted_3/t_82 +innodb_encrypted_3/t_83 +innodb_encrypted_3/t_84 +innodb_encrypted_3/t_85 +innodb_encrypted_3/t_86 +innodb_encrypted_3/t_87 +innodb_encrypted_3/t_88 +innodb_encrypted_3/t_89 +innodb_encrypted_3/t_9 +innodb_encrypted_3/t_90 +innodb_encrypted_3/t_91 +innodb_encrypted_3/t_92 +innodb_encrypted_3/t_93 +innodb_encrypted_3/t_94 +innodb_encrypted_3/t_95 +innodb_encrypted_3/t_96 +innodb_encrypted_3/t_97 +innodb_encrypted_3/t_98 +innodb_encrypted_3/t_99 show status like 'innodb_pages0_read%'; Variable_name Value Innodb_pages0_read 3 @@ -127,26 +817,416 @@ Innodb_pages0_read 303 show status like 'innodb_pages0_read%'; Variable_name Value Innodb_pages0_read 303 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -200 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_3/t_1 +innodb_encrypted_3/t_10 +innodb_encrypted_3/t_100 +innodb_encrypted_3/t_11 +innodb_encrypted_3/t_12 +innodb_encrypted_3/t_13 +innodb_encrypted_3/t_14 +innodb_encrypted_3/t_15 +innodb_encrypted_3/t_16 +innodb_encrypted_3/t_17 +innodb_encrypted_3/t_18 +innodb_encrypted_3/t_19 +innodb_encrypted_3/t_2 +innodb_encrypted_3/t_20 +innodb_encrypted_3/t_21 +innodb_encrypted_3/t_22 +innodb_encrypted_3/t_23 +innodb_encrypted_3/t_24 +innodb_encrypted_3/t_25 +innodb_encrypted_3/t_26 +innodb_encrypted_3/t_27 +innodb_encrypted_3/t_28 +innodb_encrypted_3/t_29 +innodb_encrypted_3/t_3 +innodb_encrypted_3/t_30 +innodb_encrypted_3/t_31 +innodb_encrypted_3/t_32 +innodb_encrypted_3/t_33 +innodb_encrypted_3/t_34 +innodb_encrypted_3/t_35 +innodb_encrypted_3/t_36 +innodb_encrypted_3/t_37 +innodb_encrypted_3/t_38 +innodb_encrypted_3/t_39 +innodb_encrypted_3/t_4 +innodb_encrypted_3/t_40 +innodb_encrypted_3/t_41 +innodb_encrypted_3/t_42 +innodb_encrypted_3/t_43 +innodb_encrypted_3/t_44 +innodb_encrypted_3/t_45 +innodb_encrypted_3/t_46 +innodb_encrypted_3/t_47 +innodb_encrypted_3/t_48 +innodb_encrypted_3/t_49 +innodb_encrypted_3/t_5 +innodb_encrypted_3/t_50 +innodb_encrypted_3/t_51 +innodb_encrypted_3/t_52 +innodb_encrypted_3/t_53 +innodb_encrypted_3/t_54 +innodb_encrypted_3/t_55 +innodb_encrypted_3/t_56 +innodb_encrypted_3/t_57 +innodb_encrypted_3/t_58 +innodb_encrypted_3/t_59 +innodb_encrypted_3/t_6 +innodb_encrypted_3/t_60 +innodb_encrypted_3/t_61 +innodb_encrypted_3/t_62 +innodb_encrypted_3/t_63 +innodb_encrypted_3/t_64 +innodb_encrypted_3/t_65 +innodb_encrypted_3/t_66 +innodb_encrypted_3/t_67 +innodb_encrypted_3/t_68 +innodb_encrypted_3/t_69 +innodb_encrypted_3/t_7 +innodb_encrypted_3/t_70 +innodb_encrypted_3/t_71 +innodb_encrypted_3/t_72 +innodb_encrypted_3/t_73 +innodb_encrypted_3/t_74 +innodb_encrypted_3/t_75 +innodb_encrypted_3/t_76 +innodb_encrypted_3/t_77 +innodb_encrypted_3/t_78 +innodb_encrypted_3/t_79 +innodb_encrypted_3/t_8 +innodb_encrypted_3/t_80 +innodb_encrypted_3/t_81 +innodb_encrypted_3/t_82 +innodb_encrypted_3/t_83 +innodb_encrypted_3/t_84 +innodb_encrypted_3/t_85 +innodb_encrypted_3/t_86 +innodb_encrypted_3/t_87 +innodb_encrypted_3/t_88 +innodb_encrypted_3/t_89 +innodb_encrypted_3/t_9 +innodb_encrypted_3/t_90 +innodb_encrypted_3/t_91 +innodb_encrypted_3/t_92 +innodb_encrypted_3/t_93 +innodb_encrypted_3/t_94 +innodb_encrypted_3/t_95 +innodb_encrypted_3/t_96 +innodb_encrypted_3/t_97 +innodb_encrypted_3/t_98 +innodb_encrypted_3/t_99 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_2/t_1 +innodb_encrypted_2/t_10 +innodb_encrypted_2/t_100 +innodb_encrypted_2/t_11 +innodb_encrypted_2/t_12 +innodb_encrypted_2/t_13 +innodb_encrypted_2/t_14 +innodb_encrypted_2/t_15 +innodb_encrypted_2/t_16 +innodb_encrypted_2/t_17 +innodb_encrypted_2/t_18 +innodb_encrypted_2/t_19 +innodb_encrypted_2/t_2 +innodb_encrypted_2/t_20 +innodb_encrypted_2/t_21 +innodb_encrypted_2/t_22 +innodb_encrypted_2/t_23 +innodb_encrypted_2/t_24 +innodb_encrypted_2/t_25 +innodb_encrypted_2/t_26 +innodb_encrypted_2/t_27 +innodb_encrypted_2/t_28 +innodb_encrypted_2/t_29 +innodb_encrypted_2/t_3 +innodb_encrypted_2/t_30 +innodb_encrypted_2/t_31 +innodb_encrypted_2/t_32 +innodb_encrypted_2/t_33 +innodb_encrypted_2/t_34 +innodb_encrypted_2/t_35 +innodb_encrypted_2/t_36 +innodb_encrypted_2/t_37 +innodb_encrypted_2/t_38 +innodb_encrypted_2/t_39 +innodb_encrypted_2/t_4 +innodb_encrypted_2/t_40 +innodb_encrypted_2/t_41 +innodb_encrypted_2/t_42 +innodb_encrypted_2/t_43 +innodb_encrypted_2/t_44 +innodb_encrypted_2/t_45 +innodb_encrypted_2/t_46 +innodb_encrypted_2/t_47 +innodb_encrypted_2/t_48 +innodb_encrypted_2/t_49 +innodb_encrypted_2/t_5 +innodb_encrypted_2/t_50 +innodb_encrypted_2/t_51 +innodb_encrypted_2/t_52 +innodb_encrypted_2/t_53 +innodb_encrypted_2/t_54 +innodb_encrypted_2/t_55 +innodb_encrypted_2/t_56 +innodb_encrypted_2/t_57 +innodb_encrypted_2/t_58 +innodb_encrypted_2/t_59 +innodb_encrypted_2/t_6 +innodb_encrypted_2/t_60 +innodb_encrypted_2/t_61 +innodb_encrypted_2/t_62 +innodb_encrypted_2/t_63 +innodb_encrypted_2/t_64 +innodb_encrypted_2/t_65 +innodb_encrypted_2/t_66 +innodb_encrypted_2/t_67 +innodb_encrypted_2/t_68 +innodb_encrypted_2/t_69 +innodb_encrypted_2/t_7 +innodb_encrypted_2/t_70 +innodb_encrypted_2/t_71 +innodb_encrypted_2/t_72 +innodb_encrypted_2/t_73 +innodb_encrypted_2/t_74 +innodb_encrypted_2/t_75 +innodb_encrypted_2/t_76 +innodb_encrypted_2/t_77 +innodb_encrypted_2/t_78 +innodb_encrypted_2/t_79 +innodb_encrypted_2/t_8 +innodb_encrypted_2/t_80 +innodb_encrypted_2/t_81 +innodb_encrypted_2/t_82 +innodb_encrypted_2/t_83 +innodb_encrypted_2/t_84 +innodb_encrypted_2/t_85 +innodb_encrypted_2/t_86 +innodb_encrypted_2/t_87 +innodb_encrypted_2/t_88 +innodb_encrypted_2/t_89 +innodb_encrypted_2/t_9 +innodb_encrypted_2/t_90 +innodb_encrypted_2/t_91 +innodb_encrypted_2/t_92 +innodb_encrypted_2/t_93 +innodb_encrypted_2/t_94 +innodb_encrypted_2/t_95 +innodb_encrypted_2/t_96 +innodb_encrypted_2/t_97 +innodb_encrypted_2/t_98 +innodb_encrypted_2/t_99 SET GLOBAL innodb_encrypt_tables = off; SET GLOBAL innodb_encryption_threads=4; -# Wait until all default encrypted tables have been decrypted -# should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -100 -# should be 200 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -COUNT(*) -200 -show status like 'innodb_pages0_read%'; -Variable_name Value -Innodb_pages0_read 303 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_2/t_1 +innodb_encrypted_2/t_10 +innodb_encrypted_2/t_100 +innodb_encrypted_2/t_11 +innodb_encrypted_2/t_12 +innodb_encrypted_2/t_13 +innodb_encrypted_2/t_14 +innodb_encrypted_2/t_15 +innodb_encrypted_2/t_16 +innodb_encrypted_2/t_17 +innodb_encrypted_2/t_18 +innodb_encrypted_2/t_19 +innodb_encrypted_2/t_2 +innodb_encrypted_2/t_20 +innodb_encrypted_2/t_21 +innodb_encrypted_2/t_22 +innodb_encrypted_2/t_23 +innodb_encrypted_2/t_24 +innodb_encrypted_2/t_25 +innodb_encrypted_2/t_26 +innodb_encrypted_2/t_27 +innodb_encrypted_2/t_28 +innodb_encrypted_2/t_29 +innodb_encrypted_2/t_3 +innodb_encrypted_2/t_30 +innodb_encrypted_2/t_31 +innodb_encrypted_2/t_32 +innodb_encrypted_2/t_33 +innodb_encrypted_2/t_34 +innodb_encrypted_2/t_35 +innodb_encrypted_2/t_36 +innodb_encrypted_2/t_37 +innodb_encrypted_2/t_38 +innodb_encrypted_2/t_39 +innodb_encrypted_2/t_4 +innodb_encrypted_2/t_40 +innodb_encrypted_2/t_41 +innodb_encrypted_2/t_42 +innodb_encrypted_2/t_43 +innodb_encrypted_2/t_44 +innodb_encrypted_2/t_45 +innodb_encrypted_2/t_46 +innodb_encrypted_2/t_47 +innodb_encrypted_2/t_48 +innodb_encrypted_2/t_49 +innodb_encrypted_2/t_5 +innodb_encrypted_2/t_50 +innodb_encrypted_2/t_51 +innodb_encrypted_2/t_52 +innodb_encrypted_2/t_53 +innodb_encrypted_2/t_54 +innodb_encrypted_2/t_55 +innodb_encrypted_2/t_56 +innodb_encrypted_2/t_57 +innodb_encrypted_2/t_58 +innodb_encrypted_2/t_59 +innodb_encrypted_2/t_6 +innodb_encrypted_2/t_60 +innodb_encrypted_2/t_61 +innodb_encrypted_2/t_62 +innodb_encrypted_2/t_63 +innodb_encrypted_2/t_64 +innodb_encrypted_2/t_65 +innodb_encrypted_2/t_66 +innodb_encrypted_2/t_67 +innodb_encrypted_2/t_68 +innodb_encrypted_2/t_69 +innodb_encrypted_2/t_7 +innodb_encrypted_2/t_70 +innodb_encrypted_2/t_71 +innodb_encrypted_2/t_72 +innodb_encrypted_2/t_73 +innodb_encrypted_2/t_74 +innodb_encrypted_2/t_75 +innodb_encrypted_2/t_76 +innodb_encrypted_2/t_77 +innodb_encrypted_2/t_78 +innodb_encrypted_2/t_79 +innodb_encrypted_2/t_8 +innodb_encrypted_2/t_80 +innodb_encrypted_2/t_81 +innodb_encrypted_2/t_82 +innodb_encrypted_2/t_83 +innodb_encrypted_2/t_84 +innodb_encrypted_2/t_85 +innodb_encrypted_2/t_86 +innodb_encrypted_2/t_87 +innodb_encrypted_2/t_88 +innodb_encrypted_2/t_89 +innodb_encrypted_2/t_9 +innodb_encrypted_2/t_90 +innodb_encrypted_2/t_91 +innodb_encrypted_2/t_92 +innodb_encrypted_2/t_93 +innodb_encrypted_2/t_94 +innodb_encrypted_2/t_95 +innodb_encrypted_2/t_96 +innodb_encrypted_2/t_97 +innodb_encrypted_2/t_98 +innodb_encrypted_2/t_99 +SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME; +NAME +innodb_encrypted_3/t_1 +innodb_encrypted_3/t_10 +innodb_encrypted_3/t_100 +innodb_encrypted_3/t_11 +innodb_encrypted_3/t_12 +innodb_encrypted_3/t_13 +innodb_encrypted_3/t_14 +innodb_encrypted_3/t_15 +innodb_encrypted_3/t_16 +innodb_encrypted_3/t_17 +innodb_encrypted_3/t_18 +innodb_encrypted_3/t_19 +innodb_encrypted_3/t_2 +innodb_encrypted_3/t_20 +innodb_encrypted_3/t_21 +innodb_encrypted_3/t_22 +innodb_encrypted_3/t_23 +innodb_encrypted_3/t_24 +innodb_encrypted_3/t_25 +innodb_encrypted_3/t_26 +innodb_encrypted_3/t_27 +innodb_encrypted_3/t_28 +innodb_encrypted_3/t_29 +innodb_encrypted_3/t_3 +innodb_encrypted_3/t_30 +innodb_encrypted_3/t_31 +innodb_encrypted_3/t_32 +innodb_encrypted_3/t_33 +innodb_encrypted_3/t_34 +innodb_encrypted_3/t_35 +innodb_encrypted_3/t_36 +innodb_encrypted_3/t_37 +innodb_encrypted_3/t_38 +innodb_encrypted_3/t_39 +innodb_encrypted_3/t_4 +innodb_encrypted_3/t_40 +innodb_encrypted_3/t_41 +innodb_encrypted_3/t_42 +innodb_encrypted_3/t_43 +innodb_encrypted_3/t_44 +innodb_encrypted_3/t_45 +innodb_encrypted_3/t_46 +innodb_encrypted_3/t_47 +innodb_encrypted_3/t_48 +innodb_encrypted_3/t_49 +innodb_encrypted_3/t_5 +innodb_encrypted_3/t_50 +innodb_encrypted_3/t_51 +innodb_encrypted_3/t_52 +innodb_encrypted_3/t_53 +innodb_encrypted_3/t_54 +innodb_encrypted_3/t_55 +innodb_encrypted_3/t_56 +innodb_encrypted_3/t_57 +innodb_encrypted_3/t_58 +innodb_encrypted_3/t_59 +innodb_encrypted_3/t_6 +innodb_encrypted_3/t_60 +innodb_encrypted_3/t_61 +innodb_encrypted_3/t_62 +innodb_encrypted_3/t_63 +innodb_encrypted_3/t_64 +innodb_encrypted_3/t_65 +innodb_encrypted_3/t_66 +innodb_encrypted_3/t_67 +innodb_encrypted_3/t_68 +innodb_encrypted_3/t_69 +innodb_encrypted_3/t_7 +innodb_encrypted_3/t_70 +innodb_encrypted_3/t_71 +innodb_encrypted_3/t_72 +innodb_encrypted_3/t_73 +innodb_encrypted_3/t_74 +innodb_encrypted_3/t_75 +innodb_encrypted_3/t_76 +innodb_encrypted_3/t_77 +innodb_encrypted_3/t_78 +innodb_encrypted_3/t_79 +innodb_encrypted_3/t_8 +innodb_encrypted_3/t_80 +innodb_encrypted_3/t_81 +innodb_encrypted_3/t_82 +innodb_encrypted_3/t_83 +innodb_encrypted_3/t_84 +innodb_encrypted_3/t_85 +innodb_encrypted_3/t_86 +innodb_encrypted_3/t_87 +innodb_encrypted_3/t_88 +innodb_encrypted_3/t_89 +innodb_encrypted_3/t_9 +innodb_encrypted_3/t_90 +innodb_encrypted_3/t_91 +innodb_encrypted_3/t_92 +innodb_encrypted_3/t_93 +innodb_encrypted_3/t_94 +innodb_encrypted_3/t_95 +innodb_encrypted_3/t_96 +innodb_encrypted_3/t_97 +innodb_encrypted_3/t_98 +innodb_encrypted_3/t_99 use test; drop database innodb_encrypted_1; drop database innodb_encrypted_2; diff --git a/mysql-test/suite/encryption/t/innodb-first-page-read.test b/mysql-test/suite/encryption/t/innodb-first-page-read.test index 1fc07159e05..d661e4565d2 100644 --- a/mysql-test/suite/encryption/t/innodb-first-page-read.test +++ b/mysql-test/suite/encryption/t/innodb-first-page-read.test @@ -7,6 +7,8 @@ SET GLOBAL innodb_file_format = `Barracuda`; SET GLOBAL innodb_file_per_table = ON; --enable_warnings +FLUSH STATUS; + create database innodb_test; use innodb_test; create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; @@ -63,16 +65,19 @@ insert into innodb_datadir2 select * from innodb_normal; insert into innodb_datadir3 select * from innodb_normal; commit; +FLUSH STATUS; + --echo # Restart server and see how many page 0's are read --source include/restart_mysqld.inc ---echo # result should be less than actual number of tables ---echo # i.e. < 23 + 3 = 26 -show status like 'innodb_pages0_read%'; +--echo # result should actual number of tables except remote tables could be read twice +--echo # i.e. < 23 + 3*2 = 29 + +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; use innodb_test; -show status like 'innodb_pages0_read%'; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; use test; -show status like 'innodb_pages0_read%'; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; set global innodb_encrypt_tables=OFF; @@ -80,18 +85,25 @@ set global innodb_encrypt_tables=OFF; --let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 --source include/wait_condition.inc -show status like 'innodb_pages0_read%'; +--echo # result should be actual number of tables except remote tables could be read twice +--echo # i.e. < 23 + 3*2 = 29 + +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; use innodb_test; -show status like 'innodb_pages0_read%'; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; use test; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; + +FLUSH STATUS; --echo # restart and see number read page 0 -- source include/restart_mysqld.inc -show status like 'innodb_pages0_read%'; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; use innodb_test; -show status like 'innodb_pages0_read%'; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; use test; +SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read'; drop database innodb_test; -show status like 'innodb_pages0_read%'; +FLUSH STATUS; diff --git a/mysql-test/suite/encryption/t/innodb_encryption.test b/mysql-test/suite/encryption/t/innodb_encryption.test index 6e9f80aac0c..aab8c56f072 100644 --- a/mysql-test/suite/encryption/t/innodb_encryption.test +++ b/mysql-test/suite/encryption/t/innodb_encryption.test @@ -15,78 +15,29 @@ SET @start_global_value = @@global.innodb_encryption_threads; SHOW VARIABLES LIKE 'innodb_encrypt%'; -DESCRIBE INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; - ---echo # Wait max 5 min for key encryption threads to encrypt one space -let $cnt=300; -while ($cnt) -{ - let $success=`SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION > 0`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} ---echo # Success! +SET GLOBAL innodb_encrypt_tables = ON; + +--echo # Wait max 10 min for key encryption threads to encrypt all spaces +--let $wait_timeout= 600 +--let $wait_condition=SELECT COUNT(*) >= 1 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; ---echo # Wait max 10 min for key encryption threads to encrypt all space -let $cnt=600; -while ($cnt) -{ - let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} --echo # Success! --echo # Now turn off encryption and wait for threads to decrypt everything SET GLOBAL innodb_encrypt_tables = off; ---echo # Wait max 10 min for key encryption threads to decrypt all space -let $cnt=600; -while ($cnt) -{ - let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} +--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; + --echo # Success! --echo # Shutdown innodb_encryption_threads @@ -97,84 +48,32 @@ SET GLOBAL innodb_encryption_threads=0; SET GLOBAL innodb_encrypt_tables = on; --echo # Wait 15s to check that nothing gets encrypted -let $cnt=15; -while ($cnt) -{ - let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0`; - if ($success) - { - real_sleep 1; - dec $cnt; - } - if (!$success) - { - SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; - -- die Failure, tablespace getting encrypted even if innodb_encryption_threads=0 - } -} +--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; + --echo # Success! --echo # Startup innodb_encryption_threads SET GLOBAL innodb_encryption_threads=@start_global_value; ---echo # Wait 1 min to check that it start encrypting again -let $cnt=60; -while ($cnt) -{ - let $success=`SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 OR KEY_ROTATION_PAGE_NUMBER IS NOT NULL`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} ---echo # Success! +--echo # Wait max 10 min for key encryption threads to encrypt all spaces +--let $wait_timeout= 600 +--let $wait_condition=SELECT COUNT(*) >=1 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; ---echo # ---echo # Check that restart with encryption turned off works ---echo # even if spaces are encrypted ---echo # ---echo # First wait max 10 min for key encryption threads to encrypt all spaces -let $cnt=600; -while ($cnt) -{ - let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} --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%'; -SELECT COUNT(*) > 0 as should_be_1 -FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION -WHERE MIN_KEY_VERSION <> 0; ---echo # Restart mysqld again...with default options --- let $restart_parameters= --- source include/restart_mysqld.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; diff --git a/mysql-test/suite/encryption/t/innodb_lotoftables.test b/mysql-test/suite/encryption/t/innodb_lotoftables.test index 6e87c93df4b..cd3c6a30c07 100644 --- a/mysql-test/suite/encryption/t/innodb_lotoftables.test +++ b/mysql-test/suite/encryption/t/innodb_lotoftables.test @@ -48,9 +48,8 @@ show status like 'innodb_pages0_read%'; # # Verify # ---echo # should be 100 - -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%'; +--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 @@ -84,10 +83,10 @@ show status like 'innodb_pages0_read%'; # # Verify # ---echo # should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; ---echo # should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; +--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 @@ -121,45 +120,26 @@ show status like 'innodb_pages0_read%'; # # Verify # ---echo # should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; ---echo # should be 200 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; +--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 COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; +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; ---echo # Wait until all encrypted tables have been encrypted -let $cnt=600; -while ($cnt) -{ - let $success=`SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; - SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} +--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 COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; +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! @@ -226,40 +206,19 @@ while ($tables) show status like 'innodb_pages0_read%'; -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; +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; ---echo # Wait until all default encrypted tables have been decrypted -let $cnt=600; -while ($cnt) -{ - let $success=`SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0`; - if ($success) - { - let $cnt=0; - } - if (!$success) - { - real_sleep 1; - dec $cnt; - } -} -if (!$success) -{ - SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0; - SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0; - SHOW STATUS LIKE 'innodb_encryption%'; - -- die Timeout waiting for encryption threads -} +--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 ---echo # should be 100 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%'; ---echo # should be 200 -SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%'; -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; # # Cleanup diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc index faf57a33cab..e106031d8c3 100644 --- a/storage/innobase/fil/fil0crypt.cc +++ b/storage/innobase/fil/fil0crypt.cc @@ -1345,7 +1345,7 @@ fil_crypt_realloc_iops( ("thr_no: %u only waited " ULINTPF "%% skip re-estimate.", state->thread_no, - (100 * state->cnt_waited) / state->batch)); + (100 * state->cnt_waited) / (state->batch ? state->batch : 1))); } if (state->estimated_max_iops <= state->allocated_iops) { @@ -1448,7 +1448,7 @@ fil_crypt_find_space_to_rotate( /* we need iops to start rotating */ while (!state->should_shutdown() && !fil_crypt_alloc_iops(state)) { os_event_reset(fil_crypt_threads_event); - os_event_wait_time(fil_crypt_threads_event, 1000000); + os_event_wait_time(fil_crypt_threads_event, 100000); } if (state->should_shutdown()) { @@ -2271,7 +2271,13 @@ fil_crypt_set_thread_cnt( while(srv_n_fil_crypt_threads_started != srv_n_fil_crypt_threads) { os_event_reset(fil_crypt_event); - os_event_wait_time(fil_crypt_event, 1000000); + os_event_wait_time(fil_crypt_event, 100000); + } + + /* Send a message to encryption threads that there could be + something to do. */ + if (srv_n_fil_crypt_threads) { + os_event_set(fil_crypt_threads_event); } } @@ -2424,10 +2430,11 @@ fil_space_crypt_get_status( fil_crypt_read_crypt_data(const_cast<fil_space_t*>(space)); } + status->space = ULINT_UNDEFINED; fil_space_crypt_t* crypt_data = space->crypt_data; - status->space = space->id; if (crypt_data != NULL) { + status->space = space->id; mutex_enter(&crypt_data->mutex); status->scheme = crypt_data->type; status->keyserver_requests = crypt_data->keyserver_requests; diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc index 1cafb253630..72f851f05a6 100644 --- a/storage/innobase/fil/fil0fil.cc +++ b/storage/innobase/fil/fil0fil.cc @@ -4341,11 +4341,20 @@ fil_ibd_open( skip_validate: if (err == DB_SUCCESS) { - fil_space_t* space = fil_space_create( - space_name, id, flags, purpose, - df_remote.is_open() ? df_remote.get_crypt_info() : - df_dict.is_open() ? df_dict.get_crypt_info() : - df_default.get_crypt_info()); + const page_size_t page_size(flags); + + const byte* first_page = + df_default.is_open() ? df_default.get_first_page() : + df_dict.is_open() ? df_dict.get_first_page() : + df_remote.get_first_page(); + + fil_space_crypt_t* crypt_data = first_page ? + fil_space_read_crypt_data( + page_size, first_page) : NULL; + + fil_space_t* space = fil_space_create( + space_name, id, flags, purpose, + crypt_data); /* We do not measure the size of the file, that is why we pass the 0 below */ @@ -4663,9 +4672,14 @@ fil_ibd_load( << FSP_FLAGS_MEM_COMPRESSION_LEVEL; } + const page_size_t page_size(flags); + const byte* first_page = file.get_first_page(); + fil_space_crypt_t* crypt_data = first_page ? + fil_space_read_crypt_data( + page_size, first_page) : NULL; space = fil_space_create( file.name(), space_id, flags, FIL_TYPE_TABLESPACE, - file.get_crypt_info()); + crypt_data); if (space == NULL) { return(FIL_LOAD_INVALID); diff --git a/storage/innobase/fsp/fsp0file.cc b/storage/innobase/fsp/fsp0file.cc index 4f03ace9d8e..c21c9497735 100644 --- a/storage/innobase/fsp/fsp0file.cc +++ b/storage/innobase/fsp/fsp0file.cc @@ -58,11 +58,6 @@ Datafile::shutdown() ut_free(m_name); m_name = NULL; - - /* The fil_space_t::crypt_data was freed in - fil_space_free_low(). Invalidate our redundant pointer. */ - m_crypt_info = NULL; - free_filepath(); free_first_page(); } @@ -374,8 +369,6 @@ Datafile::read_first_page(bool read_only_mode) return(DB_CORRUPTION); } - m_crypt_info = fil_space_read_crypt_data(ps, m_first_page); - return(err); } diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc index ca0c712f608..5e89312a9de 100644 --- a/storage/innobase/fsp/fsp0fsp.cc +++ b/storage/innobase/fsp/fsp0fsp.cc @@ -799,8 +799,12 @@ fsp_header_init(ulint space_id, ulint size, mtr_t* mtr) fsp_fill_free_list(!is_system_tablespace(space_id), space, header, mtr); - if (space->crypt_data) { - space->crypt_data->write_page0(space, page, mtr); + /* Write encryption metadata to page 0 if tablespace is + encrypted or encryption is disabled by table option. */ + if (space->crypt_data && + (space->crypt_data->should_encrypt() || + space->crypt_data->not_encrypted())) { + space->crypt_data->write_page0(space, page, mtr); } } diff --git a/storage/innobase/fsp/fsp0space.cc b/storage/innobase/fsp/fsp0space.cc index 94fae3d973b..9ca2786b935 100644 --- a/storage/innobase/fsp/fsp0space.cc +++ b/storage/innobase/fsp/fsp0space.cc @@ -125,7 +125,7 @@ Tablespace::open_or_create(bool is_temp) m_name, m_space_id, FSP_FLAGS_PAGE_SSIZE(), is_temp ? FIL_TYPE_TEMPORARY : FIL_TYPE_TABLESPACE, - it->m_crypt_info); + NULL); } ut_a(fil_validate()); diff --git a/storage/innobase/fsp/fsp0sysspace.cc b/storage/innobase/fsp/fsp0sysspace.cc index e4bb11c9a22..cc156a5353a 100644 --- a/storage/innobase/fsp/fsp0sysspace.cc +++ b/storage/innobase/fsp/fsp0sysspace.cc @@ -562,8 +562,6 @@ SysTablespace::read_lsn_and_check_flags(lsn_t* flushed_lsn) err = it->read_first_page( m_ignore_read_only ? false : srv_read_only_mode); - m_crypt_info = it->m_crypt_info; - if (err != DB_SUCCESS) { return(err); } @@ -919,19 +917,10 @@ SysTablespace::open_or_create( /* Create the tablespace entry for the multi-file tablespace in the tablespace manager. */ - - if (!m_crypt_info) { - /* Create default crypt info for system - tablespace if it does not yet exists. */ - m_crypt_info = fil_space_create_crypt_data( - FIL_ENCRYPTION_DEFAULT, - FIL_DEFAULT_ENCRYPTION_KEY); - } - space = fil_space_create( name(), space_id(), flags(), is_temp ? FIL_TYPE_TEMPORARY : FIL_TYPE_TABLESPACE, - m_crypt_info); + NULL); } ut_a(fil_validate()); diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc index 8f04f9d15ee..8880d21aafb 100644 --- a/storage/innobase/handler/i_s.cc +++ b/storage/innobase/handler/i_s.cc @@ -8606,6 +8606,12 @@ i_s_dict_fill_tablespaces_encryption( fil_space_crypt_get_status(space, &status); + /* If tablespace id does not match, we did not find + encryption information for this tablespace. */ + if (!space->crypt_data || space->id != status.space) { + goto skip; + } + OK(fields[TABLESPACES_ENCRYPTION_SPACE]->store(space->id, true)); OK(field_store_string(fields[TABLESPACES_ENCRYPTION_NAME], @@ -8640,6 +8646,7 @@ i_s_dict_fill_tablespaces_encryption( OK(schema_table_store_record(thd, table_to_fill)); +skip: DBUG_RETURN(0); } /*******************************************************************//** diff --git a/storage/innobase/include/fsp0file.h b/storage/innobase/include/fsp0file.h index 974de9c75ed..8f9d45365f5 100644 --- a/storage/innobase/include/fsp0file.h +++ b/storage/innobase/include/fsp0file.h @@ -66,8 +66,7 @@ public: m_first_page_buf(), m_first_page(), m_last_os_error(), - m_file_info(), - m_crypt_info() + m_file_info() { /* No op */ } @@ -89,8 +88,7 @@ public: m_first_page_buf(), m_first_page(), m_last_os_error(), - m_file_info(), - m_crypt_info() + m_file_info() { ut_ad(m_name != NULL); /* No op */ @@ -110,8 +108,7 @@ public: m_first_page_buf(), m_first_page(), m_last_os_error(), - m_file_info(), - m_crypt_info() + m_file_info() { m_name = mem_strdup(file.m_name); ut_ad(m_name != NULL); @@ -169,8 +166,6 @@ public: it should be reread if needed */ m_first_page_buf = NULL; m_first_page = NULL; - /* Do not copy crypt info it is read from first page */ - m_crypt_info = NULL; return(*this); } @@ -321,11 +316,6 @@ public: return(m_last_os_error); } - fil_space_crypt_t* get_crypt_info() const - { - return(m_crypt_info); - } - /** Test if the filepath provided looks the same as this filepath by string comparison. If they are two different paths to the same file, same_as() will be used to show that after the files are opened. @@ -339,6 +329,11 @@ public: @return true if it is the same file, else false */ bool same_as(const Datafile& other) const; + const byte* get_first_page() const + { + return (m_first_page); + } + private: /** Free the filepath buffer. */ void free_filepath(); @@ -465,9 +460,6 @@ public: /* Use field st_ino. */ struct stat m_file_info; #endif /* WIN32 */ - - /** Encryption information */ - fil_space_crypt_t* m_crypt_info; }; diff --git a/storage/innobase/include/fsp0sysspace.h b/storage/innobase/include/fsp0sysspace.h index b8890adad74..efbd4fc3f24 100644 --- a/storage/innobase/include/fsp0sysspace.h +++ b/storage/innobase/include/fsp0sysspace.h @@ -53,8 +53,7 @@ public: m_last_file_size_max(), m_created_new_raw(), m_is_tablespace_full(false), - m_sanity_checks_done(false), - m_crypt_info() + m_sanity_checks_done(false) { /* No op */ } @@ -264,9 +263,6 @@ private: /** if false, then sanity checks are still pending */ bool m_sanity_checks_done; - - /** Encryption information */ - fil_space_crypt_t* m_crypt_info; }; /* GLOBAL OBJECTS */ diff --git a/storage/xtradb/fil/fil0crypt.cc b/storage/xtradb/fil/fil0crypt.cc index 2be598cc18f..99b080ba402 100644 --- a/storage/xtradb/fil/fil0crypt.cc +++ b/storage/xtradb/fil/fil0crypt.cc @@ -1403,7 +1403,7 @@ fil_crypt_realloc_iops( DBUG_PRINT("ib_crypt", ("thr_no: %u only waited %lu%% skip re-estimate.", state->thread_no, - (100 * state->cnt_waited) / state->batch)); + (100 * state->cnt_waited) / (state->batch ? state->batch : 1))); } if (state->estimated_max_iops <= state->allocated_iops) { @@ -1506,7 +1506,7 @@ fil_crypt_find_space_to_rotate( /* we need iops to start rotating */ while (!state->should_shutdown() && !fil_crypt_alloc_iops(state)) { os_event_reset(fil_crypt_threads_event); - os_event_wait_time(fil_crypt_threads_event, 1000000); + os_event_wait_time(fil_crypt_threads_event, 100000); } if (state->should_shutdown()) { @@ -2303,7 +2303,7 @@ fil_crypt_set_thread_cnt( os_thread_create(fil_crypt_thread, NULL, &rotation_thread_id); ib_logf(IB_LOG_LEVEL_INFO, - "Creating #%d thread id %lu total threads %u.", + "Creating #%d encryption thread id %lu total threads %u.", i+1, os_thread_pf(rotation_thread_id), new_cnt); } } else if (new_cnt < srv_n_fil_crypt_threads) { @@ -2315,7 +2315,13 @@ fil_crypt_set_thread_cnt( while(srv_n_fil_crypt_threads_started != srv_n_fil_crypt_threads) { os_event_reset(fil_crypt_event); - os_event_wait_time(fil_crypt_event, 1000000); + os_event_wait_time(fil_crypt_event, 100000); + } + + /* Send a message to encryption threads that there could be + something to do. */ + if (srv_n_fil_crypt_threads) { + os_event_set(fil_crypt_threads_event); } } @@ -2461,9 +2467,10 @@ fil_space_crypt_get_status( ut_ad(space->n_pending_ops > 0); fil_crypt_read_crypt_data(const_cast<fil_space_t*>(space)); - status->space = space->id; + status->space = ULINT_UNDEFINED; if (fil_space_crypt_t* crypt_data = space->crypt_data) { + status->space = space->id; mutex_enter(&crypt_data->mutex); status->scheme = crypt_data->type; status->keyserver_requests = crypt_data->keyserver_requests; diff --git a/storage/xtradb/fil/fil0fil.cc b/storage/xtradb/fil/fil0fil.cc index d0d98b4b77d..a8752059b5b 100644 --- a/storage/xtradb/fil/fil0fil.cc +++ b/storage/xtradb/fil/fil0fil.cc @@ -654,7 +654,7 @@ fil_node_open_file( page = static_cast<byte*>(ut_align(buf2, UNIV_PAGE_SIZE)); success = os_file_read(node->handle, page, 0, UNIV_PAGE_SIZE); - srv_stats.page0_read.add(1); + srv_stats.page0_read.inc(); const ulint space_id = fsp_header_get_space_id(page); ulint flags = fsp_header_get_flags(page); @@ -2268,7 +2268,7 @@ fil_write_flushed_lsn( /* If tablespace is not encrypted, stamp flush_lsn to first page of all system tablespace datafiles to avoid unnecessary error messages on possible downgrade. */ - if (space->crypt_data->min_key_version == 0) { + if (!space->crypt_data || space->crypt_data->min_key_version == 0) { fil_node_t* node; ulint sum_of_sizes = 0; @@ -2414,7 +2414,7 @@ fil_read_first_page( os_file_read(data_file, page, 0, UNIV_PAGE_SIZE); - srv_stats.page0_read.add(1); + srv_stats.page0_read.inc(); /* The FSP_HEADER on page 0 is only valid for the first file in a tablespace. So if this is not the first datafile, leave diff --git a/storage/xtradb/fsp/fsp0fsp.cc b/storage/xtradb/fsp/fsp0fsp.cc index a2c11224ffd..02683e298cb 100644 --- a/storage/xtradb/fsp/fsp0fsp.cc +++ b/storage/xtradb/fsp/fsp0fsp.cc @@ -729,7 +729,11 @@ fsp_header_init(ulint space_id, ulint size, mtr_t* mtr) fil_space_t* space = fil_space_acquire(space_id); ut_ad(space); - if (space->crypt_data) { + /* Write encryption metadata to page 0 if tablespace is + encrypted or encryption is disabled by table option. */ + if (space->crypt_data && + (space->crypt_data->should_encrypt() || + space->crypt_data->not_encrypted())) { space->crypt_data->write_page0(page, mtr); } diff --git a/storage/xtradb/handler/i_s.cc b/storage/xtradb/handler/i_s.cc index 9cef04c4244..ca2c76c31ad 100644 --- a/storage/xtradb/handler/i_s.cc +++ b/storage/xtradb/handler/i_s.cc @@ -8524,6 +8524,12 @@ i_s_dict_fill_tablespaces_encryption( fil_space_crypt_get_status(space, &status); + /* If tablespace id does not match, we did not find + encryption information for this tablespace. */ + if (!space->crypt_data || space->id != status.space) { + goto skip; + } + OK(fields[TABLESPACES_ENCRYPTION_SPACE]->store(space->id)); OK(field_store_string(fields[TABLESPACES_ENCRYPTION_NAME], @@ -8558,6 +8564,7 @@ i_s_dict_fill_tablespaces_encryption( OK(schema_table_store_record(thd, table_to_fill)); +skip: DBUG_RETURN(0); } /*******************************************************************//** diff --git a/storage/xtradb/srv/srv0start.cc b/storage/xtradb/srv/srv0start.cc index fadbeacbc97..7d614a12d8c 100644 --- a/storage/xtradb/srv/srv0start.cc +++ b/storage/xtradb/srv/srv0start.cc @@ -1228,11 +1228,6 @@ check_first_page: ut_a(ret); if (i == 0) { - if (!crypt_data) { - crypt_data = fil_space_create_crypt_data(FIL_ENCRYPTION_DEFAULT, - FIL_DEFAULT_ENCRYPTION_KEY); - } - flags = FSP_FLAGS_PAGE_SSIZE(); fil_space_create(name, 0, flags, FIL_TABLESPACE, |