반응형

http://egloos.zum.com/goodhelper/v/2376049


MySql 을 사용하다보면 사용자들이 종종 디비를 날려먹거나
혹은 특정 작업만 따로 백업을 받아 놓고 싶은 경우가 발생하는데
이때 MySql 의 바이너리 로그파일을 이용하면 일이 쉬워집니다.

먼저 무작정 MySql의 바이너리 파일을 이용하여 쿼리문을 추출하면
양도 많고, 또 일일이 쿼리문을 걸러내야 하는데 mysqlbinlog를 사용할때 리눅스
기본 명령어 옵션을 이용하면 이런 작업들을 좀 수월하게 할 수 있죠~

$경로/mysqlbinlog /path/to/바이너리_로그파일 | \
grep -i -e "^update" -e "^insert" -e "^delete" -e "^replace" -e "^alter" | \ <= 수정,입력,삭제,변경,제거 쿼리문만 추출
cut -c1-100 |\ <= 추출할 쿼리문에서 1~100번 문자열까지만
tr '[A-Z]' '[a-z]' | \ <= 대문자를 소문자로 변환
sed -e "s/\t/ /g;s/\`//g;s/(.*$//;s/ set .*$//;s/ as .*$//" | sed -e "s/ where .*$//" | \ <=  정규식적용으로 한라인씩 읽음
sort | uniq -c | sort -nr <= 정렬하여 보여줌 (uniq 명령어는 중복쿼리 제거)

========================== 예제 =========================

mysqlbinlog /path/to/mysql-bin.000706 | \
grep -i -e "^update" -e "^insert" -e "^delete" -e "^replace" -e "^alter" | \
cut -c1-100 | \
tr '[A-Z]' '[a-z]' | \
sed -e "s/\t/ /g;s/\`//g;s/(.*$//;s/ set .*$//;s/ as .*$//" | sed -e "s/ where .*$//" | \
sort | uniq -c | sort -nr 




<실제 출력 화면.. 본인이 관리하는 DB라서 테이블명은 가림>

이외에도 특정 날짜를 기준으로도 쿼리문을 추출 할 수 있는데 본인이 직접 포스팅하기 보단
이와관련해서 잘 포스팅되어진 블로그를 링크하겠습니다.

http://kemo.tistory.com/1 <= mysqlbinlog 이용해서 특정 날짜만 추출하기

참조문서 : http://dev.mysql.com/doc/refman/5.5/en/binary-log.html


반응형

'연구개발 > MYSQL' 카테고리의 다른 글

MySQL NF 5.6 - Enhanced tracing (SQL Trace 방법)  (0) 2015.02.09
CentOS7 hostname 변경  (0) 2015.02.07
aws fdisk  (0) 2015.02.05
optimizer_swtich 쿼리로 보기  (0) 2015.02.05
[socket.io] set get 대체법  (0) 2015.02.04

+ Recent posts