MySQLをMyISAMで利用しているとテーブルのオーバーヘッドが発生します。
phpMyAdminを使えばブラウザ上から最適化を行うこともできますが、スクリプトを使って定期的に実行してみようと思います。
スクリプト組み立て
スクリプトはmysqlcheckと最適化オプション「-o」を使用し、最適化するDBを指定します。
■mysqlopti.sh
#!/bin/bash
## 変数に値を設定
HOSTNAME=********
SQLUSER=YYYYYYY
SQLPASSWD=ZZZZZZ
MYSQLDB=DBname
#mysql オーバーヘッド最適化
/usr/bin/mysqlcheck -o -r -u${SQLUSER} -p${SQLPASSWD} ${MYSQLDB}
exit
スクリプト実行
chmodで実行権限を付与した後、まずは手動でスクリプトを実行してみます。
# ./mysqlcheck.sh DBname_commentmeta OK DBname_comments OK DBname_links OK DBname_options OK DBname_postmeta OK DBname_posts OK DBname_term_relationships OK DBname_term_taxonomy OK DBname_terms OK DBname_usermeta OK DBname_users OK
cronにスクリプトを登録
後は「ln -s」で日次(/etc/cron.daily)か週次(/etc/cron.weekly)にシンボリックリンクを作成します。日時の場合はDBバックアップの後に処理をするようにファイル名を調整します。