僕らのMySQL5.6移行記(仮)

14,427 views

Published on

MySQL Casual Talks#5で発表した資料です

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

No Downloads
Views
Total views
14,427
On SlideShare
0
From Embeds
0
Number of Embeds
8,061
Actions
Shares
0
Downloads
16
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide

僕らのMySQL5.6移行記(仮)

  1. 1. 僕達のMySQL5.6移行記
  2. 2. 星野 豊 (@con_mame) クックパッド株式会社 インフラストラクチャー部 AWS / MySQL / Redshift / DataStore etc... http://d.conma.me/ http://facebook.com/conmame
  3. 3. 5.6
  4. 4. 使ってますか?
  5. 5. 5.6.10 or 5.6.13 or 5.6.14
  6. 6. MySQL on EC2 and RDS
  7. 7. NEW update update NEW
  8. 8. Management tools Development Analysis (exclude secure table / with mysqlaudit)
  9. 9. Move to 5.6 on AWS
  10. 10. 5.6.6∼ (2012/8/7)
  11. 11. cookpad 主要DBを5.6に update Replicationをしつつ本番で 流れるクエリを流す 5.6 新機能のConfiguration を試していく
  12. 12. cookpad 主要DBを5.6に update 意外 と素 Replicationをしつつ本番で 直に 進ん だ!! 流れるクエリを流す ! 5.6 新機能のConfiguration を試していく
  13. 13. cookpad 主要DBを5.6に update 最初と 意外 だけ 素直 Replicationをしつつ本番で に素 意外 進 と ん 直に だ 進ん ! 流れるクエリを流すだ!!! !! 5.6 新機能のConfiguration を試していく
  14. 14. Upgrade
  15. 15. 5.6 DB群を用意してswitch メンテナンスでmysql_upgrade
  16. 16. OLD Master OLD Slave OLD Slave replication replication 5.6 Master 5.6 Slave 5.6 Slave
  17. 17. OLD Master OLD Slave OLD Slave EBS Snapshotを 作成して5.6群を 作成 replication replication 5.6 Master 5.6 Slave 5.6 Slave
  18. 18. OLD Master OLD Slave OLD Slave replication replication 5.6 Master 5.6 Slave 5.6 Slave
  19. 19. 検証
  20. 20. 正常にmysql_upgradeが出来るか 既存スキーマ・クエリでwarningとか出ないか パフォーマンス レプリケーションはうまいこと行くか 新機能・パラメータどうするか アプリケーションサーバなどのライブラリ 運用 BUG
  21. 21. 正常にmysql_upgradeが出来るか 既存スキーマ・クエリでwarningとか出ないか パフォーマンス レプリケーションはうまいこと行くか 新機能・パラメータどうするか アプリケーションサーバなどのライブラリ 運用 BUG
  22. 22. アプリケーションサーバなどのライブラリ・ 動作 libmysql / mysql2 gem / log パフォーマンス slow query / レスポンス速度 / CPU / memory 既存スキーマ・クエリでwarningとか出ないか 新パラメータとかでDEPRECATEDなものがな いか
  23. 23. Kage
  24. 24. https:/ /github.com/cookpad/kage https:/ /rubygems.org/gems/kage
  25. 25. proxy kage app new app OLD DB M 5.6 DB M OLD DB S 5.6 DB S
  26. 26. proxy kage app new app ライブラリ アプリケーションの動作 OLD DB M 5.6 DB M OLD DB S 5.6 DB S
  27. 27. proxy kage app new app 5.6 DB M OLD DB M OLD DB S ライブラリ アプリケーションの動作 warning チューニング・動作 5.6 DB S
  28. 28. 実際のリクエストで発行されるクエリでテストが行える 漏れが少なくread / writeを実際に動作をさせながら 確認出来る DB自体の負荷試験は別途行う テストが行い易くアプリケーション・DB各レイヤーで問 題を見つけやすい・直しながらテスト出来る
  29. 29. 他にも
  30. 30. 開発・検証用のDBとしてバージョン・設定を変えて動作 させる 開発中のクエリは実際に使用される事が予測される 今後のバージョンアップで問題が出ないか確認しやす い バージョンを上げた場合にindexの使われ方が変わるな どを見つけやすい MySQLのパフォーマンス向上により調査クエリが高速化 することも
  31. 31. 用意している環境 超検証用 (5.6.14 / 5.7.x) -> 主にcon_mame用 検証用 (5.6.13) -> 開発用DB / 調査用DB 本番 (5.6.x) -> 本番 / CI 役割 超検証用 -> BUG調査や新機能・チューニング検証用 検証用 -> 本番データをレプリケーションして開発中 や調査用のクエリを受け付けさせて様子を見る。問題 があれば超検証用インスタンスで調査
  32. 32. production Master 5.6 or 5.5 or older... replication 超検証用 検証用 本番 本番サーバのEBSは一定 時間おきにSnapshotが とられている 5.6.10 5.6.11 5.6.12 5.6.13 5.7.x EBS SnapshotとAMIで問題が起こったバー ジョンを直ぐに起動して調査
  33. 33. 正常にmysql_upgradeが出来るか 既存スキーマ・クエリでwarningとか出ないか パフォーマンス レプリケーションはうまいこと行くか 新機能・パラメータどうするか アプリケーションサーバなどのライブラリ 運用 BUG
  34. 34. 5.6
  35. 35. GTID 運用負荷が意外と大きい http://d.conma.me/entry/2013/04/23/203036 デフォルト値の変更や非推薦な物 explicit_defaults_for_timestamp binlog_checksum とかとか http://dev.mysql.com/doc/refman/5.6/en/upgradingfrom-previous-series.html Performance Schemeメモリ食いまくり
  36. 36. 5.5 5.6 ピークタイムでレプリケーションエラー起こったら この手順は…
  37. 37. BUG (体験済の一部orz) mysql.slave_master_info is not updated http:// bugs.mysql.com/bug.php?id=69135 A regression in 5.6 crash recovery atomicity http://bugs.mysql.com/bug.php?id=68932 memory leak with innodb memcached plugin for stale connection http://bugs.mysql.com/bug.php?id=68530 replication was broken while executing flush tables http://bugs.mysql.com/bug.php?id=69045 Invalid use of GRANT command breaks replication http://bugs.mysql.com/bug.php?id=68892
  38. 38. Conclusion
  39. 39. 5.6はそろそろ気軽に使えるようになった GTID... / Performance Scheme.... AWS上で検証するなら、Casualに検証できる EBS Snapshot / AMI 検証はしっかりと Kage便利
  40. 40. 5.6はそろそろ気軽に使えるようになった GTID... / Performance Scheme.... AWS上で検証するなら、Casualに検証できる EBS Snapshot / AMI 検証はしっかりと Kage便利 http://bugs.mysql.com/ 見てますよね?
  41. 41. Thank you!!

×