読者です 読者をやめる 読者になる 読者になる

Drizzle事始

Drizzle

bazaarをインストール

コードの管理にはbazaarを使っているとのことなので、bzrをインストールするところから始める。僕の環境がCentOSなので、ここに書いてあるインストラクションに従って、epelレポジトリを使ってbzrをインストールした。

$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
$ sudo yum install bzr
$ bzr version
Bazaar (bzr) 1.3.1

epelのbazaarのバージョンが1.3.1。bazaarの最新版は1.9のようだけれども、Drizzleのコードのチェックアウトには問題がなかったので、気にしないことにする。

Protocol Bufferをインストール

Protocol BufferをインストールしておかないとDrizzleのconfigureが通らないので、インストールしておく。

$ wget http://protobuf.googlecode.com/files/protobuf-2.0.2.tar.bz2
$ bzip2 -dc protobuf-2.0.2.tar.bz2 | tar xf -
$ cd protobuf-2.0.2
$ ./configure
$ make
$ sudo make install

その他のモジュール

そのほか必要なモジュールは[:title=ここ]にまとまっているので、yumでサクっとインストールしておく。

Drizzleコードのチェックアウト&ビルド

普通にやるならば、

$ bzr branch lp:drizzle
$ cd drizzle
$ ./config/autorun.sh
$ ./configure
$ make
$ sudo make install

僕は、/opt/drizzle以下にソースからビルドしたものを全て置きたいと思い、Protocol BufferもDrizzleもprefix=/opt/drizzleに指定してビルド、インストールした。

$ bzr branch lp:drizzle
$ cd drizzle
$ export PATH=/opt/drizzle/bin:$PATH
$ ./config/autorun.sh
$ ./configure --prefix=/opt/drizzle --with-protobuf=/opt/drizzle
$ make
$ sudo make install

起動

ここに書いてある通りdrizzled_safeは今でも動かないのだろうか?と思いつつも、とりあえずは試しにフォアグランドで動かしてみる。

あらかじめdrizzleユーザを作成。

$ sudo /usr/sbin/useradd -s /sbin/nologin -d /opt/drizzle -c "Drizzle Server" drizzle

drizzledを起動。--userオプションをつけないとエラーログに何も残らず起動に失敗するようなので、そこに少しハマッた。

$ cd /opt/drizzle
$ sudo ./sbin/drizzled --no-defaults --port=4427 --basedir=/opt/drizzle --datadir=/opt/drizzle/var --user=drizzle
Password:
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
....省略

普通のmysqlクライアントでは接続できないので、drizzleクライアントを使って接続

$ mysql --host=127.0.0.1 --port=4427
ERROR 1043 (00000): #08S01Bad handshake
$ drizzle --host=127.0.0.1 --port=4427
Welcome to the Drizzle client..  Commands end with ; or \g.
Your Drizzle connection id is 2
Server version: 7.0.0 Source distribution

必要であれば自分でDrizzle用python DB-APIライブラリを書いて、SQLAlchemyを使って遊んでみたいが、今日はここまで。