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
|
-- source include/innodb_checksum_algorithm.inc
-- source include/innodb_page_size.inc
-- source include/have_file_key_management_plugin.inc
SET @saved_file_per_table = @@global.innodb_file_per_table;
SET @saved_encrypt_tables = @@global.innodb_encrypt_tables;
SET @saved_encryption_threads = @@global.innodb_encryption_threads;
SET @saved_encryption_key_id = @@global.innodb_default_encryption_key_id;
SET GLOBAL innodb_file_per_table = ON;
SET GLOBAL innodb_encrypt_tables = ON;
SET GLOBAL innodb_encryption_threads = 4;
SET GLOBAL innodb_default_encryption_key_id=4;
let MYSQLD_DATADIR =`SELECT @@datadir`;
# ROW_FORMAT=COMPRESSED is unavailable with innodb_page_size=32k or 64k
let $row_format_compressed= `select case when @@global.innodb_page_size>16384
then 'ROW_FORMAT=DYNAMIC' else 'ROW_FORMAT=COMPRESSED' end`;
eval create table tce(a serial, b blob, index(b(10))) engine=innodb
$row_format_compressed encrypted=yes;
eval create table tc(a serial, b blob, index(b(10))) engine=innodb
$row_format_compressed encrypted=no;
eval create table te(a serial, b blob, index(b(10))) engine=innodb
encrypted=yes;
eval create table t(a serial, b blob, index(b(10))) engine=innodb
encrypted=no;
eval create table tpe(a serial, b blob, index(b(10))) engine=innodb
page_compressed=yes encrypted=yes;
eval create table tp(a serial, b blob, index(b(10))) engine=innodb
page_compressed=yes encrypted=no;
begin;
eval insert into tce(b) values (repeat('secret',20));
eval insert into tc(b) values (repeat('secret',20));
eval insert into te(b) values (repeat('secret',20));
eval insert into t(b) values (repeat('secret',20));
eval insert into tpe(b) values (repeat('secret',20));
eval insert into tp(b) values (repeat('secret',20));
commit;
eval FLUSH TABLES tce, tc, te, t, tpe, tp FOR EXPORT;
perl;
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
ib_backup_tablespaces("test", ("tce", "tc", "te", "t", "tpe", "tp"));
EOF
--list_files $MYSQLD_DATADIR/test
UNLOCK TABLES;
ALTER TABLE tce DISCARD TABLESPACE;
ALTER TABLE tc DISCARD TABLESPACE;
ALTER TABLE te DISCARD TABLESPACE;
ALTER TABLE t DISCARD TABLESPACE;
ALTER TABLE tpe DISCARD TABLESPACE;
ALTER TABLE tp DISCARD TABLESPACE;
perl;
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
ib_restore_tablespaces("test", ("tce", "tc", "te", "t", "tpe", "tp"));
EOF
ALTER TABLE tce IMPORT TABLESPACE;
update tce set b=substr(b,1);
ALTER TABLE tc IMPORT TABLESPACE;
update tc set b=substr(b,1);
ALTER TABLE te IMPORT TABLESPACE;
update te set b=substr(b,1);
ALTER TABLE t IMPORT TABLESPACE;
update t set b=substr(b,1);
ALTER TABLE tpe IMPORT TABLESPACE;
update tpe set b=substr(b,1);
ALTER TABLE tp IMPORT TABLESPACE;
update tp set b=substr(b,1);
CHECK TABLE tce, tc, te, t, tpe, tp;
DROP TABLE tce, tc, te, t, tpe, tp;
SET GLOBAL innodb_file_per_table = @saved_file_per_table;
SET GLOBAL innodb_encrypt_tables = @saved_encrypt_tables;
SET GLOBAL innodb_encryption_threads = @saved_encryption_threads;
SET GLOBAL innodb_default_encryption_key_id = @saved_encryption_key_id;
|