MySQL 의 binary_log 를 분석하기 위해  more / cat 등으로 열어 보면 글자가 깨져서 표시됩니다.

정상적으로 읽기 위해서는 변환 작업이 필요합니다.

- 로그파일 전체를 변환             : #mysqlbinlog [log 파일명] > [파일명].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   // 파일로 출력

   * 기타 다양한 조건을 적용할 수 있다 (구글신께 물어 보세요)


하지만 변환 중 아래와 같이 오류가 발생하는 경우가 있습니다.

              -원인은 mysqlbinlog 가 실행될 때 /etc/my.cnf 파일을 읽어 들이는데 mysqlbinlog가  default-character-set 설정을 

                인식할 수 없어 발생한다.

                해결책은 my.cnf 파일에서 [client] 섹션에 있는 default-character-set = utf8 을 주석처리 후 mysqlbinlog 명령을 실행한다.

                작업이 완료된 후 my.cnf 의 default-character-set의 주석은 해제 한다. 

                                 (일부 블로그에서는 mysql을 재 시작하라고 하는데 그럴 필요는 없다.)

                 my.cnf 는 mysql 이 구동시 한번만 읽기 때문에 중간에 변경을 하여도 현재 서비스에는 영향이 없다.

                 mysqlbinlog 또한 구동시에 my.cnf 읽는다.




+ Recent posts