[관리] MySQL 로그 파일 관리

=======================================================

   MySQL 로그 파일 관리

=======================================================

Mysql 의 로그 파일은 다음과 같이 크게 3종류가 있습니다.

1. 에러로그

2. 일반적인 로그

3. UPDATE 로그

첫번째 에러 로그는 hostname.err 의 이름으로 서버 실행시 에러를 기록하는 파일입

니다. 두번째 로그파일은 mysql 에 접근하는 사용자와 그들이 파일과 관련된 쿼리를

실행할 경우에 기록되는 로그 파일로 /usr/local/mysql/var 밑에 host_name.log 으로

저장이 되어집니다. Mysql 데이터에 파일을 기록하므로 파일과 관련된 쿼리는 DB 생

성/삭제 , 테이블 생성/삭제 , 레크드 삽입/갱신 이 있습니다.

이 로그 파일은 Mysql 실행시 –log 옵션을 주어 활성화 시키면 된다.

# /usr/local/mysql/bin/safe_mysqld –log &

업데이터로그는 테이블이 변경될때마다 해당 쿼리가 기록 됩니다. 기본적으로 활성

화 되지 않고 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 등의 쿼리도 모두 저장한다.

mysql 의 사용량이 많은 사이트는 이런 로그파일이 쌓이므로 해서 디스크 용량에

문제가 생길수 있다. 관리자는 수시로 점검하여 삭제를 해어야 한다.

로그 파일을 관리하는 방법으로는 두가지가 있다.

먼저 /usr/local/mysql/share/mysql/mysql-log-rotate 파일을 이용하는 방법과

간단한 스크립트를 작성하여 cron 에 등록한뒤 관리하는 방법이 있다.

/usr/local/mysql/share/mysql/mysql-log-rotate 파일을 이용하는 방법은 ..

–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 !

/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

}

————————————————————————-

위의 파일을 /etc/logrotate.d 디렉토리에 복사만 하면 알아서 로테이트 하게 된다.

단..로그파일을 교체한후 mysqladmin flush-logs 를 적용하므로 root 홈디렉토리에

.my.cnf 파일을 만든후 MySQL 의 root 사용자의 암호와 사용자 명을 적어주어야 한

다.

vi /root/.my.cnf

————————————–

[mysqladmin]

password = xxxxxxxxx

user = root

————————————–

정상적인 로그 교체의 확인은 다음과 같이 하면 된다.

# logrotate -f 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

위와 같은 만들면 된다. 이는 “3일 지난 파일은 지워라” 로 cron 에 등록한뒤 적절한

시간마다 실행해주면 된다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.