WPのデータベースを自動で最適化する方法

  • 投稿 : 2013-09-16

本記事は広告およびアフィリエイトプログラムによる収益を得ています

※動作は、バリューサーバーで確認しています。

「データベースに接続できません」という恐怖

Xrea,CORESERVER.JPの場合、マレに「データベースに接続できません」と出てきてブログが表示されないことがあります。バリューサーバーを借りようかなと思ってるのですが、ここでもそういうことがあると非常に怖いので、WPのテーブルを自動で最適化するようにしてみました。

参考:XreaでWordPressの「データベースに接続できません」を治す方法

WPのデータベースを自動で最適化する方法

WPのプラグインなどに頼るのは、不安なのでやめました。というのは、実際に障害が起こるとWPの管理画面に入れないからです。
そこまで気にする必要はないとは思うので、そう思う人は、「WP-DBmanager」というプラグインを導入するのが手っ取り早いと思います。

本記事では、mysqlcheck を使用します。

shファイルの作成

optimize-mysql.sh
#!/bin/sh
/usr/local/mysql/bin/mysqlcheck -o --all-databases -uユーザー名 -pパスワード
echo `date` >> /virtual/サーバーID/cron_log.txt

ユーザー名:DBのログインユーザー名
パスワード:DBのログインパスワード
サーバーID:サーバーアカウント名

3行目は、cron_log.txtというファイルに実行した日時を書き込むという処理なので特に必要ではありません。

doesn't support multiple contradicting commands.

こういうエラーが出る場合は、mysqlcheck のオプションの指定が間違っています。
「-r 修復、 -o 最適化 -a 解析」 とかのオプションが付けれるのですが、これを同時につけると上記のエラーになります。修復と最適化を同時に指定すると、エラーになります。

cronの設定


管理画面から設定できます。画像の例だと、毎日5時10分に実行されます。
今回のサンプルだとcron_log.txtというファイルに実行すると書き込むので、その中身をみれば実際に実行されたかどうかがわかるかと思います。

また、この設定だと、実行結果がメールで送られてきます。

ブラウザから、手動でデータベースの最適化を行いたい

optimize-mysql.php
<?php 
echo shell_exec ('/bin/sh /virtual/サーバーID/optimize-mysql.sh'); 
?>

optimize-mysql.shをphpから呼び出せばOKです。
optimize-mysql.shの場所をフルパスできちんと指定してくださいね。

これで、phpmyadminとかSSHとか使わずに、ブラウザから上記のphpを呼び出すだけで最適化ができるようになります。
スポンサーリンク