Open3
binlogとredolog

- binlog
- Server層が出力するログ
- レコードの更新内容を保存する
- データ復元時に利用される
- redolog
- ストレージエンジン層(InnoDB)が出力するログ
- ディスクアクセスは時間がかかるので、メモリ上のredo log bufferに記録したらレコード更新操作を完了させる
- 専用のスレッドが適用なタイミングでredo log bufferの情報をディスク(redo logファイル)に書き出す
- redo logファイルはサイズと個数が決まっているのでローテーションして利用される
- redo logとbinlogは一致性を保つために2フェーズコミットの形で更新する

- binlogが有効になっている場合、トランザクションに加えてbinlogを処理するためにデータベースが余分な作業が発生する
- 各トランザクションでbinlogファイルを連続的に書き込むトランザクションのコミットワークフローの追加プロセスが発生する
- トランザクションログとbinlogの書き込みを同期させるために、コミット時に2相コミット(2PC)が採用
- 2相コミット(2PC)は書き込みにさらなる待ち時間を発生させる
- これらの課題はコンピュートとストレージを分離したAurora MySQLにも継承
- binlogファイルを書き込むときに必要な調整作業とネットワークホップが増えるため、binlogを書き込むときのパフォーマンスへの影響を増幅することがある

- バイナリログにはデータベースの変更を記述するイベントが含まれる
- データを変更しないSELECTなどのイベントは含まれない
- バイナリログの重要な目的は
- レプリケーション
- 特定のデータの復元