File: log_encrypt_4.inc

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (147 lines) | stat: -rw-r--r-- 6,547 bytes parent folder | download
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# InnoDB transparent encryption on redo log.
# This test case will check innodb_redo_log_encrypt=ON/OFF with bootstrap
# and start server by setting innodb_redo_log_encrypt=ON/OFF

# Suppress following messages from myslqd log
--disable_query_log
call mtr.add_suppression("Error while loading keyring content. The keyring might be malformed");
call mtr.add_suppression("Resizing redo log from");
call mtr.add_suppression("Redo log has been requested to resize");
call mtr.add_suppression("Starting to delete and rewrite redo log files.");
call mtr.add_suppression("New redo log files created, LSN=");
call mtr.add_suppression("\\[ERROR\\] .* Can't set redo log files to be encrypted.");
--enable_query_log

let $old_innodb_file_per_table = `SELECT @@innodb_file_per_table`;
let $old_innodb_redo_log_encrypt = `SELECT @@innodb_redo_log_encrypt`;
let $START_PAGE_SIZE= `select @@innodb_page_size`;
let $LOG_SIZE= `select @@innodb_redo_log_capacity`;
let $LOG_SIZE_SCALED_UP= `select @@innodb_redo_log_capacity * 3 div 2`;
let $MYSQLD_BASEDIR= `select @@basedir`;

--mkdir $MYSQL_TMP_DIR/log_encrypt_dir1
--mkdir $MYSQL_TMP_DIR/log_encrypt_dir2
--mkdir $MYSQL_TMP_DIR/log_encrypt_dir3

let $MYSQLD_DATADIR1 = $MYSQL_TMP_DIR/log_encrypt_dir1;
let $MYSQLD_DATADIR2 = $MYSQL_TMP_DIR/log_encrypt_dir2;
let $MYSQLD_DATADIR3 = $MYSQL_TMP_DIR/log_encrypt_dir3;

let BOOTSTRAP_SQL=$MYSQL_TMP_DIR/boot.sql;

--echo # create bootstrap file
write_file $BOOTSTRAP_SQL;
CREATE DATABASE test;
EOF
--echo # Stop the MTR default DB server
--source include/shutdown_mysqld.inc

let NEW_CMD = $MYSQLD --no-defaults $PLUGIN_DIR_OPT --innodb_dedicated_server=OFF --initialize-insecure --innodb_redo_log_capacity=$LOG_SIZE --innodb_page_size=$START_PAGE_SIZE --basedir=$MYSQLD_BASEDIR --datadir=$MYSQLD_DATADIR1 --init-file=$BOOTSTRAP_SQL --secure-file-priv="" --innodb_redo_log_encrypt=ON </dev/null>>$MYSQLTEST_VARDIR/tmp/bootstrap1.log 2>&1;

--echo # Run the bootstrap command of datadir1
--exec $NEW_CMD

--echo # Start the DB server with datadir1
--let $restart_parameters="restart: $PLUGIN_DIR_OPT --innodb_redo_log_encrypt=ON --datadir=$MYSQLD_DATADIR1 --innodb_page_size=$START_PAGE_SIZE --innodb_redo_log_capacity=$LOG_SIZE"
--replace_regex /\.dll/.so/
--source include/start_mysqld_no_echo.inc

SELECT @@global.innodb_redo_log_encrypt ;

USE test;
CREATE TABLE tab1(c1 INT, c2 VARCHAR(30));
INSERT INTO tab1 VALUES(1, 'Test consistency undo*');
SELECT * FROM tab1;
CREATE TABLE tab2(c1 INT, c2 VARCHAR(30)) ENCRYPTION="Y";
INSERT INTO tab2 VALUES(1, 'Test consistency undo*');
SELECT * FROM tab2;
DROP TABLE tab1,tab2;

# Shutdown the server
--source include/kill_mysqld.inc

--force-rmdir $MYSQL_TMP_DIR/log_encrypt_dir1
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap1.log
--source include/keyring_tests/helper/local_keyring_file_remove.inc
#------------------------------------------------------------------------------

# Take backup of global manifest file
--source include/keyring_tests/helper/binary_backup_manifest.inc

#bootstrap should fail if keyring plugin is not loaded along with
#innodb_redo_log_encrypt=ON
let NEW_CMD = $MYSQLD --no-defaults $PLUGIN_DIR_OPT --innodb_dedicated_server=OFF --initialize-insecure --basedir=$MYSQLD_BASEDIR --datadir=$MYSQLD_DATADIR2 --init-file=$BOOTSTRAP_SQL  --secure-file-priv="" --innodb_redo_log_encrypt=ON  </dev/null>>$MYSQLTEST_VARDIR/tmp/bootstrap2.log 2>&1;

