출처:
http://mooo.org/3216/
리눅스 상에서 MySQL을 DBM으로 사용한다면
mysqlcheck를 사용해서 최적화 및 복구를 할 수 있다. 이것은
myisamchk와 비슷한데 myisamchk는 mysqld 데몬이 구동되지 않았을 때 사용할 수 있고, mysqlcheck는 mysqld 데몬이 구동되고 있을 때 사용한다는 점에서 다르다.
mysqlcheck는 콘솔 상에서 CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE 명령을 실행시켜주므로 이를 스크립트로 만들어서 cron에 등록해 주기적으로 사용하면 좋을 것이다.
mysqlcheck의 사용법은 다음과 같다.
shell> mysqlcheck [options] db_name [tables]
shell> mysqlcheck [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqlcheck [options] --all-databases
mysqlcheck의 유용한 옵션으로는 다음과 같은 것들이 있다.
- --all-databases, -A
모든 데이터베이스에 대해 검사한다.
- --analyze, -a
테이블을 분석한다.
- --auto-repair
테이블을 복구한다
- --fast, -F
테이블이 정상적으로 닫히지 않은 경우에 대해서만 검사한다.
- --force, -f
SQL 에러가 발생하더라도 계속 수행한다.
- --optimize, -o
테이블을 최적화시킨다.
- --repair, -r
테이블을 복구한다.
- --silent, -s
에러 메시지 외의 다른 메시지는 출력하지 않는다.
- --host=host_name, -h host_name
MySQL 서버가 구동하고 있는 호스트 이름을 지정한다.
- --user=user_name, -u user_name
MySQL 서버에 접속한 사용자 이름을 지정한다.
- --password[=password], -p[password]
MySQL 서버에 접속할 사용자의 암호를 지정한다.
- --port=port_num, -P port_num
MySQL 서버에 접속한 포트를 지정한다.
위의 옵션을 적절히 조합해서 mysqlcheck를 실행하면 된다. 일반적으로 mysqlcheck를 실행할 때는 아래와 같은 형태로 사용한다.
shell> mysqlcheck -Aao --auto-repair -u <u>root</u> -p<u>password</u>
이렇게 실행시키면 아래와 같은 결과를 볼 수 있다.
mooo.xe_action_forward Table is already up to date
mooo.xe_addons Table is already up to date
mooo.xe_admin_shortcut Table is already up to date
mooo.xe_comment_declared Table is already up to date
mooo.xe_comment_declared_log Table is already up to date
mooo.xe_comment_voted_log Table is already up to date
mooo.xe_comments OK
mooo.xe_comments_list OK
mooo.xe_counter_log OK
mooo.xe_counter_status OK
...
이제 주기적으로 검사해주기 위해
/etc/cron.d 에 등록해주도록 하자.
# /etc/cron.d/mysqlcheck
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=root
45 4 * * * root /usr/bin/mysqlcheck -Aaos --auto-repair -u <u>root</u> -p<u>password</u>
# EOF
위 예에서는 매일 새벽 4시 45분에 myslqcheck를 실행하도록 했다. 이 시간은 적절히 수정하면 될 것이다.
* 피시넷님에 의해서 게시물 이동되었습니다 (2010-05-05 17:50)