- WAL (Write-ahead logging): データファイルを書き込む前、redoログに書き込むのを保証する
MySQL 5.6 https://dev.mysql.com/doc/refman/5.6/en/innodb-redo-log.html MySQL 8.0 https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html
http://nippondanji.blogspot.com/2009/01/innodb.html より
Log sequence numberは、ログバッファへの更新が行われたトータルのバイト数、Log flushed up toはWALへの書き込みが行われたバイト数、Last checkpoint atは最後にチェックポイントが行われたバイト数である。innodb_flush_log_at_trx_commit=1ならば、Log sequence numberとLog flushed up toは非常に近い値になる。
LSNの関係とかは https://github.com/kazeburo/cloudforecast/blob/master/lib/CloudForecast/Data/Innodb5extend.pm ここをみると参考になる。
https://dev.mysql.com/doc/refman/8.0/ja/innodb-parameters.html#sysvar_innodb_log_file_size
Log fileは512-byte block単位で書き込む。
これはOSのブロックサイズです。Linuxシステムプログラミング p66
参照 : https://lansen.hatenadiary.org/entry/20100724/1279973697
https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_INNODB_REDO_LOG.html
https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_INNODB_REDO_LOG_FORMAT.html
- redoログのファイルを開く
このあたりを読むとstartとかもあってわかりやすい https://github.com/mysql/mysql-server/blob/8.0/storage/innobase/arch/arch0log.cc
https://github.com/mysql/mysql-server/blob/8.0/storage/innobase/include/log0log.ic#L296-L311
#define LOG_FILE_HDR_SIZE (4 * OS_FILE_LOG_BLOCK_SIZE)
https://github.com/mysql/mysql-server/blob/8.0/storage/innobase/include/mach0data.ic#L146
redo logを緊急でflushしなければならないか?