- redo log는 innodb engine에만 해당하는 로그이고, binary log는 모든 engine에 해당한다.
- redo log는 innodb engine level의 물리적 로그이며, binary log는 SQL statement에 상응하는 논리적 로그이다.
- redo log는 복수의 고정 사이즈의 파일로 이루어져 있으며, binary log는 일련번호로 파일이 생성된다.
다음으로 redo log와 binary log가 기록되는 흐름을 알아보자.
설정은 sync_binlog = 1, innodb_flush_log_at_trx_commit = 1을 가정한다.
- DML 발행
- innodb log buffer에 기록
- 커밋 시 redo log에 flush(prepared 상태)
- binlog에 기록
- redo log와 binlog의 status를 완료로 변경
* 만약 그림의 1 타이밍에 crash가 일어나면 binlog에 기록되지 않은 상태이므로, MySQL을 재시작 하면 해당 DML은 rollback 된다.
* 2 타이밍에 crash가 일어나면 binlog에 기록된 상태이므로, MySQL을 재시작 하면 해당 DML은 commit 된다 .
* 2 타이밍에 crash가 일어나면 binlog에 기록된 상태이므로, MySQL을 재시작 하면 해당 DML은 commit 된다 .
# Refer
댓글 없음:
댓글 쓰기