KyotoTycoonの更新ログをmemcachedにレプリケーションする ktlog2memcached を書いた

とある移行案件で必要になったのでえいやと書いた。

github.com/fujiwara/ktlog2memcached

以下の記事にあるように、KyotoTycoonは更新ログを外部から取得することができるので、これを用いてKTへの書き込み内容を別のストレージに反映するようなことができます。

http://fallabs.com/blog-ja/promenade.cgi?id=115

使い方

$ ktremotemgr slave -ts `date +%s000000000` -uw | ktlog2memcached --host 127.0.0.1 --port 11211 [--use-flag]

ktremotemgr slave で出力される更新ログを標準入力から流してやると、それをparseして引数で指定された memcached に set, delete, flush_all を発行します。

--use-flag オプションは、KT を memcached plugin を使用して起動し、memcached client からアクセスしていた場合には flag (memcached protocolの) がデータ末尾に記録されているので、それを Perl の Cache::Memcached と同様に認識し、圧縮の展開とシリアライズされた構造化データのデシリアライズを行うオプションです。