반응형
=======================================================
MySQL 로그 파일 관리
=======================================================
Mysql 의 로그 파일은 다음과 같이 크게 3종류가 있습니다.
1. 에러로그
2. 일반적인 로그
3. UPDATE 로그
2. 일반적인 로그
3. UPDATE 로그
첫번째 에러 로그는 hostname.err 의 이름으로 서버 실행시 에러를 기록하는 파일입
니다. 두번째 로그파일은 mysql 에 접근하는 사용자와 그들이 파일과 관련된 쿼리를
실행할 경우에 기록되는 로그 파일로 /usr/local/mysql/var 밑에 host_name.log 으로
저장이 되어집니다. Mysql 데이터에 파일을 기록하므로 파일과 관련된 쿼리는 DB 생
성/삭제 , 테이블 생성/삭제 , 레크드 삽입/갱신 이 있습니다.
이 로그 파일은 Mysql 실행시 --log 옵션을 주어 활성화 시키면 된다.
니다. 두번째 로그파일은 mysql 에 접근하는 사용자와 그들이 파일과 관련된 쿼리를
실행할 경우에 기록되는 로그 파일로 /usr/local/mysql/var 밑에 host_name.log 으로
저장이 되어집니다. Mysql 데이터에 파일을 기록하므로 파일과 관련된 쿼리는 DB 생
성/삭제 , 테이블 생성/삭제 , 레크드 삽입/갱신 이 있습니다.
이 로그 파일은 Mysql 실행시 --log 옵션을 주어 활성화 시키면 된다.
# /usr/local/mysql/bin/safe_mysqld --log &
업데이터로그는 테이블이 변경될때마다 해당 쿼리가 기록 됩니다. 기본적으로 활성
화 되지 않고 Mysql 실행시 --log-update 옵션으로 가능하다.
화 되지 않고 Mysql 실행시 --log-update 옵션으로 가능하다.
# /usr/local/mysql/bin/safe_mysql --log-update &
업데이터 로그는 /usr/local/mysql/var 밑에 host_name.00X 식으로 서버가 다시
실행되거나 mysqladmin reflesh 혹은 mysqladmin flush-logs 명령을 내릴때마다
뒤의 번호가 1씩 증가 한다. 혹은 --log-update=mysql.log 와 같이 로그파일명을
정해줄수도 있다. Update 로그는 update 쿼리만 저장하거 같지만 ..
delete , create 등의 쿼리도 모두 저장한다.
실행되거나 mysqladmin reflesh 혹은 mysqladmin flush-logs 명령을 내릴때마다
뒤의 번호가 1씩 증가 한다. 혹은 --log-update=mysql.log 와 같이 로그파일명을
정해줄수도 있다. Update 로그는 update 쿼리만 저장하거 같지만 ..
delete , create 등의 쿼리도 모두 저장한다.
mysql 의 사용량이 많은 사이트는 이런 로그파일이 쌓이므로 해서 디스크 용량에
문제가 생길수 있다. 관리자는 수시로 점검하여 삭제를 해어야 한다.
문제가 생길수 있다. 관리자는 수시로 점검하여 삭제를 해어야 한다.
로그 파일을 관리하는 방법으로는 두가지가 있다.
먼저 /usr/local/mysql/share/mysql/mysql-log-rotate 파일을 이용하는 방법과
간단한 스크립트를 작성하여 cron 에 등록한뒤 관리하는 방법이 있다.
간단한 스크립트를 작성하여 cron 에 등록한뒤 관리하는 방법이 있다.
/usr/local/mysql/share/mysql/mysql-log-rotate 파일을 이용하는 방법은 ..
--log-update=mysqld.log 와 같이 로그파일을 정해서 관리할때 이용하면 된다.
--log-update=mysqld.log 와 같이 로그파일을 정해서 관리할때 이용하면 된다.
# vi /usr/local/mysql/share/mysql/mysql-log-rotate
-------------------------------------------------------------------------
----
# This logname is set in mysql.server.sh that ends up in /etc/rc.d/init.d/mysql
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
-------------------------------------------------------------------------
----
# This logname is set in mysql.server.sh that ends up in /etc/rc.d/init.d/mysql
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
/usr/local/mysql/var/mysqld.log {
# create 600 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -n "`ps acx|grep mysqld`"; then
/usr/local/mysql/bin/mysqladmin flush-logs
fi
endscript-x
}
# create 600 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -n "`ps acx|grep mysqld`"; then
/usr/local/mysql/bin/mysqladmin flush-logs
fi
endscript-x
}
-------------------------------------------------------------------------
--
--
위의 파일을 /etc/logrotate.d 디렉토리에 복사만 하면 알아서 로테이트 하게 된다.
단..로그파일을 교체한후 mysqladmin flush-logs 를 적용하므로 root 홈디렉토리에
.my.cnf 파일을 만든후 MySQL 의 root 사용자의 암호와 사용자 명을 적어주어야 한
다.
단..로그파일을 교체한후 mysqladmin flush-logs 를 적용하므로 root 홈디렉토리에
.my.cnf 파일을 만든후 MySQL 의 root 사용자의 암호와 사용자 명을 적어주어야 한
다.
vi /root/.my.cnf
--------------------------------------
[mysqladmin]
password = xxxxxxxxx
user = root
--------------------------------------
[mysqladmin]
password = xxxxxxxxx
user = root
--------------------------------------
정상적인 로그 교체의 확인은 다음과 같이 하면 된다.
# logrotate -f /etc/logrotate.d/mysql-log-rotate
이밖에 --log-update 등의 옵션을 이용하면 수시로 로그파일의 뒤에 001,002 씩으로
번호가 증가 되면서 저장이 되므로 별도의 스크립트를 작성하여 관리해야 한다.
이는 각자 머리를 잘 짜면 될거 같다.
#!/bin/sh
find /usr/local/mysql/var -name "*.[0-9]*" -type f -mtime +3 -exec rm -f {} \;
/usr/local/mysql/bin/mysqladmin flush-logs
/usr/local/mysql/bin/mysqladmin flush-logs
위와 같은 만들면 된다. 이는 "3일 지난 파일은 지워라" 로 cron 에 등록한뒤 적절한
시간마다 실행해주면 된다.
시간마다 실행해주면 된다.
반응형
'데이타베이스' 카테고리의 다른 글
mysql 로그 지우기 (0) | 2008.10.10 |
---|---|
mysql 바이너리 로그파일 보기 (0) | 2008.10.10 |
mysql로그 보기 (0) | 2008.10.10 |
mysql 로그 삭제 (호스트명-bin.001 ) (0) | 2008.10.10 |
MYSQL 동시접속자 등 높을경우 (0) | 2008.10.10 |
MYSQL DB에서 램덤으로 값 받기 (0) | 2008.10.10 |
2건 이상 중복되는 회수 구하기 쿼리 예 (0) | 2008.10.10 |
MySQL 튜닝 18 가지 (0) | 2008.10.10 |