MySQLデータベースを自動的に最適化させてみます…

データベースが不調でサイトにすら接続不能…てことで半年ほど前に解決させたんですが、このところ頻繁に発生するようになって困っていました。その頻度はもう2日から3日。もう手動で解決なんてらちがあきません…。

原因はMySQLデータベースのテーブルに発生するオーバーヘッドということだそうです。そこでグーグル先生に助けを求めることに。

すると2種類の解決方法を見つけることができました。

  • サーバーのcron機能を使って定期的にデータベースの最適化を行う。
  • WordPressのプラグイン「WP-DBmanager」を使って定期的にデータベースの最適化を行う。

具体的な設定方法をいかにまとめてみました。もちろん私の備忘録としてなので過不足があるかもしれません 😳


解決方法 その1 : サーバーのcron機能を利用する

サーバーのcronでMySQLのデータベース最適化コマンドをたたくというもの。

XREAサーバーではサーバーの設定にてcronを設定できるので、それを利用した設定方法をば。

まずXREAサーバーの管理メニューからcronを開き、次の内容を設定します。

  • cronを実行するタイミング : 0 * * * *
  • cronで実行させるスクリプト : /home/hogehoge/cron/optimize-mysql
    (エラーログを破棄してほしければファイル名の後ろに >/dev/null 2>&1 を付加)

そして次の内容を記述した optimize-mysql ファイルの中身を記述し、cronで指定した場所にFTPなどでアップロードしてパーミションを744か755に設定。
(データベースにアクセスするためのパスワードをそのまま記述してあるから)

#!/bin/sh
/usr/local/mysql/bin/mysqlcheck -o -r ?all-databases -uUSERNAME -pPASSWORD

(USERNAMEはデータベースのユーザー名、PASSWORDDはデータベースのパスワードを入力)


解決方法 その2 : プラグイン「WP-DBmanager」を導入

まずWP-DBmanagerをインストールします。

プラグインをインストールすると作成される wp-content/backup-db フォルダのパーミッションを 707 に設定します。

wp-dbmanagerフォルダにある htaccess.txt を wp-content/backup-db フォルダに移動させて .htaccess に名前を変更。

この状態で有効化すると現れる「Database」というメニューから「DB Option」を選んで、mysqldumpとmysqlのパスを設定します。XREAサーバーの場合はそれぞれ次のように記述して保存します。

  • mysqldumpのパス: /usr/local/mysql/bin/mysqldump
  • mysqlのパス: /usr/local/mysql/bin/mysql

ここまでを設定すれば通常ならプラグインは動くはず。

…なんですが、当サイトで使っているサーバーはXREAでセーフモードで動作しているので、セーフモードによる不具合を回避するため次の設定も追加で実施します。

/wp-admin/admin.php をCGIモードで動作させる必要があるので wp-admin フォルダにある .htaccess に次の内容を追加。

<files admin.php>
AddHandler application/x-httpd-phpcgi .php
</files>

Wodpressをインストールしたルートフォルダにある wp-cron.php もCGIモードで動かす必要があるので、Wordpress フォルダの .htaccess ファイルに次の内容を追加。

<files wp-cron.php>
AddHandler application/x-httpd-phpcgi .php
</files>

以上の設定を行った後、メニューのDatabaseから「Backup DB」へ行き、赤字のエラーがなければ問題なし。


…ということで、一通り設定はしてみました。これで解決してくれれば良いのですけどねぇ…。

ちなみにこの不具合、現時点ではMySQLによるデータベースを使用していればサーバーに依存せず発生するようです。ホント迷惑な話です 😥

なお不具合解消の参考にしたのは次のサイトです。併せてご覧ください。

サーバーのcron機能を利用する方法
WordPressが調子悪い理由が分かった -> MySQLテーブルのオーバーヘッド ? tune web
WordPress ? フォーラム ? MySQLのオーバヘッド蓄積によるトラブルについて
WP-DBManagerをインストールする方法
WP-DBManager(WordPressデータベース・バックアップ用プラグイン)の導入と使い方
CORESERVERでWP-DBManagerを動かすために | 犬小屋にて
WordPressのバックアッププラグインが動きません [Archive] – XREA&CORE SUPPORT BOARD
WordPress WP-DBManager プラグインの使い方
CORESERVERでwp-dbmanager 2.50を導入 – KENCOM.BIZ

「MySQLデータベースを自動的に最適化させてみます…」への4件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です