MySQLのディレクトリ変更でWeb画面がDB接続エラーとなる
【当方の環境】CentOS6.7
zabbix 2.4.6
お世話になっております。
今回、以下構築した環境でZabbixのWeb画面を表示しようとしたところ以下のDB接続エラーが発生し、表示できない状況です。
「http://www.zabbix.jp/node/3076」の過去フォーラムを参考にして【対応】に記載している内容を実施してみましたが状況改善
できず暗礁に乗り上げている状況です。
■エラーメッセージ1
Database error
Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
■エラーメッセージ2
Database error
Error connecting to database: Unknown MySQL server host 'localhost:/data/mysql/mysql.sock' (1)
【構築状況】
現在、Pacemaker+corosync+DRBDでCentOSサーバマシン2台で、zabbixサーバをクラスタ構成とし構築を行っています。
サーバ2台それぞれで、MySQLのDBディレクトリをデフォルトの「/var/lib/mysql/」で構築し、Zabbixサーバが問題なくクラスタ
で切替る動作を行うことを確認したうえで、2台のサーバが同じMySQLのDBを参照するようにDRBDでミラーリングする領域
「/data/mysql」にDBを構築(1台の「/var/lib/mysql/」ディレクトリをまるごとコピー)しました。
そこで、それぞれのサーバのMySQLの参照するDBを「/data/mysql」に変更しました。
ちなみに、この環境で/data/mysql/mysql.sockは作成されております。
【対応】
〇「/etc/my.cnf」のディレクトリ変更
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
*以下エントリーはなかったので追記(なくても状況に変化なし)*
[client]
socket=/data/mysql/mysql.sock
〇「/etc/php.ini」のデフォルト設定を変更
mysql.default_socket = /data/mysql/mysql.sock
〇「/etc/zabbix/zabbix_server.conf」の以下エントリーを修正
DBSocket=/data/mysql/mysql.sock
〇「/etc/zabbix/web/zabbix.conf.php」の以下をデフォルトのままの場合と、パス指定した場合で表示されるエラーが、
エラー1とエラー2に状況が変わる
(1)デフォルトのまま-->「エラーメッセージ1」が表示される
$DB['SERVER'] = 'localhost';
⇒Database error
Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
(2)以下パス指定すると-->「エラーメッセージ2」が表示される
$DB['SERVER'] = 'localhost:/data/mysql/mysql.sock';
⇒Database error
Error connecting to database: Unknown MySQL server host 'localhost:/data/mysql/mysql.sock' (1)
〇「/etc/httpd/conf.d/zabbix.conf」に以下を追加しても、しなくても状況は同じ
<Directory "/usr/share/zabbix">
:::
(追加)→ php_value mysql.default_socket /data/mysql/mysql.sock
</Directory>
以上、なにかお気づきの点ご指導頂ければ幸いです。
TNK - 投稿数: 4740
zabbix.conf.phpを以下のように設定してみてください。
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1';
$DB['PORT'] = '3306';
misaki - 投稿数: 69
TNKさん
ありがとうございます。
以下設定で表示できるようになりました。
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1'; ## ← 'localhost'となっていましたが、'127.0.0.1'に変更すると表示できました。
$DB['PORT'] = '0'; ## ←'3306'でも表示できました
ご指摘いただいた設定のうち、
$DB['SERVER'] はもともと'localhost'となっていましたが、'127.0.0.1'に変更すると表示できました。
$DB['PORT'] はもともと '0'となっていましたが、そのままでも'3306'でも表示できました。
結果、当方の環境では、以下の設定が原因のようでした。
暗礁に乗り上げていたところ、大変助かりました。
ありがとうございました。
■表示OK ⇒ $DB['SERVER'] = '127.0.0.1';
■表示NG ⇒ $DB['SERVER'] = 'localhost';