mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
169c00994b
InnoDB crash recovery used to read every data page for which
redo log exists. This is unnecessary for those pages that are
initialized by the redo log. If a newly created page is corrupted,
recovery could unnecessarily fail. It would suffice to reinitialize
the page based on the redo log records.
To add insult to injury, InnoDB crash recovery could hang if it
encountered a corrupted page. We will fix also that problem.
InnoDB would normally refuse to start up if it encounters a
corrupted page on recovery, but that can be overridden by
setting innodb_force_recovery=1.
Data pages are completely initialized by the records
MLOG_INIT_FILE_PAGE2 and MLOG_ZIP_PAGE_COMPRESS.
MariaDB 10.4 additionally recognizes MLOG_INIT_FREE_PAGE,
which notifies that a page has been freed and its contents
can be discarded (filled with zeroes).
The record MLOG_INDEX_LOAD notifies that redo logging has
been re-enabled after being disabled. We can avoid loading
the page if all buffered redo log records predate the
MLOG_INDEX_LOAD record.
For the internal tables of FULLTEXT INDEX, no MLOG_INDEX_LOAD
records were written before commit
|
||
---|---|---|
.. | ||
aria_tiny.result | ||
corrupted_during_recovery.result | ||
create_or_replace.result | ||
debug_key_management.result | ||
encrypt_and_grep.result | ||
encryption_force.result | ||
filekeys_emptyfile.result | ||
filekeys_encfile.result | ||
filekeys_encfile_bad.result | ||
filekeys_encfile_badfile.result | ||
filekeys_encfile_file.result | ||
filekeys_encfile_no.result | ||
filekeys_nofile.result | ||
filekeys_syntax.result | ||
filekeys_tooshort.result | ||
filekeys_unencfile.result | ||
innochecksum.result | ||
innodb-bad-key-change.result | ||
innodb-bad-key-change2.result | ||
innodb-bad-key-change3.result | ||
innodb-bad-key-change4.result | ||
innodb-checksum-algorithm,32k.rdiff | ||
innodb-checksum-algorithm,64k.rdiff | ||
innodb-checksum-algorithm.result | ||
innodb-compressed-blob.result | ||
innodb-discard-import-change.result | ||
innodb-discard-import.result | ||
innodb-encr-threads.result | ||
innodb-encryption-alter.result | ||
innodb-encryption-disable.result | ||
innodb-first-page-read.result | ||
innodb-force-corrupt.result | ||
innodb-key-rotation-disable.result | ||
innodb-missing-key.result | ||
innodb-page_encryption-32k.result | ||
innodb-page_encryption.result | ||
innodb-page_encryption_compression.result | ||
innodb-page_encryption_log_encryption.result | ||
innodb-read-only.result | ||
innodb-redo-badkey.result | ||
innodb-redo-nokeys.result | ||
innodb-remove-encryption.result | ||
innodb-scrub-log.result | ||
innodb-spatial-index.result | ||
innodb_encrypt_log.result | ||
innodb_encrypt_log_corruption.result | ||
innodb_encryption-page-compression.result | ||
innodb_encryption.result | ||
innodb_encryption_discard_import.result | ||
innodb_encryption_filekeys.result | ||
innodb_encryption_is.result | ||
innodb_encryption_row_compressed.result | ||
innodb_encryption_tables.result | ||
innodb_first_page.result | ||
innodb_lotoftables.result | ||
innodb_onlinealter_encryption.result | ||
innodb_page_encryption_key_change.result | ||
innodb_scrub.result | ||
innodb_scrub_background.result | ||
second_plugin-12863.result | ||
tempfiles.result |