MySQL InnoDB Pluginの簡単なビルド手順

これまで数回に渡ってInnoDB Pluginのエントリを書いてきたので、InnoDB Pluginを試してみたくなったという方がいるかもしれませんね。そこで本日はそのような方がいることを期待して、InnoDB Pluginを組み込んだMySQLの簡単なビルド手順をご紹介します。本手順には以下のような特長があります。

  • MySQLの長いconfigureオプションを覚えなくてよい。というかMySQLが何なのか知らなくてもできるレベル
  • RPMができるのでインストール/アンインストールが簡単。試してみて飽きたらアンインストール可能
  • 今後バージョンが上がってもおそらく手順は変わらない
  • コピペでおk

対象OSはRed Hat Enterprise Linux 5とCentOS 5です。

一般ユーザでrpmbuidコマンドが使えるようにする(初回のみ)

$ cd
$ echo "%_topdir $HOME/rpmbuild" > .rpmmacros
$ mkdir rpmbuild
$ cd rpmbuild
$ mkdir BUILD RPMS SOURCES SPECS SRPMS

一般ユーザでrpmbuildコマンドが使えるように、設定ファイルと作業用ディレクトリを作成します。なぜ一般ユーザでビルドするのかというと、MySQLにはrootでビルドするとmake testに全部失敗するというちょっとした罠があるためです。

MySQL Community ServerのSource RPMInnoDB Pluginのソースをダウンロードする

$ cd
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-community-5.1.36-0.rhel5.src.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/
$ wget http://www.innodb.com/download/innodb_plugin/innodb_plugin-1.0.3.tar.gz

Source RPMをインストールする

$ cd
$ rpm -ivh MySQL-community-5.1.36-0.rhel5.src.rpm

ソースを展開する

$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --define 'community 1' mysql-5.1.36.rhel5.spec

ちなみに--define 'enterprise_commercial_advanced 1'とすると、商用版と同じものが作れます。豆知識。

InnoDBのソースをInnoDB Pluginのものに差し替える

$ cd ~/rpmbuild/BUILD/mysql-5.1.36/storage
$ rm -rf innobase
$ tar xvzf ~/innodb_plugin-1.0.3.tar.gz
$ mv innodb_plugin-1.0.3 innobase

ソースをアーカイブする

$ cd ~/rpmbuild/BUILD
$ tar cvzf ../SOURCES/mysql-5.1.36.tar.gz mysql-5.1.36

BUILDディレクトリ以下を変更しただけでは次回のrpmbuildコマンドで再び上書きされてしまうため、元のアーカイブを更新しておきます。

SPECファイルを編集する

$ cd ~/rpmbuild/SPECS
$ vi mysql-5.1.36.rhel5.spec
%if %{community}
%define server_suffix  -community-plugin
%define package_suffix -community-plugin

ビルドしてできたRPMがオリジナルのものと区別できるように、server_suffixとpackage_suffixを変更しておきます。

ビルドする

$ cd ~/rpmbuild/SPECS
$ export MYSQL_RPMBUILD_TEST=no
$ rpmbuild -bb --define 'community 1' mysql-5.1.36.rhel5.spec

ここでMYSQL_RPMBUILD_TESTにnoを設定しておくと、make testをスキップすることができます。MySQLのmake testは数時間かかるため、どうしても待てない場合はこの環境変数を設定してください。

完成!

$ cd ~/rpmbuild/RPMS/i386
$ ls
MySQL-client-community-plugin-5.1.36-0.rhel5.i386.rpm
MySQL-community-plugin-debuginfo-5.1.36-0.rhel5.i386.rpm
MySQL-devel-community-plugin-5.1.36-0.rhel5.i386.rpm
MySQL-embedded-community-plugin-5.1.36-0.rhel5.i386.rpm
MySQL-server-community-plugin-5.1.36-0.rhel5.i386.rpm
MySQL-shared-community-plugin-5.1.36-0.rhel5.i386.rpm
MySQL-test-community-plugin-5.1.36-0.rhel5.i386.rpm

ね、簡単でしょう?
ビルドできたら、以下に示すようなInnoDB Pluginの新機能をぜひ試してみてください。