33. MySql binary log 사용법
1. binary log 란 ?
- 에러코드, 바이너리 로그 자체에 대한 메타데이터 등 다양한 데이터가 같이 포함되게 된다.
- 주로 복제 및 복구를 목적으로 binary log가 사용되어진다.
2. binary log 생성시기 및 중지 방법
- mysqld는 바이너리 로그 기본이름에 숫자 확장자를 추가하여 이진 로그파일 이름을 생성합니다. 서버거ㅏ 새 로그파일을 작성할 때마다 숫자가 증가하므로 순서가 지정된 파일이 작성됩니다.
로그파일이 생성되는 시기
1) 로그를 시작하거나 플러시 할때
- 서버는 로그를 시작하거나 플러시 할 때마다 생성된 로그파일 순서이후 번호를 생성하여 새 파일을 작성합니다.
2) 로그 옵션을 이용한 바이너리 파일크기 제한
- 바이너리 로그 파일이 무한정으로 커지면 I/O에 대한 부담과 유지관리 측면에서도 굉장히 어려울 것입니다. 이때 사용하는 옵션이 MAX_BINLOG_SIZE란 옵션입니다. 한 바이너리 로그 파일단 최대 크기를 정합니다. 로그파일을 작성후 로그파일이 이 옵션 크기에 다다르게 되면 자동으로 로그파일이 플러시 되고 신규파일이 생성되어 계속 진행하게 됩니다.
3) 바이너리 생성중지
- 바이너리 로그 생성중 특정이유로 인해 생성을 임시로 막고자 한다면 다음과 같이 실행한다.
mysql 로그인후 실행 또는 my.cnf 에
mysql> SET sql_log_bin=OFF
or
my.cnf 에서 diable_log_bin 을 입력한다.
my.cnf 를 수정한 후에는 mysql을 재실행한다.
systemctl restart mysqld
system restart mysql
systemctl restart mysqld
중 하나를 입력한다.
binlog 설정하기
리눅스 /etc/my.cnf
윈도우 /설치 위치의 my.ini -> my.ini없으면 만들어 필요한 것을 적으면 된다.
binlog 읽기
binlog는 vi cat vim으로 읽을 수 없다. 깨진다.
mysqlbinlog를 이용하여 읽는다.
ex) mysqlbinlog binlog.000001

위와 같이 바이너리형태로 나온다.
하지만 이런상태로는 읽을 수 없다.. -verbose 설정을 주었다.

바이너리 형태와 읽을 수 있는 쿼리문이 나왔다. -verbose설정을 두번 줄 수 있어 실행해보았다.

위와 같이 mysql 인자의 type이랑 nullable, is_null등이 추가되어 나온다.

--base64-output=DECODE-ROWS 옵션을 주게되면 바이너리 타입은 안보이게 된다.
추가적인 옵션사항
--start-datetime, --stop-datetime : 시점(시간)을 명시한다.
ex) --start-datetime="2022-08-08 00:00:00" --stop-datetime="2022-08-10 00:00:00"
2022년 8월 8일 0시 부터 2022 8월 10일 0시 까지의 log를 확인할 수 있다.