--echo # Run the bootstrap command of datadir2, it should fail since the keyring is not loaded.
--error 1,42
--exec $NEW_CMD

--force-rmdir $MYSQL_TMP_DIR/log_encrypt_dir2
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap2.log

# Restore global manifest file
--source include/keyring_tests/helper/binary_restore_manifest.inc

let NEW_CMD = $MYSQLD --no-defaults $PLUGIN_DIR_OPT --innodb_dedicated_server=OFF --initialize-insecure --innodb_redo_log_capacity=$LOG_SIZE_SCALED_UP --innodb_page_size=$START_PAGE_SIZE --basedir=$MYSQLD_BASEDIR --datadir=$MYSQLD_DATADIR2 --init-file=$BOOTSTRAP_SQL --secure-file-priv="" --innodb_redo_log_encrypt=ON </dev/null>>$MYSQLTEST_VARDIR/tmp/bootstrap2.log 2>&1;

--echo # Run the bootstrap command of datadir2
--exec $NEW_CMD

--echo # Start the DB server with datadir2
--let $restart_parameters="restart: $PLUGIN_DIR_OPT --innodb_redo_log_encrypt=ON --datadir=$MYSQLD_DATADIR2 --innodb_page_size=$START_PAGE_SIZE --innodb_redo_log_capacity=$LOG_SIZE_SCALED_UP"
--source include/start_mysqld_no_echo.inc

SELECT @@global.innodb_redo_log_encrypt ;

USE test;
CREATE TABLE tab1(c1 INT, c2 VARCHAR(30));
INSERT INTO tab1 VALUES(1, 'Test consistency undo*');
SELECT * FROM tab1;
CREATE TABLE tab2(c1 INT, c2 VARCHAR(30)) ENCRYPTION="Y";
INSERT INTO tab2 VALUES(1, 'Test consistency undo*');
SELECT * FROM tab2;
DROP TABLE tab1,tab2;

# Shutdown the server
--source include/kill_mysqld.inc

--force-rmdir $MYSQL_TMP_DIR/log_encrypt_dir2
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap2.log
--source include/keyring_tests/helper/local_keyring_file_remove.inc
#------------------------------------------------------------------------------

let NEW_CMD = $MYSQLD --no-defaults $PLUGIN_DIR_OPT --innodb_dedicated_server=OFF --initialize-insecure --innodb_redo_log_capacity=$LOG_SIZE --innodb_page_size=$START_PAGE_SIZE --basedir=$MYSQLD_BASEDIR --datadir=$MYSQLD_DATADIR3 --init-file=$BOOTSTRAP_SQL --secure-file-priv="" --innodb_redo_log_encrypt=ON </dev/null>>$MYSQLTEST_VARDIR/tmp/bootstrap3.log 2>&1;

--echo # Run the bootstrap command of datadir3
--exec $NEW_CMD

--echo # Start the DB server with datadir3 and keyring loaded.
--let $restart_parameters="restart: $PLUGIN_DIR_OPT --datadir=$MYSQLD_DATADIR3 --innodb_page_size=$START_PAGE_SIZE --innodb_redo_log_capacity=$LOG_SIZE"
--source include/start_mysqld_no_echo.inc

SELECT @@global.innodb_redo_log_encrypt ;

USE test;
CREATE TABLE tab1(c1 INT, c2 VARCHAR(30));
INSERT INTO tab1 VALUES(1, 'Test consistency undo*');
SELECT * FROM tab1;
CREATE TABLE tab2(c1 INT, c2 VARCHAR(30)) ENCRYPTION="Y";
DROP TABLE tab1;

# Shutdown the server
--source include/kill_mysqld.inc

--force-rmdir $MYSQL_TMP_DIR/log_encrypt_dir3
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap3.log
--source include/keyring_tests/helper/local_keyring_file_remove.inc
--remove_file $BOOTSTRAP_SQL

# Restart server
--let $restart_parameters= restart: $PLUGIN_DIR_OPT 
--source include/start_mysqld_no_echo.inc

# Cleanup
--disable_query_log
eval SET GLOBAL innodb_file_per_table=$old_innodb_file_per_table;
eval SET GLOBAL innodb_redo_log_encrypt=$old_innodb_redo_log_encrypt;
--enable_query_log