![]() |
MySQL 9.4.0
Source Code Documentation
|
Recovery. More...
#include "buf0types.h"#include "dict0types.h"#include "hash0hash.h"#include "log0sys.h"#include "mtr0types.h"#include "os0file.h"#include "ut0byte.h"#include "ut0new.h"#include "ut0todo_counter.h"#include <list>#include <unordered_map>#include <unordered_set>#include "log0recv.ic"Go to the source code of this file.
Classes | |
| struct | recv_data_t |
| Block of log record data. More... | |
| struct | recv_t |
| Stored log record struct. More... | |
| struct | recv_addr_t |
| Hashed page file address struct. More... | |
| class | MetadataRecover |
| Class to parse persistent dynamic metadata redo log, store and merge them and apply them to in-memory table objects finally. More... | |
| struct | recv_sys_t |
| Recovery system data structure. More... | |
| struct | recv_sys_t::Space |
| Every space has its own heap and pages that belong to it. More... | |
| struct | recv_sys_t::Encryption_Key |
| struct | recv_sys_t::Mlog_record |
| Mini transaction log record. More... | |
Namespaces | |
| namespace | dblwr |
| namespace | dblwr::recv |
Macros | |
| #define | RECV_SCAN_SIZE (4 * UNIV_PAGE_SIZE) |
| Size of block reads when the log groups are scanned forward to do a roll-forward. More... | |
Enumerations | |
| enum | recv_addr_state { RECV_NOT_PROCESSED , RECV_BEING_READ , RECV_BEING_PROCESSED , RECV_PROCESSED , RECV_DISCARDED } |
| States of recv_addr_t. More... | |
Functions | |
| void | recv_recover_page_func (bool just_read_in, buf_block_t *block) |
| Applies the hashed log records to the page, if the page lsn is less than the lsn of a log record. More... | |
| static void | recv_recover_page (bool jri, buf_block_t *block) |
| Wrapper for recv_recover_page_func(). More... | |
| void | recv_sys_free () |
| Frees the recovery system. More... | |
| void | recv_sys_var_init () |
| Reset the state of the recovery system variables. More... | |
| static bool | recv_recovery_is_on () |
| Returns true if recovery is currently running. More... | |
| bool | recv_page_is_brand_new (buf_block_t *block) |
| Returns true if the page is brand new (the next log record is init_file_page or no records to apply). More... | |
| dberr_t | recv_recovery_from_checkpoint_start (log_t &log, lsn_t flush_lsn) |
| Start recovering from a redo log checkpoint. More... | |
| dberr_t | recv_verify_log_is_clean_pre_8_0_30 (log_t &log) |
| Determine if a redo log from a version before MySQL 8.0.30 is clean. More... | |
| MetadataRecover * | recv_recovery_from_checkpoint_finish (bool aborting) |
| Complete the recovery from the latest checkpoint. More... | |
| void | recv_sys_create () |
| Creates the recovery system. More... | |
| void | recv_sys_close () |
| Release recovery system mutexes. More... | |
| void | recv_sys_init () |
| Inits the recovery system for a recovery operation. More... | |
| lsn_t | recv_calc_lsn_on_data_add (lsn_t lsn, os_offset_t len) |
| Calculates the new value for lsn when more data is added to the log. More... | |
| void | recv_apply_hashed_log_recs (log_t &log) |
| Empties the hash table of stored log records, applying them to appropriate pages. More... | |
| const char * | get_mlog_string (mlog_id_t type) |
| Return string name of the redo log record type. More... | |
Variables | |
| recv_sys_t * | recv_sys |
| The recovery system. More... | |
| volatile bool | recv_recovery_on |
| true when applying redo log records during crash recovery; false otherwise. More... | |
| bool | recv_needed_recovery |
| true when recv_init_crash_recovery() has been called. More... | |
| bool | recv_lsn_checks_on |
| true if buf_page_is_corrupted() should check if the log sequence number (FIL_PAGE_LSN) is in the future. More... | |
| constexpr uint32_t | RECV_PARSING_BUF_SIZE = 2 * 1024 * 1024 |
| Size of the parsing buffer; it must accommodate RECV_SCAN_SIZE many times! More... | |
| size_t | recv_n_frames_for_pages_per_pool_instance |
| This many blocks must be left in each Buffer Pool instance to be managed by the LRU when we scan the log and store the scanned log records in a hashmap allocated in the Buffer Pool in frames of non-LRU managed blocks. More... | |
Recovery.
Created 9/20/1997 Heikki Tuuri
| #define RECV_SCAN_SIZE (4 * UNIV_PAGE_SIZE) |
Size of block reads when the log groups are scanned forward to do a roll-forward.
| enum recv_addr_state |
States of recv_addr_t.
| const char * get_mlog_string | ( | mlog_id_t | type | ) |
Return string name of the redo log record type.
| [in] | type | record log record enum |
| void recv_apply_hashed_log_recs | ( | log_t & | log | ) |
Empties the hash table of stored log records, applying them to appropriate pages.
| [in,out] | log | redo log |
| lsn_t recv_calc_lsn_on_data_add | ( | lsn_t | lsn, |
| os_offset_t | len | ||
| ) |
Calculates the new value for lsn when more data is added to the log.
| [in] | lsn | Old LSN |
| [in] | len | This many bytes of data is added, log block headers not included |
| bool recv_page_is_brand_new | ( | buf_block_t * | block | ) |
Returns true if the page is brand new (the next log record is init_file_page or no records to apply).
| [in] | block | buffer block |
|
inlinestatic |
Wrapper for recv_recover_page_func().
Applies the hashed log records to the page, if the page lsn is less than the lsn of a log record. This can be called when a buffer page has just been read in, or also for a page already in the buffer pool.
| jri | in: true if just read in (the i/o handler calls this for a freshly read page) | |
| [in,out] | block | buffer block |
| void recv_recover_page_func | ( | bool | just_read_in, |
| buf_block_t * | block | ||
| ) |
Applies the hashed log records to the page, if the page lsn is less than the lsn of a log record.
This can be called when a buffer page has just been read in, or also for a page already in the buffer pool.
| [in] | just_read_in | true if the IO handler calls this for a freshly read page |
| [in,out] | block | buffer block |
| MetadataRecover * recv_recovery_from_checkpoint_finish | ( | bool | aborting | ) |
Complete the recovery from the latest checkpoint.
| [in] | aborting | true if the server has to abort due to an error |
Start recovering from a redo log checkpoint.
| [in,out] | log | redo log |
| [in] | flush_lsn | lsn stored at offset FIL_PAGE_FILE_FLUSH_LSN in the system tablespace header |
|
inlinestatic |
Returns true if recovery is currently running.
| void recv_sys_close | ( | ) |
Release recovery system mutexes.
| void recv_sys_create | ( | ) |
Creates the recovery system.
| void recv_sys_free | ( | ) |
Frees the recovery system.
| void recv_sys_init | ( | ) |
Inits the recovery system for a recovery operation.
| void recv_sys_var_init | ( | ) |
Reset the state of the recovery system variables.
Determine if a redo log from a version before MySQL 8.0.30 is clean.
| [in,out] | log | redo log |
| DB_SUCCESS | if the redo log is clean |
| DB_ERROR | if the redo log is corrupted or dirty |
|
extern |
true if buf_page_is_corrupted() should check if the log sequence number (FIL_PAGE_LSN) is in the future.
Initially false, and set by recv_recovery_from_checkpoint_start().
|
extern |
This many blocks must be left in each Buffer Pool instance to be managed by the LRU when we scan the log and store the scanned log records in a hashmap allocated in the Buffer Pool in frames of non-LRU managed blocks.
We will use these free blocks to read in pages when we start applying the log records to the database.
|
extern |
true when recv_init_crash_recovery() has been called.
|
constexpr |
Size of the parsing buffer; it must accommodate RECV_SCAN_SIZE many times!
|
extern |
true when applying redo log records during crash recovery; false otherwise.
Note that this is false while a background thread is rolling back incomplete transactions.
|
extern |
The recovery system.