CentOS 5.10の準備
某redhat Inc.は、RHE 5.10をReleaseするに際して、MySQLを5.5に上げる決断をした。 これは、今までのRHEのPatchポリシーを考えるとかなり大掛かりな変更であって、対応する作業がかなり大掛かりになる。
ここで、取り敢えず、CentOS 5.9 において、PHP5.1を利用しつつMySQLを5.1に上げる方法を記載しておく。
最終的には、MySQLを5.5にしなければならないが、RHEの移行ポリシーも 5.0→5.1→5.5の順に上げるように指示しているので、まずは、5.0→5.1の更新を行う。
なお、RHEは、移行のために mysqld 5.1を準備しているが、これは移行時のためのreleaseであり、サポートはないので注意すること。
PHP5.1とMySQL5.0
RHE 5シリーズ、CentOS 5シリーズでは、PHP 5.1及びMySQL5.0を採用していた。PHP5.1からMySQLを利用する場合、PDO_MYSQL.soかMYSQL.soを利用するが、 このDSO(Dynamic Shared Object)はlibmysqlclientをlinkしている。これが、何らかの悪影響を及ぼす可能性がある。
また、本来であればPHP5.1は、そもそもメンテナンスも終了しているし、Security的にも望ましくないVersionなので、更新するのが本道である。
しかし、一般的に、PHPで記載されたSoftwareを更新するのは非常に難しいので、諦めて PHP5.1 + MySQL 5.1に取り敢えず上げることを優先する。
MySQL 5.0と5.1の違い
- ここに、MySQL 5.0と5.1の違いが掲載されているので、ちゃんと確認すること
原則として、MySQL5.0→5.1で、DBのファイルが変更になっている。従って、単純にmysqld 5.0のバイナリーを5.1に置き換えるだけではダメで、mysql_upgradeを実行する必要がある。 その他、若干の非互換の部分があるので、可能な限り確認しておくこと
MySQL 5.0から5.1へのUpgrade
事前に、DBを止めるので、その為に必要な準備をしておくこと。事前アナウンスなどを行う必要があるだろう。
- 仮想Serverなら、一度shutdownして、Snapshotを取得すること。物理サーバーならBackupを取っておくこと。
- こういうところで手を抜くと、必ずあとで痛い目を見ます。マーフィーを侮ってはいけません。
- RepositoryにEPELとIUSを追加
rpm -Uvh epel-release-5-4.noarch.rpm
rpm -Uvh ius-release-1.0-11.ius.el5.noarch.rpm
- 自明だと思うが、当然、EPELやIUSのRPMファイルは、その時の最新版を利用すること
- mysqlを削除
yum erase mysql
- ここで表示される、削除されるpackageをメモしておくこと。あとで入れ直す必要がある。
- MySQL 5.1をInstallする
yum -y install mysql51 mysql51-devel mysql51-server mysqlclient15
- 削除されたPackageを再投入
- メモを見て追加すること
- my.cnfを修正する
default-character-set = utf8
や、table_cache → table_open_cache / table_definition_cache
へ変更等、若干の変更点があるので、注意して作業すること
- mysqldを起動
- DBのUpGradeを実行
mysql_upgrade -u root -p
- 大量にWarningやInfoが出るが、前半で「Tableを更新しろ」と出ている部分は、後半で「更新した」と出てくるので、問題ないことが多い。
- しかし、もし問題があると大変なので、必ず確認すること。
- これで終了
なお、実際には、作業開始前に、chkconfig mysqld off
等を行って、できるだけ安全に作業を進めるべき。
最後に
5.1から5.5へのUpgradeは、そのうち書きます。恐らく、今回とほとんど変わらないはず。