[MySQL] 바이너리 로그
by 키위먹고싶다해당 내용은 스토리엔진 잠금인 갭락과 넥스트 키락에 대해 알아보던 중 STATEMENT 포맷 바이너리 로그와 ROW 포맷 바이너리로그에 대한 내용이 나오길래 정리한 부분입니다.
의미
MySQL 서버에서 DDL, DML을 통해 데이터베이스에 변화가 있을 때 변화된 이벤트를 기록하는 이진 파일이다. SHOW, SELECT 등의 조회 문법은 제외한다. 트랜잭션 커밋 시에 기록되며, 데이터의 변경 순서를 보장한다.
용도
[ 복제, Replication ]
바이너리 로그는 마스터라는 서버에서 생성되고 슬레이브 서버는 마스터 서버에 접속하여 마스터의 바이너리 로그를 읽어와 똑같은 이벤트를 실행시켜 마스터 서버와 슬레이브 서버를 동일하게 만드는 복제 역할을 한다.
Mysql Replication 을 이용해서 Master에게는 동시성이 높게 요구되는 트랜잭션을 담당하고 Slave는 읽기 전용으로 데이터를 가져오면 트래픽을 분산시킬 수 있다.
[ 복구, Recovery ]
데이터 베이스 사용 시 삭제나 장애가 발생할 경우 복구를 해야 하는데 이때 특정 시점으로 돌아가기 위해 바이너리 로그를 사용한다.
종류
[ Statement-based Type ]
실행된 SQL을 그대로 Binary Log에 기록하는 방식이다. 로그 사이즈는 작으나, SQL실행 시점에 따라 적용되는 결과가 달라질 수 있다.
[ Row-based Type ]
변경된 행 자체를 Base64로 인코딩 하여 Binary Log에 기록하는 방식이다. SQL이 재실행되는 것은 아니지만 변경된 행이 많을 경우 로그 사이즈가 커질 수 있다.
[ Mixed Type ]
기본 방식은 Statement Type인데 필요에 따라 Row Type으로 로그에 저장되는 방식이다.
'db' 카테고리의 다른 글
MySQL 옵티마이저 실행계획 (0) | 2023.06.24 |
---|---|
뮤텍스(Mutex)와 세마포어(Semaphore) (0) | 2022.06.18 |
[MySQL] 잠금에 대해 (0) | 2022.06.11 |
Mysql Redo / Undo Log (0) | 2022.04.16 |
다중 버전 동시성 제어[multiversion concurrency control, MCC, MVCC] (0) | 2022.04.08 |
블로그의 정보
kiwi
키위먹고싶다