初めて MySQL 5.1 をビルドしてみた。

 バージョン5.1は今までビルドしたことなかったのですが、初めてやってみました。マニュアルに書かれているとおり、configure して make して make install して、その後こまごま設定するだけ。

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.25-rc.tar.gz/from/http://mirror.mysql-partners-jp.biz/

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make

shell>#make install
shell>#cp support-files/my-medium.cnf /etc/my.cnf
shell>#cd /usr/local/mysql
shell>#bin/mysql_install_db --user=mysql
shell>#chown -R root .
shell>#chown -R mysql var
shell>#chgrp -R mysql .

cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld


 あとは /etc/my.cnf でキャラクターセットとかの設定をごにょごにょ書いたくらい。utf8 を uft8 って間違ってタイプしていて、でも気づかなくて少し悩みましたけど。 似てますよね utf8 と uft8 。。。
 あと、mysqld 起動時に

Warning: World-writable config file '/etc/my.cnf' is ignored

なんてのが出てたので、よくわかんないけど 666 だったモードを chmod 664 にしました。644でもいいかな、、、っていうかそもそも root の持ち物になってるから mysql さんのにしたほうがきっといいんだろうな。。。


で、、、ここで大ポカに気づいたところです。

mysql> SHOW PLUGINS;

                                                                                                                      • +
Name Status Type Library License
                                                                                                                      • +
binlog ACTIVE STORAGE ENGINE NULL GPL
CSV ACTIVE STORAGE ENGINE NULL GPL
MEMORY ACTIVE STORAGE ENGINE NULL GPL
MyISAM ACTIVE STORAGE ENGINE NULL GPL
MRG_MYISAM ACTIVE STORAGE ENGINE NULL GPL
                                                                                                                      • +

5 rows in set (0.00 sec)

 あはは。 InnoDB がない(^^;)。

InnoDBだけをコンパイルしてプラグインさせる方法と
mirさんがやっているみたいにとりあえず名前をかえただけのストレージエンジンをコンパイルしてプラグインさせてみたい


ってのを直近の目標にしています。現在 InnoDBだけをコンパイルさせる方法を熱烈検索中^^


追記:(17:35)
 他のエンジンたちは、コンパイルはされて、/usr/local/mysql/lib/mysql/plugin/ の下に *.so ファイルがいっぱいできていました。


以下のコマンドで blackhole, example, archive のエンジンが利用可能になりました^^

mysql> INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
mysql> INSTALL PLUGIN example SONAME 'ha_example.so';
mysql> INSTALL PLUGIN archive SONAME 'ha_archive.so';

mysql> SHOW PLUGINS;

                                                                                                                                      • +
Name Status Type Library License
                                                                                                                                      • +
binlog ACTIVE STORAGE ENGINE NULL GPL
CSV ACTIVE STORAGE ENGINE NULL GPL
MEMORY ACTIVE STORAGE ENGINE NULL GPL
MyISAM ACTIVE STORAGE ENGINE NULL GPL
MRG_MYISAM ACTIVE STORAGE ENGINE NULL GPL
BLACKHOLE ACTIVE STORAGE ENGINE ha_blackhole.so GPL
EXAMPLE ACTIVE STORAGE ENGINE ha_example.so GPL
ARCHIVE ACTIVE STORAGE ENGINE ha_archive.so GPL
                                                                                                                                      • +

8 rows in set (0.00 sec)

 CSV, MEMORY, MyISAMらのエンジンは Library が NULL になっているってことはこいつらは実はプラグインしていない!?  ということできっと InnoDB を使えるようにするためには再 Configure が必要になるのでしょう。 こんどやろ(^^;



 federatedはなぜか動かず。キーワードはたぶん「dynstr_append_mem」。現時点であまり調べる気もせず(笑)。

mysql> INSTALL PLUGIN federated SONAME 'ha_federated.so';
ERROR 1126 (HY000): Can't open shared library '/usr/local/mysql/lib/mysql/plugin/ha_federated.so' (errno: 22 undefined symbol: dynstr_append_mem)


追追記(7/9 13:30):
こんな configure オプションでやりなおしました(別のマシンですが)*1

./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--enable-thread-safe-client \
--enable-local-infile \
--enable-assembler \
--with-fast-mutexes \
--with-readline \
--with-big-tables \
--with-innodb \
--with-archive-storage-engine \
--with-blackhole-storage-engine \
--with-csv-storage-engine \
--with-example-storage-engine \
--with-federated-storage-engine \
--with-extra-charsets=complex

*1:yum install make gcc-c++ しました。入っていなかったみたい