728x90
1. binlog란?
빈로그 혹은 바이너리 로그는 MySQL 서버 인스턴스의 데이터 변경사항들에 대한 정보를 포함하는 로그 파일의 세트
- 에러코드, 바이너리 로그 자체에 대한 메타데이터 등 다양한 데이터가 같이 포함되게 됨
- 기본적으로 Transaction Commit 시에 기록되어지며, 데이터 변경 순서를 보장
- 주로 복제(Replication) 및 복구(Recovery)를 목적으로 binary log가 사용 됨
- 복제: Secondary Node 가 Primary Node 로부터 binlog 데이터를 전달받아서 로깅 함(릴레이 로그)
부하분산 기능을 제공, 바이너리 로그는 마스터라는 서버에서 생성되고 슬레이브란 서버는 마스터 서버에 접속하여 이 마스터의 바이너리 로그를 읽어와서 똑같이 그 이벤트를 실행시켜 마스터서버와 슬레이브 서버를 동일하게 만들음 - 복구: 데이터베이스를 사용하다보면 데이터 삭제나 데이터베이스가 어떤 이유로 장애나 크래쉬가 발생할 시 복구를 해야할 때가 있습니다. 이때 특정 시점으로 돌아가야 하는데 이때 특정 시점 시간으로 돌아갈 때
- 복제: Secondary Node 가 Primary Node 로부터 binlog 데이터를 전달받아서 로깅 함(릴레이 로그)
2. binlog 방식
1) Statement-based logging
- Insert, Update, Delete 에 대한 SQL 문들이 포함
- Statement base 로 복제를 수행, Statement-Based Replication (SBR)
- 로그 파일에 적은 데이터가 기록되며, 로그 파일에 필요한 저장 공간이 줄어드는 장점
- 백업에 대한 복구는 Replay 처럼 수행되며 빠르게 복원이 수행
- 로그 기반으로 복원 시 제약 → RAND(), LOAD_FILE, UUID() 등과 같이 Deterministic 하지 않은 동작에 대해서는 정확히 복제가 안됨
2) Row-based logging
- 각 행에 대한 변화를 기록
- Row-based logging 을 이용해서 Primary → Secondary 로 복제를 수행할 있음, Row-Based Replication(RBR)
- RBL 의 경우 각 행의 변경 사항을 이진 로그에 기록하므로 로그 파일의 크기가 매우 빠르게 증가할 수 있으며 지연이 발생할 수 있음
- 임시 테이블의 경우 RBL 기반으로 복제되지 않으므로 임시 테이블 관련 구문은 Statement base 로 기록되어야 함
3) 혼합형
- MySQL 5.1 이상부터 Row-based logging 과 함께 혼합형태가 지원
- 기본적으로는 Statement based logging 을 사용하지만, 스토리지 엔진 및 특정 명령문에 따라 로그가 자동으로 Row based logging 으로 기록 됨
- mysqlbinlog 유틸리티를 사용하면 바이너리 로그에 대한 내용을 쉽게 조회 가능
3. binlog vs transaction log
binlog | transaction log(redo log) | |
용도 | 데이터베이스에 기록 및 업데이트한 이력(history)을 로깅, 상태 복원에 대한 핵심적으로 사용될 수 있는 증분백업을 지원 | 트랜잭션에 대한 처리,롤백,Crash Recovery, Point in Time Recovery 등을 위한 용도로 사용 |
사용 엔진 | MyISAM 스토리지 엔진 | InnoDB 스토리지 엔진 |
728x90
'DataBase > Data & SQL' 카테고리의 다른 글
[Data] 데이터 관리, 마스터 데이터와 MDM(Master Data Management) (0) | 2023.02.12 |
---|---|
[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL) (0) | 2023.01.31 |
[MySQL] MySQL version 확인 방법 (0) | 2023.01.11 |
[SQL] MySQL의 Binding Variables, 바인딩 변수 사용법(mysql,python), 장점 (1) | 2023.01.10 |
프로그래밍 언어별 '(홑 따옴표, single quotation) vs "(쌍 따옴표, double quotation) (0) | 2022.06.08 |
댓글