開発用にMySQLの全ログを取りたいのでmy.cnfに
log-slow-queries = /var/log/mysql-all-sql.log
long_query_time = 0
を追記して
#touch /var/log/mysql-all-sql.log
#chown mysql:mysql /var/log/mysql-all-sql.log
として、0秒以上かかるクエリをスロークエリログに入れる(=全て記録する)設定をしたらMySQL起動エラーが出た。 古いMySQLでは、ロングクエリタイムは1秒以上を設定しなければならず、0秒指定は5.1系にしないとダメらしい。
早速、yumでMySQLを更新しようとするが、デフォルトのリポジトリだとMySQLは5.0.77が最新。 ソースを取ってきてビルドするのもありだが、今回は手軽にyumから入れたいので、リポジトリの追加で対応する。
新しいバージョンが登録されているリポジトリとしては、epelやremiがメジャーだ。
#wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
#wget http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-8.el5.remi.noarch.rpm
#rpm -Uvh remi-release-5-8.el5.remi.noarch.rpm epel-release-5-4.noarch.rpm
※release-x-yの部分はバージョンなので、新しいのが出ると変わるので、エラーが出るときはブラウザでディレクトリを覗いてファイル名を確認する。
これで各リポジトリの情報が登録される。
各リポジトリの情報が追加されただけで、yumコマンドを打っただけでは有効にはならないので
yum –enablerepo=epel,remi list
等の様に、–enablerepoで使用するリポジトリを指定する(標準で有効にすることも出来るが、自動アップデートで更新されると都合の悪いときもあるので、コマンドで指定した方が安心)
yum –enablerepo=remi install MySQL
で導入すると5.1.55に更新出来るが、依存関係でPHPも更新しなければならないようだ。 PHPを更新しても特に不都合はないので、まとめて更新した。
MySQLをバージョンアップしたので、おまじない
#mysql_upgrade –password=パスワード
を実行して、データベースをアップグレードしておく。
PHPの更新で、date系関数でタイムゾーンを設定していないとWarnが出るようになっているので/etc/php.iniの修正が必要になる。
date.timezone=’Tokyo/Asia’
設定を済ませてapache/mysqlを再起動
#/etc/init.d/httpd restart
#/etc/init.d/mysqld restart
今回の更新ではセッション関連のエラーが出た。
初期設定でroot:apacheだったphpの実行がdaemon:daemonになっていたので、session保管場所のパーミッション不足でエラーが出ていた。
実行権限をrootに戻しても良いが、daemon:daemonで実行した方がセキュリティ的によさげなので
chown daemon:daemon /var/lib/php/session
rm /var/lib/php/session/*
して、対応した。
なお、phpMyAdminを使っている場合、2.11系になっていると思うが、PHP5.3では推奨されない機能を使用しているためDeprecatedメッセージが出るので、こちらも対応のバージョンに更新する(remiリポジトリに3.3系が入っている; php.ini設定でDeprecatedメッセージを単純に消すことも出来るが、新しいバージョンを使用しない理由もないので更新した)
phpMyAdminを3系にするとblowfishの設定を求められるので、/usr/share/phpMyAdmin/config.inc.phpで
$cfg[‘blowfish_secret’] = ‘適当な文字列’;
を設定する。
なお、現在のMySQLではlog-slow-queriesが非推奨になっている。
現在は
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
の様に、スロークエリログの有効をslow_query_logに1を与え(0なら無効)、slow_query_log_fileでスロークエリログファイルを指定する。
(321)