kiwi

[MySQL] 바이너리 로그

by 키위먹고싶다

db

해당 내용은 스토리엔진 잠금인 갭락과 넥스트 키락에 대해 알아보던 중 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으로 로그에 저장되는 방식이다. 

블로그의 정보

kiwi

키위먹고싶다

활동하기