본문 바로가기

DBMS/MySQL

[MySQL] 바이너리 로그 파일

반응형

개요

바이너리 로그 파일은 데이타베이스 변경(테이블 생성,삭제등) 및 테이블 변경(insert,update,delete ..) 사항들이 기록되는 바이너리 형태의 파일이다. 

바이너리 로그는  로그 파일과 인덱스 파일 두개로 구성 된다. 인덱스 파일은 바이너리 로그 파일의 리스트를 가진 텍스트 파일로 .index 확장자를 가진다.

 

1. 바이너리 로그를  활성화

 - my.cnf 파일에 log-bin, server-id 추가

[mysqld]
log-bin
server-id=1

log-bin[=basename] 에서 basename을 정의 하지 않을 경우 <serverName>-bin.00000N 으로 생성됨

 

2. 바이너리 로그 파일  옵션

log-bin[=basenam]  : 바이너리 로그 파일 이름, 절대 경로 설정 가능

max_binlog_size=N[G,M,K]   : 바이너리 로그 파일의 최대 크기 지정(단위 G,M,K,bytes), default 1G, Max 값도 1G

expire_logs_days  : 바이너리 로그 파일 보관 기간(일 단위), default 0, 즉 바이너리 로그를 삭제 하지 않음

binlog_cache_size : 바이너리 로그 캐쉬 크기(단위 byte), 각각의 클라이언트을 위한 할당 크기, default 32k

** 바이너리 로그 파일은 mysql이 재시작 되거나 max_binlog_size 설정값을 초과 할 경우 다음 바이너리 로그 파일이 생성됨

 

3. 바이너리 로그 파일 관리

 3.1 바이너리 로그 파일 목록 및 현재 바이너리 로그 파일 확인

mysql> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| testsvr-bin.000001 |       177 |
| testsvr-bin.000002 |       177 |
| testsvr-bin.000003 |       177 |
| testsvr-bin.000004 |       177 |
| testsvr-bin.000005 |       154 |
+--------------------+-----------+
5 rows in set (0.00 sec)
mysql> show master status ;
+--------------------+----------+--------------+------------------+-------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| testsvr-bin.000005 |     7443 |              |                  |                   |
+--------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql>

 3.2 삭제

 - testsvr-bin.0003 이전 파일 모두 삭제

mysql> purge binary logs to 'testsvr-bin.000003' ;
Query OK, 0 rows affected (0.01 sec)

mysql> show binary logs ;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| testsvr-bin.000003 |       177 |
| testsvr-bin.000004 |       177 |
| testsvr-bin.000005 |      2287 |
+--------------------+-----------+
3 rows in set (0.00 sec)

mysql>

 - 날짜 기준 바이너리 로그 파일 삭제

mysql> purge binary logs  before '2019-11-28 22:00:00' ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>mysql> show binary logs ;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| testsvr-bin.000005 |      2287 |
+--------------------+-----------+
1 row in set (0.00 sec)

mysql>

4. mysqlbinlog 명령어

바이너리 로그 파일은 이름처럼 바이너리 형태로 저장이 되기 때문에 텍스트 편집기등으로 파일을 읽을 수 없다. 바이너리 로그 파일을 읽을수 있는 텍스트로 변경해 주는 명령어가 mysqlbinlog 이다

shell> mysqlbinlog mysql-bin.000001 > textlog.sql

 

 

반응형

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

[MySQL] InnoDB 데이타 파일 추가(system tablespace)  (0) 2020.01.06
[MySQL] mysqldump 백업  (0) 2019.11.29
[MySQL] InnoDB 파일 구조  (0) 2019.11.28
[mysql] 기본 명령어  (0) 2019.11.27
[MySQL] mysql connector-J 설치  (0) 2019.09.20