mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Added the condition in innochecksum tool to check page id mismatch. This could catch the write corruption caused by InnoDB. Added the debug insert inside fil_io() to check whether it writes the page to wrong offset.
46 lines
2.0 KiB
Plaintext
46 lines
2.0 KiB
Plaintext
SET GLOBAL innodb_file_format = `Barracuda`;
|
|
SET GLOBAL innodb_file_per_table = ON;
|
|
set global innodb_compression_algorithm = 1;
|
|
# Create and populate a tables
|
|
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
|
CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
|
CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=NO;
|
|
CREATE TABLE t4 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED=1;
|
|
CREATE TABLE t5 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
|
CREATE TABLE t6 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
|
# Write file to make mysql-test-run.pl expect the "crash", but don't
|
|
# start it until it's told to
|
|
# We give 30 seconds to do a clean shutdown because we do not want
|
|
# to redo apply the pages of t1.ibd at the time of recovery.
|
|
# We want SQL to initiate the first access to t1.ibd.
|
|
# Wait until disconnected.
|
|
# Run innochecksum on t1
|
|
# Run innochecksum on t2
|
|
# Run innochecksum on t3
|
|
# Run innochecksum on t4
|
|
# Run innochecksum on t4
|
|
# Run innochecksum on t5
|
|
# Run innochecksum on t6
|
|
# Backup tables before corrupting
|
|
# Corrupt FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION
|
|
# Run innochecksum on t2
|
|
# Run innochecksum on t3
|
|
# no encryption corrupting the field should not have effect
|
|
# Run innochecksum on t6
|
|
# no encryption corrupting the field should not have effect
|
|
# Restore the original tables
|
|
# Corrupt FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION+4 (post encryption checksum)
|
|
# Run innochecksum on t2
|
|
# Run innochecksum on t3
|
|
# Run innochecksum on t6
|
|
# Space ID mismatch
|
|
# Restore the original tables
|
|
# Corrupt FIL_DATA+10 (data)
|
|
# Run innochecksum on t2
|
|
# Run innochecksum on t3
|
|
# Run innochecksum on t6
|
|
# Restore the original tables
|
|
# Write file to make mysql-test-run.pl start up the server again
|
|
# Cleanup
|
|
DROP TABLE t1, t2, t3, t4, t5, t6;
|