MySQLが重いのはDNS逆引設定が原因
セットアップしたての、サーバのMySQLが重くSQLのレスポンスが非常に悪いという現象が発生。
今まで対応した事がない現象だったので、いろいろと調べてみました。
原因はサーバからDNSの逆引きをしていたのが原因みたいでした。
参考:http://www.netcreates.jp/blog/2009/05/skip-name-resolvedb.html
そこで、サイトを参考にさせていただき、「skip-name-resolve」を設定。
my.cnfに下記の設定を追加しました。
[mysqld] skip-name-resolve
MySQLがDNS逆引きを行う必要が無い場合や、出来ない場合等はきっちりと設定しておく必要があるんだなぁと実感。
まだまだ、理解が足りていませんでした。
しかし・・・コレでだけで問題は解決していませんでした。
skip-name-resolveを設定すると弊害も発生してしまいます。
それが
「skip-name-resolveを設定するとDBに接続できなくなってしまう」
です。
MySQLにローカル接続用のユーザを追加するとき、MySQL 権限テーブルに「localhost」と書いてしまうと、今まで接続できていたものが出来なくなってしまいます(汗
grant all privileges on DB.* to testuser@'localhost' identified by 'hogehoge';
原因は「skip-name-resolve」を設定するとホスト名の解決を行わなくなり、
ローカル接続も接続元が「localhost」ではなく 127.0.0.1 として扱われるそうです。
へー知らなかった(汗
言われてみればそりゃそうですね☆
MySQLをインストールしたての場合等の「@127.0.0.1」のユーザがいない状態で、「skip-name-resolve」を設定するとMySQLに接続できなくなるそうです。
WEB+DBサーバー内で、phpMyAdminを利用してMySQLを管理している場合等は、接続元が「localhost」である場合が多いでしょうし、その場合等も接続できなくなってしまいますね。
解決方法は、下記のとおりユーザー追加時に、127.0.0.1を設定すればOKです。
grant all privileges on DB.* to testuser@127.0.0.1 identified by 'hogehoge';