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
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 root -ppassword
이렇게 실행시키면 아래와 같은 결과를 볼 수 있다.
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
...
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 root -ppassword
# EOF
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 root -ppassword
# EOF
위 예에서는 매일 새벽 4시 45분에 myslqcheck를 실행하도록 했다. 이 시간은 적절히 수정하면 될 것이다.
- MySQL,
- mysqlcheck,
- cron,
- 스크립트


