MySQL 8.0.40
Source Code Documentation
|
Atomic writes handling. More...
#include <sys/types.h>
#include "buf0buf.h"
#include "buf0checksum.h"
#include "log0chkp.h"
#include "os0enc.h"
#include "os0thread-create.h"
#include "page0zip.h"
#include "srv0srv.h"
#include "srv0start.h"
#include "ut0mpmcbq.h"
#include "ut0mutex.h"
#include "ut0test.h"
#include <iomanip>
#include <iostream>
#include <regex>
#include <vector>
Classes | |
struct | dblwr::File |
struct | dblwr::recv::Page |
Page recovered from the doublewrite buffer. More... | |
struct | dblwr::recv::Page_entry |
A record from reduced doublewrite buffer. More... | |
class | dblwr::recv::Pages |
Pages recovered from the doublewrite buffer. More... | |
class | Double_write |
Doublewrite implementation. More... | |
struct | Double_write::Buf_pages |
For collecting pages to write. More... | |
class | Segment |
File segment of a double write file. More... | |
class | Batch_segment |
Segment for batched writes. More... | |
class | Reduced_double_write |
Reduced doublewrite implementation. More... | |
class | Reduced_batch_deserializer |
Reduced doublewrite file deserializer. More... | |
Namespaces | |
namespace | dblwr |
namespace | dblwr::recv |
Functions | |
bool | dblwr::is_odd (uint32_t val) |
std::ostream & | dblwr::operator<< (std::ostream &out, const File &obj) noexcept |
Overload the global output operator to work with dblwr::File type. More... | |
static bool | is_buffer_pool_size_ok () noexcept |
static dberr_t | dblwr_file_open (const std::string &dir_name, int id, dblwr::File &file, ulint file_type, ib_file_suffix extension=DWR) noexcept |
Create the file and or open it if it exists. More... | |
static bool | is_dblwr_page_corrupted (byte *page, fil_space_t *space, page_no_t page_no, dberr_t *err) noexcept |
Check if the dblwr page is corrupted. More... | |
static bool | dblwr::is_encrypted_page (const byte *page) noexcept |
bool | dblwr::has_encrypted_pages () noexcept |
Check if the dblwr files contain encrypted pages. More... | |
Variables | |
constexpr ulint | DBLWR_V1_FSEG = 0 |
Doublewrite buffer. More... | |
constexpr ulint | DBLWR_V1_REPEAT = 12 |
We repeat DBLWR_VER, DBLWR_V1_BLOCK1, DBLWR_V1_BLOCK2 so that if the trx sys header is half-written to disk, we still may be able to recover the information. More... | |
constexpr ulint | DBLWR_V1_SPACE_ID_STORED = (24 + FSEG_HEADER_SIZE) |
If this is not yet set to DBLWR_V1_SPACE_ID_STORED_N, we must reset the doublewrite buffer, because starting from 4.1.x the space id of a data page is stored into FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID. More... | |
constexpr ulint | DBLWR_V1 = 536853855 |
Contents of DBLWR_VER. More... | |
constexpr ulint | DBLWR_V1_SPACE_ID_STORED_N = 1783657386 |
Contents of DBLWR_V1_SPACE_ID_STORED. More... | |
constexpr uint32_t | SYNC_PAGE_FLUSH_SLOTS = 512 |
DBLWR file pages reserved per instance for single page flushes. More... | |
std::string | dblwr::dir {"."} |
Double write files location. More... | |
ulong | dblwr::n_files {1} |
Number of files to use for the double write buffer. More... | |
ulong | dblwr::batch_size {} |
Maximum number of pages to write in one batch. More... | |
ulong | dblwr::n_pages {64} |
Number of pages per doublewrite thread/segment. More... | |
ulong | dblwr::g_mode {Mode::ON} |
DBLWR mode. More... | |
bool | dblwr::is_reduced_inited = false |
true if DETECT_ONLY (aka reduced) mode is inited More... | |
static page_no_t | dblwr::LEGACY_PAGE1 |
Legacy dblwr buffer first segment page number. More... | |
static page_no_t | dblwr::LEGACY_PAGE2 |
Legacy dblwr buffer second segment page number. More... | |
page_id_t | dblwr::Force_crash {UINT32_UNDEFINED, UINT32_UNDEFINED} |
Crash the server after writing this page to the data file. More... | |
Atomic writes handling.
|
staticnoexcept |
Create the file and or open it if it exists.
[in] | dir_name | Directory where to create the file. |
[in] | id | Instance ID. |
[out] | file | File handle. |
[in] | file_type | The file type. |
[in] | extension | .dblwr/.bdblwr |
|
staticnoexcept |
|
staticnoexcept |
Check if the dblwr page is corrupted.
[in] | page | the dblwr page. |
[in] | space | tablespace to which the page belongs. |
[in] | page_no | page_no within the actual tablespace. |
[out] | err | error code to check if decryption or decompression failed. |
|
constexpr |
Contents of DBLWR_VER.
Legacy version, stores the blocks in the system tablespace.
|
constexpr |
Doublewrite buffer.
fseg header of the fseg containing the doublewrite buffer
|
constexpr |
We repeat DBLWR_VER, DBLWR_V1_BLOCK1, DBLWR_V1_BLOCK2 so that if the trx sys header is half-written to disk, we still may be able to recover the information.
|
constexpr |
If this is not yet set to DBLWR_V1_SPACE_ID_STORED_N, we must reset the doublewrite buffer, because starting from 4.1.x the space id of a data page is stored into FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID.
|
constexpr |
Contents of DBLWR_V1_SPACE_ID_STORED.
|
constexpr |
DBLWR file pages reserved per instance for single page flushes.