今まで、前に紹介した方法で、自分で MySQL の RPM をビルドしていたのですが、次の点が不満でした。
- コンパイルにかなりの時間がかかる
- コンパイル後の、テストが必ず失敗する(SSL まわりのエラーなので、テストは必ずしないように変更していた)
- なぜか、InnoDB plugin が無効になってしまって、InnoDB plugin を普通に試せない
ということで、QA もちゃんとされている MySQL の公式 RPM に切替えてみることにしました。
まず、現在の MySQL 5.1 の最新バージョンは 5.1.44 です。MySQL の公式サイトでは RHEL5 用の x86_64 の RPM が用意されています。
RHEL5 x86_64 用の RPM は、次のものをダウンロードすることができます。
- MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm
- MySQL-community-5.1.44-1.rhel5.src.rpm
- MySQL-community-debuginfo-5.1.44-1.rhel5.x86_64.rpm
- MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm
- MySQL-embedded-community-5.1.44-1.rhel5.x86_64.rpm
- MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm
- MySQL-shared-community-5.1.44-1.rhel5.x86_64.rpm
- MySQL-shared-compat-5.1.44-1.rhel5.x86_64.rpm
- MySQL-test-community-5.1.44-1.rhel5.x86_64.rpm
次のそれぞれの RPM に、どんなものが含まれているか調査してみました。
MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm
/usr/bin/mysql など、MySQL クライアントようのコマンドが含まれています。
MySQL-community-5.1.44-1.rhel5.src.rpm
SRPM です。mysql-5.1.44.rhel5.spec と mysql-5.1.44.tar.gz が含まれています。
MySQL-community-debuginfo-5.1.44-1.rhel5.x86_64.rpm
MySQL のデバッグシンボル情報です。
MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm
mysql_config コマンドと MySQL のヘッダーファイルが含まれています。
MySQL-embedded-community-5.1.44-1.rhel5.x86_64.rpm
MySQL の組み込む用途に使われる /usr/lib64/mysql/libmysqld.a が含まれています。
MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm
mysql の sysinit スクリプト、my.cnf 設定ファイルなど MySQL サーバに必要なプログラムが含まれています。
MySQL-shared-community-5.1.44-1.rhel5.x86_64.rpm
/usr/lib64/libmysqlclient.so と libmysqlclient_r.so が含まれています。
MySQL-shared-compat-5.1.44-1.rhel5.x86_64.rpm
MySQL-shared-community の複数のバージョンが含まれています。
MySQL-test-community-5.1.44-1.rhel5.x86_64.rpm
mysql_client_test コマンドが含まれています。
次に、CentOS で提供されているパッケージ名と MySQL 公式のパッケージ名の対応は、次のとおりになります。さらに詳しい RPM の説明は、MySQL 公式サイトを参照しましょう。
mysql: MySQL-client-community + MySQL-shared-community
mysql-bench: 該当なし
mysql-devel: MySQL-devel-community
mysql-server: MySQL-server-community
mysql-test: MySQL-test-community
MySQL 公式の RPM を使うには、既存の CentOS から提供されているパッケージを上書きするようなダミーパッケージを作成したほうが便利だろうと考えました。なぜなら、既存の MySQL 以外のパッケージで、mysql や mysql-devel のパッケージ依存関係が設定されているときにやっかいだからです。具体的には、このような現象が想定されるからです。
一度ダミーパッケージを作って、公式の RPM もローカルの yum リポジトリに入れてインストールとすると、どうも不思議な感じになってしまいました。具体的には、mysql パッケージをインストールすると、なぜか MySQL-server-community パッケージがインストールされてしまいました。
公式の RPM をよく見てみると、なんと Provides が設定されているじゃありませんか!
公式の RPM では、次のようにちゃんと Provides が設定されています。
MySQL-client: mysql-client MySQL-client
MySQL-server-community: msqlormysql mysql-server mysql MySQL MySQL-server
MySQL-test-community: mysql-test MySQL-test
MySQL-devel-community: mysql-devel MySQL-devel
MySQL-shared-community: mysql-shared MySQL-shared
MySQL-embedded-community: mysql-embedded MySQL-embedded
MySQL-test-community: mysql-test MySQL-test
なので、mysql パッケージ名を指定すると MySQL-server-community パッケージがインストールされるんですね。。。ということで、小文字のパッケージ名でもちゃんとインストールできます。。。ダミーパッケージを作成したのが無駄になってしまいました、お恥ずかしい。。。
一点だけ注意点があって、mysql というパッケージ名は MySQL-server-community で Provides されているので、MySQL サーバが入ってしまうということです。もし、あるパッケージに mysql というパッケージの依存関係があると MySQL-server-community パッケージがインストールされてしまうので注意しましょう。
まとめると、ダミーパッケージは必要なく、MySQL の公式パッケージだけで、次のコマンドで MySQL の最新バージョンを手軽に使うことができます。
$ sudo yum install mysql-client mysql-shared mysql-server
上のコマンドで MySQL をインストールする場合、MySQL の公式 RPM の方がバージョンが新しいので必ず MySQL 5.1.44 がインストールされるはずです。
ですが、正しくバージョンを指定して、MySQL のバージョンをインストールした場合は、次のようにします。
$ sudo yum install mysql-client-5.1.44 mysql-shared-5.1.44 mysql-server-5.1.44
ただし、RPM に登録されるパッケージ名は、MySQL-*** となるので注意しましょう。mysql* という小文字のパッケージでは登録されていないので気をつけてください。
また、mysql の設定ファイル(/etc/my.cnf と /etc/mysqlmanager.passwd)は、インストールされていないので自分で設置しましょう。
デフォルトの /etc/my.cnf は、このあたりの情報をもとにして設定を追加するといいと思います。
ちなみに MySQL の公式 RPM は、cobbler でローカルの yum リポジトリにミラーしていますが、こんな感じで設定してあります。
$ sudo cobbler repo report –name=mysql-MySQL-5.1
repo: mysql-MySQL-5.1
arch: x86_64
breed: rsync
comment:
created: Tue Feb 9 22:34:22 2010
createrepo_flags: -c cache -d
environment: {}
keep updated: True
mirror: rsync://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/
mirror locally: True
modified : Tue Feb 9 22:34:22 2010
owners: ['admin']
priority: 99
rpm list:
yum options: {}
こうしておけば、MySQL 5.1 系の最新バージョンがでたとき、cobbler reposync すればすぐに最新版の RPM をローカルの yum リポジトリにミラーできるので、とても便利です。
さて、これで MySQL をメジャーアップグレードする準備が整いました。
Tags: mysql rpm