WAL은 변경 내용을 데이터 페이지보다 먼저 지속성 있는 로그에 기록하는 복구 원칙이다. Write-Ahead Logging의 약자이다.
데이터베이스 내부 |
|---|
WAL · 체크포인트 · MVCC · 트랜잭션 격리 수준 · 읽기 커밋 |
데이터베이스 교착 상태 · 비관적 잠금 · 파티셔닝 · 시점 복구 · 데이터베이스 백업 |
원리
장애가 나도 기록된 로그를 이용해 필요한 변경을 재실행할 수 있게 한다. 데이터 파일의 모든 변경을 매 커밋마다 즉시 같은 방식으로 쓰는 것과 구별된다.
예시
커밋된 변경의 로그는 남았지만 데이터 페이지가 아직 저장되지 않았다면 재시작 복구에서 로그를 적용할 수 있다.
데이터베이스 | |
|---|---|
관계형 | MySQL · PostgreSQL · MariaDB · SQLite |
NoSQL | |
스토리지 엔진 | |
주의할 점
로그가 있다는 사실만으로 백업이 완성되는 것은 아니다. 디스크 손실에 대비한 별도 보관과 복구 시험이 필요하며, 지속성 설정에 따라 장애 시 보장도 달라진다.