mysql_binary_log_분석

MySQL binary log 분석

MySQL binary log 를 통해서 어떤 SQL들이 실행되었는지 분석하는 방법을 설명한다.
일반적으로 binary log는 말그대로 binary형태로 데이터가 저장되어있기 때문에 일반적인 vim같은 에디터로는 내용을 확인할 수가 없다. 따라서 아래의 순서로 데이터를 변환해야 한다.

# mysqlbinlog -vvv --base64-output=DECODE-ROWS binarylog_file > decodedlog_file

위와같이 명령을 내리게 되면 디코딩된 파일이 생성된다.
추가적인 옵션등은 아래와 같다.

# mysqlbinlog -d [데이터베이스명] [log-bin파일명] > [저장할 파일명]
ex) mysqlbinlog -d database_01 mysql-bin.00001 > restore_00001.sql
# mysqlbinlog --start-datetime='2016-03-01 00:00:00' --stop-datetime='2016-03-21 23:59:59' [log 파일명]  > [파일명].sql
# mysqlbinlog [log 파일명] | grep -i -e "^create" -e "^update" | more      // 콘솔로 출력
# mysqlbinlog [log 파일명] | grep -i -e "^create" -e "^update"  >   [파일명].sql   // 파일로 출력
  • --read-from-remote-server

옵션의 경우 리모트서버에서 binlog를 읽을 수 있게 처리해준다. 타겟이 되는 서버에 대한 옵션을 같이 써줘야한다.
--host, --password, --port, --protocol, --socket, and --user

  • --hexdump

16진수로 덤프를 해준다. 복제에 문제가 생겼을 때 trace하는데 유용하다.

  • --rewrite-db

DB명을 바꿀 수 있다. 별거 아닌 것 같아도 복구 할때 유용하다.

  • --database

--binlog-do-db 옵션과 마찬가지로 특정 DB만 내린다. 이건 주의해야한다.

  • --start-datetime, --stop-datetime

시점(시간)을 명시한다.

  • --start-position, --stop-position

시점(포지션)을 명시한다.

로그인하면 댓글을 남길 수 있습니다.
  • mysql_binary_log_분석.txt
  • 마지막으로 수정됨: 2020/04/21 03:58
  • 저자 koov