mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Problem:
======== During ibd file creation, InnoDB flushes the page0 without crypt information. During recovery, InnoDB encounters encrypted page read before initialising the crypt data of the tablespace. So it leads t corruption of page and doesn't allow innodb to start. Solution: ========= Write crypt_data information in page0 while creating .ibd file creation. During recovery, crypt_data will be initialised while processing MLOG_FILE_NAME redo log record.
This commit is contained in:
26
mysql-test/suite/encryption/r/file_creation.result
Normal file
26
mysql-test/suite/encryption/r/file_creation.result
Normal file
@ -0,0 +1,26 @@
|
||||
SET GLOBAL innodb_encrypt_tables = ON;
|
||||
SET GLOBAL innodb_encryption_threads = 1;
|
||||
SET GLOBAL innodb_max_dirty_pages_pct = 99;
|
||||
SHOW VARIABLES LIKE 'innodb_encrypt%';
|
||||
Variable_name Value
|
||||
innodb_encrypt_log OFF
|
||||
innodb_encrypt_tables ON
|
||||
innodb_encrypt_temporary_tables OFF
|
||||
innodb_encryption_rotate_key_age 1
|
||||
innodb_encryption_rotation_iops 100
|
||||
innodb_encryption_threads 1
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 CHAR(255), f3 CHAR(255),
|
||||
f4 CHAR(255), f5 CHAR(255))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, "mysql", "mariadb", "batman", "superman");
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
# Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize status OK
|
||||
ALTER TABLE t1 FORCE;
|
||||
# Kill the server
|
||||
DROP TABLE t1;
|
Reference in New Issue
Block a user