mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
특정 DB 만 체크
mysqlcheck -u root -p --auto-repair [디비명]
MySQL 의 IO가 빈번히 발생하거나 , 오랫동안 최적화를 하지 않은 데이터베이스/테이블에 대해서 주기적으로 최적화 및 점검 및 복구를 Crond 를 이용해 손쉽게 하는 방법입니다.
물론 MySQL 접근 권한이 있어야 합니다. 또한 crontab 을 수정할수 있어야 하겠죠~
아래 명령어는 모든 데이터 베이스에 대해 분석, 복구, 최적화 및 자동 복구 옵션으로 진행하는 것입니다.
Crontab에 새벽 시간대나 아니면 1주일에 한번 정도 실행될수 있게끔 설정하면 되겠죠~
[MYSQL 경로]/mysqlcheck -u [DB USER] -p[DB PASS] -rao --all-database --auto-repair
/etc/crontab 에 아래와 같이 추가 합니다.
매일 새벽 2시에 돌아가도록 설정 한 것입니다.
00 2 * * * root /usr/local/mysql/bin/mysqlcheck -u [DB USER] -p[DB PASS] -rao --all-database --auto-repair > /dev/null 2 > &1
/dev/null 2 > &1 은 crontab이 실행될 때마다 출력되는 메세지를 crontab 실행권한자 (보통은 root)에게 메일을 보내도록 합니다. 그렇지만 모든 표준 출력및 오류 출력을 표현하지 않도록 하여 메일이 오지 않도록 하는 부분입니다. (메일을 받아서 확인을 해보는것도 좋지만 개인 서버기에 ~ 출력안하도록 했습니다~ ^^)
옵션 설명입니다.
-r 잘못된 인덱스를 복구 합니다.
-o 최적화를 합니다.
-a 분석을 합니다.
--auto-repair 잘못된 테이블을 자동 복구를 합니다.
--all-database 모든 데이터메이스에 대해서 진행합니다.
위 방법으로 매일 새벽 최적화 및 복구를 진행하도록 되어 있습니다. 물론 자동복구와 함께 DBDUMP를 이용해서 백업 해두셔야 합니다 ^^