티스토리 뷰

DB

Mysql Query log

keehyun2 2019. 5. 9. 15:52

mysql 에서 실행한 쿼리 내역을 로그로 남기기 위해선 추가 적인 설정이 필요합니다.

/etc/my.cnf 에 다음 설정을 추가합니다.

...
[mysqld]
... 
general_log_file = /var/log/mysql/general.log # log 파일 경로는 변경가능합니다. 
general_log = 1
...

위와 같이 설정하면 실행된 쿼리 내역들이 /var/log/general.log 에 계속 쌓입니다.

로그파일 관리

이 로그 파일은 크기가 계속 늘어나기 때문에 관리가 필요합니다.

저는 crontab 에 매일 새벽 3시에 돌아가는 예약 작업을 등록해서 관리하였습니다.

다음 명령어를 shell 에서 실행합니다.

$ crontab -e

# 로그파일명 뒤에 날짜를 붙혀서 백업하고, 기존의 로그는 내용을 지웁니다. 
0 3 * * * \cp /var/log/mysql/general.log /var/log/mysql/general_$(date +\%Y\%m\%d).log && cat /dev/null > /var/log/mysql/general.log
# 30일이 지난 로그는 general_*.log 파일을 찾아서 삭제합니다. 
0 3 * * * find /var/log/mysql/ -name 'general_*.log' -mtime +30 -delete

Mysql 덤프 crontab

매일 새벽 2시에 디비 덤프를 하고 60일 이상된 백업파일은 삭제하는 명렁어입니다.

0 2 * * * mysqldump -u root -p비밀번호 pinnacle > /data/mysqldump/testdb_$(date +\%Y\%m\%d).sql
0 2 * * * find /data/mysqldump/ -name 'pinnacle_*.sql' -mtime +60 -delete

'DB' 카테고리의 다른 글

Convert sql from sybase IQ to oracle 12c  (0) 2016.09.11
오라클 고도화  (0) 2016.07.02
ibatis log query 가독성 좋게 출력하기.  (0) 2016.06.07
mysql 계층 쿼리 정리 및 분석  (0) 2016.03.29
댓글
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크