Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome or Safari browser. Firefox 10 (to be released soon) will also handle it.

Better Groonga Replication

Yappo

MySQL Casual #6

今日の概要

僕が MySQL に頼らずに Groonga で replication 構成を作った理由と実装を紹介します

10年くらい前の昔話

ガラゲー用の検索サイトやってて Senna + MySQL 頑張ってた

大昔は Senna を使っていた

Senna + MySQL を使うにはコツがあった

安定運用方法

昔話

あんまり今は役にたたない話ここまで

ここ数年以内の話

とある事で全文検索が必要な感じになった。(この会場で言う事じゃないけど)JVM で動いている物を安心して使う気にならないので消去法で Groonga を使おうと思った(一応同僚も使ってたし)

< MySQL のストレージエンジンで使ってよ(超要約)

< Groonga は信用しようって気にはなれるけど with MySQL は信用無理!(過去の経験的に)(超要約)

< じゃぁ困らない感じにしといてよ(超要約)

って事で Groonga 単体でサービスを作る事にした

Groong + MySQL の利点

Groong + MySQL の欠点

Groonga 単独の欠点

無ければ作ったら良いよ

という事で、複数の Groonga Server に更新クエリを投げる為の Groonga Proxy Server を作りました。

概念的には pgpool のレプリケーション機能っぽい感じで application は Groonga Proxy Server に対して更新クエリを投げると backend のリアルな Groonga Server にクエリを中継してくれる君だった。

だがしかし!障害のノードの対処やスケールアウト戦略どうするの!!??!

クエリを proxy してるだけだから、実際に運用する事が不可能ってのが作ってみて学びありました。

< どうしようooえもん〜

< ちょっとまって

< わっふるわっふる

< binlog みたいな仕組みにしたらどう?

< !!!!1

という事で良い感じの replication の仕組みができました

特徴

システム概略

概要図

簡単なサーバ増設フロー

各ノードが処理した binlog の場所を個別で覚えているので、同期とかを気にせず増設していけて便利

FAQ

Q. なぜ Droonga を使わなかったの?


A. なんか、、、すごく、、、おっきかったです。。。

まとめ

以上です

Use a spacebar or arrow keys to navigate