APIを試してみるMySQLのレプリケーションは素晴らしい仕組みなのですが、ちょっと凝ったことをしようとするには機能が限られています。MySQLの更新を他のデータストアにマイグレーションしたいような時は、Triggerを使って超頑張るのはイマイチで、バイナリログを使ったレプリケーションの仕組みをそのまま拡張してマイグレーションするようなワーカーを書きたくなるものです。APIというものがあります。開発途上ではありますが、期待の持てるAPIです。Presentation.pdf試しにどんなもんなのか使ってみました。thoughts準備CentOS5系の64bitで試した手順です。ビルドに必要なパッケージを入れたいのですが、CentOSのyumレポジトリだと足りないのでepelとatrpmasというレポジトリを追加します。ATrpmsbaseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stableenabled=0gpgcheck=1gpgkey=http://atrpms.net/RPM-GPG-KEY.atrpmsどちらもenabled=0にしてるので明示的にenabledしないとyumコマンドが検索しないようにしてます。あとはyum実行するだけ。bzrはソースのチェックアウト用、cmakeはビルドツール、boostはCentOSの1.33だとバージョンが古いのでatrpmsのものを利用。epelにboost141ってのがあるのでそれでもいけるのかも(未確認)。boost*ちなみに、atrpmsのboost-develとCentOS-Baseのboost-develはファイル被ってるみたいで、atrpmsの64bitのが入った後にCentOS-Baseの32bitのが入るとビルドできなくなる。キモイだけなので32bitは入れないのが吉。僕が試した環境は最初から入ってなかった。ビルド&インストール簡単。installこれで/usr/local/includeにいくつかのヘッダファイルと、/usr/local/libにライブラリがインストールされます。exampleビルドソースの中にexampleがあるのでそれを試してみます。makeこれでbasic-[12]を実行したいところなんですが、僕の環境だと実はライブラリのサーチパスに/usr/local/libが入ってなかった。いう場合は、サーチパスに足すか実行時に指定してあげる。exampleでは実際に試してみましょう。おもしろいのはbasic-2でmasterにつないで見るのだと思います。自分はとりあえずMySQL::Sandboxで実験。privilegesおおおおお!!!!普通にbinlogが読み込まれてQueryが表示されました。イベントループに入っていて、新しいbinlogを待ち構えています。別クライアントから更新文を発行してみます。commit;すると、先程のbasic-2の方にDDLが流れてくるのが見えると思います。トランザクションは当然commitして初めて流れてきます(basic-2がCOMMITはprintしてくれてないっぽい)。("bbbb")まとめというわけで、単にexampleを動かしてみただけですが、かなり夢が広がりますね。APIの各種LLへのバインディングが欲しいところです。追加しないとうごきませんでした(ubuntu)。