Skip to content

Commit

Permalink
MDEV-12114: install_db shows corruption for rest encryption and innod…
Browse files Browse the repository at this point in the history
…b_checksum_algorithm=strict_none

Problem was that checksum check resulted false positives that page is
both not encrypted and encryted when checksum_algorithm was
strict_none.

Encrypton checksum will use only crc32 regardless of setting.

buf_zip_decompress: If compression fails report a error message
containing the space name if available (not available during import).
And note if space could be encrypted.

buf_page_get_gen: Do not assert if decompression fails,
instead unfix the page and return NULL to upper layer.

fil_crypt_calculate_checksum: Use only crc32 method.

fil_space_verify_crypt_checksum: Here we need to check
crc32, innodb and none method for old datafiles.

fil_space_release_for_io: Allow null space.

encryption.innodb-compressed-blob is now run with crc32 and none
combinations.

Note that with none and strict_none method there is not really
a way to detect page corruptions and page corruptions after
decrypting the page with incorrect key.

New test innodb-checksum-algorithm to test different checksum
algorithms with encrypted, row compressed and page compressed
tables.
  • Loading branch information
Jan Lindström committed Jun 1, 2017
1 parent 1af8bf3 commit 6b69871
Show file tree
Hide file tree
Showing 11 changed files with 1,577 additions and 117 deletions.
741 changes: 741 additions & 0 deletions mysql-test/suite/encryption/r/innodb-checksum-algorithm.result

Large diffs are not rendered by default.

5 changes: 2 additions & 3 deletions mysql-test/suite/encryption/r/innodb-compressed-blob.result
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
call mtr.add_suppression("InnoDB: However key management plugin or used key_version .*");
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-3] cannot be decrypted.");
call mtr.add_suppression("Unable to decompress space ..test.t[1-3].ibd \\[[1-9][0-9]*:[0-9]+\\]");
# Restart mysqld --file-key-management-filename=keys2.txt
SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
Expand Down
4 changes: 4 additions & 0 deletions mysql-test/suite/encryption/t/innodb-checksum-algorithm.opt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
--innodb_checksum_algorithm=innodb
--innodb-tablespaces-encryption
--innodb-encrypt-tables=on
--innodb-encryption-threads=4
Loading

0 comments on commit 6b69871

Please sign in to comment.