mysql_binary_log_분석

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

mysql_binary_log_분석 [2020/04/21 12:58] (현재)
koov 만듦
줄 1: 줄 1:
 +====== MySQL binary log 분석 ======
 +
 +MySQL binary log 를 통해서 어떤 SQL들이 실행되었는지 분석하는 방법을 설명한다.
 +일반적으로 binary log는 말그대로 binary형태로 데이터가 저장되어있기 때문에 일반적인 vim같은 에디터로는 내용을 확인할 수가 없다. 따라서 아래의 순서로 데이터를 변환해야 한다.
 +
 +
 +===== binary file 변환 =====
 +
 +<WRAP prewrap>
 +<code bash>
 +# mysqlbinlog -vvv --base64-output=DECODE-ROWS binarylog_file > decodedlog_file
 +</code>
 +</WRAP>
 +
 +위와같이 명령을 내리게 되면 디코딩된 파일이 생성된다.
 +추가적인 옵션등은 아래와 같다.
 +
 +<WRAP prewrap>
 +<code bash>
 +# mysqlbinlog -d [데이터베이스명] [log-bin파일명] > [저장할 파일명]
 +ex) mysqlbinlog -d database_01 mysql-bin.00001 > restore_00001.sql
 +</code>
 +</WRAP>
 +
 +===== 특정 기간의 로그내용만 변환 =====
 +<WRAP prewrap>
 +<code bash>
 +# mysqlbinlog --start-datetime='2016-03-01 00:00:00' --stop-datetime='2016-03-21 23:59:59' [log 파일명]  > [파일명].sql
 +</code>
 +</WRAP>
 +
 +===== 특정 형식의 쿼리 내용만 변환 =====
 +
 +<WRAP prewrap>
 +<code bash>
 +# mysqlbinlog [log 파일명] | grep -i -e "^create" -e "^update" | more      // 콘솔로 출력
 +# mysqlbinlog [log 파일명] | grep -i -e "^create" -e "^update"  >   [파일명].sql   // 파일로 출력
 +</code>
 +</WRAP>
 +
 +===== 기타옵션들 =====
 +
 +  * ''%%--%%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''
 +시점(포지션)을 명시한다.
 +
 +
 +===== 참조링크 =====
 +  * https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog-row-events.html
  
  • mysql_binary_log_분석.txt
  • 마지막으로 수정됨: 2020/04/21 12:58
  • 저자 koov