본문으로 건너뛰기

InnoDB의 WAL과 장애 복구

Redo Log가 활성화된 일반 영구 InnoDB 테이블에서는 COMMIT에 성공해도 변경한 Data Page가 곧바로 파일에 저장되지는 않습니다. id=1의 상태가 BOOKED에서 CANCELLED로 바뀌는 과정을 따라가며, UPDATE가 Page와 Log에 무엇을 남기고 InnoDB가 장애 뒤 어떻게 복구하는지 살펴봅니다. 마지막 글에는 MySQL 8.4.10을 SIGKILL로 종료한 실험 결과를 담았습니다.

UPDATE 이후 COMMIT과 Page Flush가 나뉘고 장애 복구에서 Redo와 Undo를 사용하는 전체 흐름

글 목록

  1. COMMIT 직후 서버가 꺼져도 값은 남을까
  2. COMMIT과 Page Flush는 같은 일이 아니다
  3. COMMIT은 Redo Log의 어디까지 기다리는가
  4. Checkpoint는 복구 시작점을 어떻게 옮기는가
  5. InnoDB는 왜 Redo한 뒤 Undo하는가
  6. SIGKILL로 확인한 커밋과 롤백