Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記

11,338 views
11,750 views

Published on

MySQL5.0から5.6へ移行するにあたり、全文検索機能をTritonnからmroongaへ乗り換えるというプロジェクトの体験記をお届けします。MySQL Casual Talks Vol.5での発表資料です。

ブログ記事をアップしました。
http://y-ken.hatenablog.com/entry/mysql-casual-talks-vol5-mysql-migration

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,338
On SlideShare
0
From Embeds
0
Number of Embeds
7,878
Actions
Shares
0
Downloads
18
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記

  1. 1. 25th Oct, 2013 Tritonn (MySQL-5.0.87+Senna)からの mroonga (MySQL-5.6) 移行体験記 Kentaro Yoshida in MySQL Casual Talks Vol.5 at Oracle page 1
  2. 2. そう、前回の発表では... page 2
  3. 3. http://www.slideshare.net/y-ken/my-sql-56innodb-fts page 3
  4. 4. page 4
  5. 5. page 5
  6. 6. page 6
  7. 7. あれから半年... page 7
  8. 8. お待たせしました! page 8
  9. 9. 25th Oct, 2013 Tritonn (MySQL-5.0.87+Senna)からの mroonga (MySQL-5.6) 移行体験記 Kentaro Yoshida in MySQL Casual Talks Vol.5 at Oracle page 9
  10. 10. 1. はじめに 2. 自己紹介 本日の流れ 3. 移行する3つの理由 4. MySQL5.6の魅力とは 5. 移行計画 6. ハプニング 7. プラクティス 8. まとめ page 10
  11. 11. 1. はじめに page 11
  12. 12. gihyo.jp へ寄稿しました page 12
  13. 13. お待たせしました! http://gihyo.jp/dev/clip/01/groonga page 13
  14. 14. page 14
  15. 15. 執筆したタイトル 第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 15
  16. 16. この連載の裏話をお届けします page 16
  17. 17. 2. 自己紹介 page 17
  18. 18. 自己紹介 • よしけんさん • (株)リブセンス • Web系インフラの 研究開発エンジニア • MySQL歴 好きなプロダクト page 18 約10年
  19. 19. 3. 移行する3つの理由 page 19
  20. 20. 移行する3つの理由 今時MySQL 5.0を使っているなんて・・・ 世のトレンドから遅れている感が否めなかった CPUスケーラビリティの高いInnoDBを使いたい MySQL 5.5∼5.6で導入されたモダンな機能を使いたい page 20
  21. 21. 4. MySQL 5.6の魅力とは page 21
  22. 22. MySQL 5.6の魅力とは memcached API バッファプールの暖機運転 Semi-Synchronous Replication クラッシュセーフなスレーブ より強化されたInnoDB Partitioning ALTER TABLEの高速化 などなど page 22 http://www.slideshare.net/nippondanji/mysql-56dbtechshowcase2012
  23. 23. 5. 移行計画 page 23
  24. 24. 移行計画 スケジュール プラン立案 事前調査 2013年3月 page 24 検証 2013年4∼5月 2013年6月 移行 安定稼働 2013年7∼8月
  25. 25. 移行計画 規模 対象サイト数 約20サイト 対象データ容量 トータル約300GB page 25
  26. 26. 移行計画 構成 ハードウェア 旧構成 NEC Express5800/iR120a-1E (4C/L5520) 新構成 NEC Express5800/R120d-1M (6C/E5-2630L) x 70台 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 26
  27. 27. 移行計画 構成変更プラン http://gihyo.jp/dev/clip/01/groonga/0007 page 27
  28. 28. 移行計画 構成変更プラン page 28
  29. 29. 移行計画 構成変更プラン page 29
  30. 30. 移行計画 構成変更プラン page 30
  31. 31. 移行計画 少し大変だったこと トークナイザやノーマライザの組み合わせによる検索ヒット数の違い と最適な組み合わせの検討 検索クエリの動作確認のため,アクセスログから抜き出したURL情報 を用いて試験環境で走らせても落ちないことを確認 MySQL 5.6で改善されたオプティマイザにより,逆に遅くなったクエ リの調整 MySQL 5.6でより厳格となったSQLMODEへの追従 page 31
  32. 32. 6. ハプニング page 32
  33. 33. 数字で振り返る移行プロジェクト page 33
  34. 34. 数字で振り返る移行プロジェクト 3ヶ月 検証・移行期間 16件 mroongaの機能改善や不具合改善 273件 mroongaメイン開発者の須藤 (@ktou) さんとのメンション数 2件 想定外のH/Wトラブル page 34
  35. 35. page 35
  36. 36. 須藤さんを始めとする  クリアーコードの皆様、 ありがとうございます。 page 36
  37. 37. 想定外のH/Wトラブル page 37
  38. 38. 想定外のH/Wトラブル つまるところ、サーバ故障です 時期は慣らし運転・稼働テストも完了し、本番切替の1週間前 対象機は、レプリケーションマスタのDBサーバ 死活監視の設定をそろそろ入れようと思っていた頃 page 38
  39. 39. 想定外のH/Wトラブル 朝オフィスへ出社すると運用担当の同僚から声が掛かる。 サーバが突然落ちて、IPMI経由での再起動すら出来ないです。 ほう、それではDCのスタッフにリセットボタンの依頼ですかね。 page 39
  40. 40. 想定外のH/Wトラブル 現地のDCスタッフより入電。 ラック前に着きました。 リセットボタン、効きません。 そしてなんだか、焦げ臭いです。 社内スタッフ:「え・・!?」 page 40
  41. 41. 何か焦げてる page 41
  42. 42. 想定外のH/Wトラブル page 42
  43. 43. 想定外のH/Wトラブル page 43
  44. 44. 悪いことは続くもので、別機体で CPUの異常クロックダウンが発生 page 44
  45. 45. 7. プラクティス page 45
  46. 46. 移行後のパフォーマンス サービス毎に特性が違いすぎたため、詳細データは取っていません 早くなった/変わらない/遅くなったサービス、それぞれあります オプティマイザの仕組みが変わった影響だと思います page 46
  47. 47. GTID あっ・・(察し 現実的に Semi-Synchronous Replication + MHA が個人的にオススメ 未来は明るい・・と思います 参考記事 http://y-ken.hatenablog.com/entry/mysql-using-gtid-checklist page 47
  48. 48. sql_mode /usr/my.cnf に従来の挙動とは異なるデフォルト設定が入る STRICT_TRANS_TABLES は従来の動きと異なるため削除し、 /usr/my.cnf は自動構築時に次の内容で上書きするようにしました。 sql_mode=NO_ENGINE_SUBSTITUTION 参考ページ http://d.hatena.ne.jp/oranie/20130402/1364906656 page 48
  49. 49. mysql_upgradeコマンド mysql_upgradeは使わずに、mysqldumpコマンドを使いました MySQL 5.0 → 5.1 → 5.5 → 5.6 というアップグレードであるため、 1つずつバージョンアップするのは手間が掛かる ibdata1が”超”肥大化している事で作り直しが必要であったため innodb_file_per_table化を実現したかった page 49
  50. 50. mysqldumpコマンド その1 MySQL 5.6環境からmysqldumpコマンドでMySQL5.0に繋がらない mysqldump: Couldn’t execute ‘SELECT @@GTID_MODE’: Unknown system variable ‘GTID_MODE’ (1193) 対処法としては、 --set-gtid-purged=OFF を付ける page 50
  51. 51. mysqldumpコマンド その2 MySQL 5.0環境からmysqldumpコマンドでMySQL5.6に繋がらない 対処法としては、MySQL 5.6で実行する 参考ページ http://www.mk-mode.com/octopress/2013/06/02/mysql-5-6mysqldump-set-option-error/ page 51
  52. 52. MySQLユーザ認証 MySQL 4.x時代からユーザ情報を引き継いでいるシステムもあり、 クライアントライブラリもMySQL5.6に更新した都合上、 繋がらないMySQLサーバがあった mysql.user.password が16バイトならば該当します php-mysqlnd を使う場合には特に注意しましょう 参考ページ http://www.softel.co.jp/blogs/tech/archives/2225 page 52
  53. 53. 全文検索機能の選定 Solr アプリの改修工数的に今回は採用を見送り InnoDB FullText Search 人柱すぎる&当時はメモリリーク不具合があるため採用を見送り ftppc (full text parser plugin collection) MyISAM依存・速度面・Wプラグマ非対応な点から採用を見送り mroonga 根気と突破力で潰した不具合ラッシュも落ち着いたので、採用決定 注) 2013年秋現在は不都合無く安定稼働中 page 53
  54. 54. Tritonnからmroongaへの移行Tips その他の詳細な移行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 54
  55. 55. 8. まとめ page 55
  56. 56. まとめ MySQL 5.0 サーバが無くなった MySQL 5.6 + mroonga 環境に移行することが出来た mroongaは4∼5月の不具合修正ラッシュ以降はかなり安定した memcached APIは メモリリーク Bug #68530 のため結局使えず page 56
  57. 57. まとめ Now, mroonga is ready for production! page 57
  58. 58. お知らせ
  59. 59. お知らせ
  60. 60. Thanks! ご清聴ありがとうございました。 page 65

×