티스토리 뷰
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 |
댓글