Binary log (binlog)

    • 테이블 생성 작업이나 테이블 데이터 변경과 같은 데이터베이스 변경 사항을 설명하는 이벤트가 들어 있음
    • 바이너리 로그 사용하는 목적 
      • 복제 (replication) : binlog를 통해 소스에서 수행된 것과 동일한 데이터 변경 사항을 수행하여 복제
      • 복구 (Point-in-Time Recovery, PITR) : 특정 시점의 백업을 복원한 후, 백업 이후의 트랜잭션을 binary log를 이용해 재적용

 

 

Binary Log의 파일 구조

  • Binary Format으로 저장
  • mysqlbinlog 유틸리티로 사람이 읽을 수 있는 형태로 변환 가능
  • 보통 MySQL의 데이터 디렉터리에 .000001, .000002 등과 같은 파일명으로 저장

 

 

Binary Log 활성화 확인

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)

 

 

 

Binary Log 포맷 

    • binlog 포맷 종류
      • STATEMENT : SQL 문장을 그대로 기록 (예: INSERT INTO users VALUES (1, 'Alice'))
      • ROW : 변경된 각 행(row)을 기록 (예: 특정 행의 변경 사항만 기록) 
      • MIXED : Statement와 Row 기반 로깅을 혼합
    • binlog 포맷 확인
mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)

 

 

 

Binary Log 확인

  • 저장된 binlog 파일 목록 확인
mysql> SHOW BINARY LOGS;
+---------------+-----------+-----------+
| Log_name      | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000005 |       180 | No        |
| binlog.000006 |       180 | No        |
| binlog.000007 |       180 | No        |
| binlog.000008 |      2202 | No        |
+---------------+-----------+-----------+
4 rows in set (0.01 sec)

 

 

 

Binary Log 파일 읽기

  • 쉘에서 mysqlbinlog utility를 통해 읽을 수 있다
$ mysqlbinlog binlog.000005

 

 

 

 


* MySQL Manual / The Binary Log
https://dev.mysql.com/doc/refman/8.0/en/binary-log.html

*  MySQL Manual / mysqlbinlog
https://dev.mysql.com/doc/refman/8.4/en/mysqlbinlog.html

'! > DBMS' 카테고리의 다른 글

SQL  (0) 2025.01.09
[MySQL] Sample DB 다운 받기  (0) 2025.01.08
[MySQL] MySQL, MySQL Workbench 설치 (Mac OS)  (0) 2025.01.08
DBMS  (1) 2025.01.08

+ Recent posts