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 |