mysql 5.6への完全移行を実現したtritonnからmroongaへの移行体験記
DESCRIPTION
2013年11月29日に開催された「全文検索エンジンGroongaを囲む夕べ 4」での発表資料です。 イベントページ http://atnd.org/events/43461 Ustream動画 http://www.ustream.tv/recorded/41205740TRANSCRIPT
![Page 1: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/1.jpg)
page
Nov, 201329th
MySQL 5.6への完全移行を実現!TritonnからMroongaへの移行体験記Kentaro Yoshida at Groonga Night #4
1
![Page 2: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/2.jpg)
page
1. はじめに
2
![Page 3: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/3.jpg)
page
gihyo.jp へ寄稿しました
3
![Page 4: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/4.jpg)
page 4
http://gihyo.jp/dev/clip/01/groonga
![Page 5: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/5.jpg)
page
執筆タイトル
5
第6回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1)
第7回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(2)
第8回 CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP 5.4 環境の作り方
第10回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(3)
![Page 6: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/6.jpg)
page
2. 自己紹介
6
![Page 7: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/7.jpg)
page
自己紹介
7
•よしけんさん
•@yoshi_ken
• (株)リブセンス
• Web系インフラの研究開発エンジニア
好きなプロダクト
![Page 8: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/8.jpg)
お知らせ
![Page 9: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/9.jpg)
page
1. はじめに2. 自己紹介3. 移行するメリット4. 移行計画5. プラクティス6. まとめ
本日の流れ
9
![Page 10: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/10.jpg)
page
3. 移行するメリット
10
![Page 11: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/11.jpg)
page
Tritonnの限界
11
MySQLが持つ1テーブル1インデックスという制約を受け、全文検索以外の条件を加えて絞り込むと遅くなる問題
MyISAMを利用しているため,更新中はテーブルロックとなり参照クエリを発行できない問題
MyISAMを使うため、トランザクション非対応である問題
LIMIT句, COUNT(*), OR条件追加時の検索が遅い問題
![Page 12: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/12.jpg)
page
Mroongaの魅力
12
参照ロックフリー
ストレージエンジンにInnoDBを利用できる
プラガブルストレージエンジンである
bigram以外の豊富なN-gramトークナイザが利用可能
より強化された文字列正規化機能が利用可能
位置情報検索に対応
などなど
![Page 13: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/13.jpg)
page
MySQL 5.6の魅力
13
memcached API
バッファプールの暖機運転
Semi-Synchronous Replication
クラッシュセーフなスレーブ
より強化されたInnoDB Partitioning
ALTER TABLEの高速化
などなど http://www.slideshare.net/nippondanji/mysql-56dbtechshowcase2012
![Page 14: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/14.jpg)
page
4. 移行計画
14
![Page 15: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/15.jpg)
page
2013年7~8月2013年6月2013年4~5月2013年3月
安定稼働移行検証事前調査プラン立案
移行計画 スケジュール
15
![Page 16: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/16.jpg)
page
移行計画 規模
16
対象サイト・データベース数
合計 約20
対象データ容量
合計 約300GB
全文検索テーブルの最大行数
約500万行
MySQL構成
マスタ・スレーブ構成
サイト毎にスレーブ数は異なる
対象DBサーバ
移行前:約20台
移行後:約40台
![Page 17: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/17.jpg)
page
移行計画 構成
17
ハードウェア
旧構成 NEC Express5800/iR120a-1E (4Core/Xeon L5520 2.26GHz)Memory: 16GB, HDD: RAID-1 300GB*2 w/ BBU
新構成 NEC Express5800/R120d-1M (6Core/Xeon E5-2630L 2.0GHz)Memory: 64GB, HDD: RAID-10 300GB*4 w/ BBU
MySQL, OS
旧構成 MySQL 5.0.87 (Tritonn 1.0.12a) on CentOS 5.6
新構成 MySQL 5.6.12-2 (Mroonga 3.05) on CentOS 6.4
![Page 18: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/18.jpg)
page
移行計画 構成変更プラン
18
http://gihyo.jp/dev/clip/01/groonga/0007
![Page 19: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/19.jpg)
page
移行計画 構成変更プラン
19
![Page 20: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/20.jpg)
page
移行計画 構成変更プラン
20
![Page 21: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/21.jpg)
page
移行計画 構成変更プラン
21
![Page 22: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/22.jpg)
page
数字で振り返る移行プロジェクト
22
![Page 23: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/23.jpg)
page
数字で振り返る移行プロジェクト
23
3ヶ月
検証・移行期間
16件
Mroongaの機能改善や不具合改善
273件
Mroongaメイン開発者の須藤 (@ktou) さんとのメンション数
2件
想定外のH/Wトラブル
![Page 24: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/24.jpg)
page 24
![Page 25: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/25.jpg)
page
須藤さんを始めとする クリアーコードの皆様、ありがとうございます!
25
![Page 26: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/26.jpg)
page
5. プラクティス
26
![Page 27: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/27.jpg)
page
全文検索機能の選定
27
Solr・ElasticSearchアプリの改修工数的に今回は採用を見送りInnoDB FullText Search人柱すぎる&当時はメモリリーク不具合があるため採用を見送りftppc (full text parser plugin collection)MyISAM依存・速度面・Wプラグマ非対応な点から採用を見送り
Mroonga
根気と突破力で潰した不具合ラッシュも落ち着いたので、採用決定注) 2013年秋現在は不都合無く安定稼働中
![Page 28: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/28.jpg)
page
移行後のパフォーマンス
28
サービス毎に特性が違いすぎたため、詳細データは取っていません
早くなった/変わらない/遅くなったサービス、それぞれあります
オプティマイザの仕組みが変わった影響のようです
MySQL 5.1よりスロークエリの秒数をオンラインで変更できるため、是非活用してボトルネック箇所をつぶしましょう。実行時間0.5秒以上のスロークエリを記録するなら次のクエリです。SET GLOBAL long_query_time = 0.5;
![Page 29: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/29.jpg)
page
mysql_upgradeコマンド
29
mysql_upgradeは使わずに、mysqldumpコマンドを使いました
MySQL 5.0 → 5.1 → 5.5 → 5.6 というアップグレードであるため、1つずつバージョンアップするのは手間が掛かる
ibdata1が”超”肥大化している事で作り直しが必要であったため
innodb_file_per_table化を実現したかった
![Page 30: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/30.jpg)
page
mysqldumpコマンド その1
30
MySQL 5.6環境からmysqldumpコマンドでMySQL5.0に繋がらない
mysqldump: Couldn’t execute ‘SELECT @@GTID_MODE’: Unknown system variable ‘GTID_MODE’ (1193)
対処法としては、 --set-gtid-purged=OFF を付ける
![Page 31: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/31.jpg)
page
mysqldumpコマンド その2
31
MySQL 5.0環境からmysqldumpコマンドでMySQL5.6に繋がらない
対処法としては、MySQL 5.6で実行する
参考ページhttp://www.mk-mode.com/octopress/2013/06/02/mysql-5-6-mysqldump-set-option-error/
![Page 32: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/32.jpg)
page
TritonnとMroongaのスキーマ
32
-- Tritonnでの定義
CREATE TABLE test ( id INTEGER AUTO_INCREMENT, PRIMARY KEY (id), text TEXT NOT NULL, FULLTEXT INDEX USING MECAB (text)) ENGINE = MyISAM DEFAULT CHARSET utf8;
![Page 33: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/33.jpg)
page
TritonnとMroongaのスキーマ
33
-- mroongaストレージモードでの定義
CREATE TABLE test ( id INTEGER AUTO_INCREMENT, PRIMARY KEY (id), text TEXT NOT NULL, FULLTEXT INDEX `fulltext` (text) COMMENT 'parser "TokenMecab"') ENGINE = mroonga DEFAULT CHARSET utf8;
![Page 34: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/34.jpg)
page
TritonnとMroongaのスキーマ
34
-- mroongaラッパーモード(MyISAM)での定義
CREATE TABLE test ( id INTEGER AUTO_INCREMENT, PRIMARY KEY (id), text TEXT NOT NULL, FULLTEXT INDEX `fulltext` (text) COMMENT 'parser "TokenMecab"') ENGINE = mroonga DEFAULT CHARSET=utf8 COMMENT='engine "MyISAM"';
![Page 35: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/35.jpg)
page
移行計画 ハマったこと
35
従来の全文検索クエリでヒットする件数が同程度になるよう、トークナイザやノーマライザの組み合わせの比較検討
MroongaストレージモードとInnoDBのAutoIncrementの挙動が同じであるため、MyISAMのそれとは異なる挙動であったこと
MySQL 5.6で改善されたオプティマイザにより、逆に遅くなったクエリの調整
MySQL 5.6でより厳格となったSQLMODEへの追従
![Page 36: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/36.jpg)
page
Tritonnからmroongaへの移行Tips
36
その他の詳細な移行Tipsに関しては、gihyo.jp連載にまとめていますTritonnからmroongaへのテーブルスキーマ書き換えガイドTritonnからmroongaへの全文検索クエリ書き換えガイドTritonnからmroongaへ移行する際の要注意ポイントRPMパッケージを使ってMySQL 5.6.12,mroonga,PHP 5.4の環境を作る方法などなど、http://gihyo.jp/dev/clip/01/groonga にまとめています。
![Page 37: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/37.jpg)
page
6. まとめ
37
![Page 38: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/38.jpg)
page
まとめ
38
MySQL 5.0 サーバの撤廃を実現した
MySQL 5.6 + Mroonga 環境への移行を実現した
Mroongaは4~5月の不具合修正ラッシュ以降はかなり安定した
memcached APIは メモリリーク Bug #68530 のため結局使えず↑ MySQL 5.6.16で治るそうです!http://bugs.mysql.com/bug.php?id=70757
![Page 39: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/39.jpg)
page
まとめ
39
Now, mroonga is ready for production!
![Page 40: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/40.jpg)
We’re hiring!
![Page 41: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/41.jpg)
お知らせ
![Page 42: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/42.jpg)
![Page 43: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/43.jpg)
![Page 44: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/44.jpg)
![Page 45: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/45.jpg)
![Page 46: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/46.jpg)
![Page 47: MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記](https://reader031.vdocuments.site/reader031/viewer/2022020714/54be75254a79597e7b8b45ec/html5/thumbnails/47.jpg)
page
Thanks!
47
ご清聴ありがとうございました。