Fluentdベースのミドルウェア"Yamabiko"でMySQLのテーブルをElasticsearchへレプリケートする話 #fluentdcasual
Upcoming SlideShare
Loading in...5
×
 

Fluentdベースのミドルウェア"Yamabiko"でMySQLのテーブルをElasticsearchへレプリケートする話 #fluentdcasual

on

  • 3,933 views

Fluentd Casual Talks #3にて発表した資料の増補版です。

Fluentd Casual Talks #3にて発表した資料の増補版です。

Statistics

Views

Total Views
3,933
Views on SlideShare
2,946
Embed Views
987

Actions

Likes
11
Downloads
8
Comments
0

7 Embeds 987

http://dev.classmethod.jp 572
http://blog.livedoor.jp 356
https://twitter.com 44
http://confluence.nubee.com 5
http://www.feedspot.com 5
http://rss.ameba.jp 4
http://webcache.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Fluentdベースのミドルウェア"Yamabiko"でMySQLのテーブルをElasticsearchへレプリケートする話 #fluentdcasual Fluentdベースのミドルウェア"Yamabiko"でMySQLのテーブルをElasticsearchへレプリケートする話 #fluentdcasual Presentation Transcript

  • 13th Dec, 2013 Fluentd as a Middleware Engine MySQLのテーブルをElasticsearchへレプリケートする話 Kentaro Yoshida at Fluentd Casual Talks #3 page 1
  • MySQLのテーブルを Elasticsearchにレプリケート…? page 2
  • それをFluentdで!? page 3
  • はい、作ってみました。 その名は Yamabiko です。 page 4
  • 1. Yamabikoとは 本日の流れ 2. 自己紹介 3. 活用方法 4. まとめ page 5
  • 1. Yamabikoとは page 6
  • Yamabikoとは https://github.com/y-ken/yamabiko page 7
  • Yamabikoのコアプラグイン https://github.com/y-ken/fluent-plugin-mysql-replicator page 8
  • Yamabikoの機能概要 Fluentd (td-agent) をコアエンジンに利用 出力のバッファリングやリトライ機構などを任せられる Fluentd + fluent-plugin-mysql-replicatorをデーモン化したもの MySQLから、透過的にElasticsearchへレコードの同期を行う AWS RDS・MariaDB・PerconaServer等の互換DBにも対応 任意のSQL文の結果の差分から、insert/update/deleteイベントを検知 SELECT * FROM search_test WHERE DATE_ADD(updated_at, INTERVAL 5 MINUTE) > NOW(); といったクエリで差分同期も可能 page 9
  • Elasticsearchとは Luceneベースの検索エンジン(SolrもLuceneベース) MySQLが苦手とするファセット検索等も当然対応している 日本語全文検索にも対応(kuromoji) GitHub・stackoverflow・PATH・foursquareなどが採用 マルチテナント・スキーマレス・RestfulAPIがアツい 複数ノードを利用した高速な分散検索も可能 RPMコマンドで簡単にインストール可能 page 10
  • Yamabikoの挙動 mysql> create database myweb; mysql> create table search_test ( id int auto_increment, text text, PRIMARY KEY (id) ); page 11
  • Yamabikoの挙動 # query insert into search_test(text) values('aaa'); # notify event to fluentd # format: replicator.${db}.${table}.${event}.${pk} tag: replicator.myweb.search_test.insert.id record: {"id":"1","text":"aaa"} page 12
  • Yamabikoの挙動 # query update search_test set text='bbb' where text = 'aaa'; # notify event to fluentd tag: replicator.myweb.search_test.update.id record: {"id":"1","text":"bbb"} page 13
  • Yamabikoの挙動 # query delete from search_test where text='bbb'; # notify event to fluentd tag: replicator.myweb.search_test.delete.id record: {"id":"1"} page 14
  • 2. 自己紹介 page 15
  • 自己紹介 • よしけんさん • @yoshi_ken • (株)リブセンス • Web系インフラの 研究開発エンジニア • Fluentd歴 好きなプロダクト page 16 2012/4月∼
  • page 17
  • 3. 活用方法 page 18
  • インストール 手元のfluentd環境への導入 $ gem install fluent-plugin-mysql-replicator 既存のFluentdとは独立した Yamabiko としての導入 github.com/y-ken/yamabiko にてRPMパッケージを配布中 詳しい設定方法は README.md にまとめています github.com/y-ken/fluent-plugin-mysql-replicator page 19
  • 設定サンプル <source> type mysql_replicator host localhost username your_mysql_user password your_mysql_password database myweb query SELECT id, text, updated_at from search_test; tag replicator.myweb.search_test.${event}.$ {primary_key} </source> page 20
  • 設定サンプル <source> type mysql_replicator_multi manager_host localhost manager_username your_mysql_user manager_password your_mysql_password manager_database replicator_manager tag replicator.${name}.${event}.${primary_key} </source> page 21
  • 設定サンプル <match replicator.**> type mysql_replicator_elasticsearch host localhost port 9200 flush_interval 5s flush_at_shutdown yes </match> page 22
  • 運用実績 テーブル数 28テーブル 総行数 約800万行 総容量 約4GB page 23 Yamabiko稼働サーバ KVMの仮想マシン CPU 1コア メモリ1GB 取り分は50MB程度
  • 6. まとめ page 24
  • まとめ github.com/y-ken/fluent-plugin-mysql-replicator MySQLのレコードを非同期にElasticsearchに転送するプラグイン。 github.com/y-ken/yamabiko Fluentd+上記プラグインをパッケージ化したミドルウェアであり、 既存のRubyやtd-agentと競合せずに独立して動作する。 想定ユースケース MySQLを利用したまま、Elasticsearchとの並行運用を行う。 例えばAWS RDSと組み合わせると、運用の手間を最小化した 準リアルタイムでレコードが同期される全文検索サーバが手に入る。 page 25
  • Yamabiko [やまびこ] https://github.com/y-ken/yamabiko page 26
  • We’re hiring!
  • お知らせ
  • Thanks! ご清聴ありがとうございました。 page 34