Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gunma.web #24 MySQL HA

About MySQL HA

  • Login to see the comments

  • Be the first to like this

Gunma.web #24 MySQL HA

  1. 1. MySQL HAについて Gunma.web #24
  2. 2. Who • 村岡友介@jbking • フリーランスのプログラマ • どこか在住 • 群馬に住んでい「た」 • クラウド基盤を作ったり使ったり ストリーム処理したり • Python使い • エンジニア歴10年超えてた
  3. 3. MySQL HA 今日話すこと
  4. 4. まえふり 皆さんが作っているアプリケー ションが「使っている」その データベースサービスはどうやっ て動くのかを紹介します ようはインフラの仕組みです 茨の道です アプリケーション ミドルウェア システム(ネットワーク)
  5. 5. HA?
  6. 6. HA • High Availability 稼働率 • システムを停めない • 障害のときは正常系に切り換えたり • 運用の人がやる作業を自動化してサポートするのが メイントピック • 100%動きつづけるシステム…は存在しない…
  7. 7. MySQL HA?
  8. 8. MySQL HA • MySQLを使える状態にし続ける • 負荷分散 • M/S構成の自動切り換え • プロセス管理が主目的でハード管理は別スコープ • ディスクフル • ネットワーク障害
  9. 9. 昔むかし、こんな案件 がありました…
  10. 10. 要件 • MySQLを使いたい • ネイティブのJSON型を使いたい (5.7から) • HAな仕組みにしたい • 先方の顧客にMySQLと言ったので他のものは使いた くない • 意訳:InnoDB • オンプレ
  11. 11. MySQL HAの選択肢 • AWS RDS • MHA • PaceMaker • MySQL Fabric • MySQL Cluster • Percona XtraDB Cluster • MariaDB Galera Cluster
  12. 12. AWS RDS • Amazon Web Servicesのデータベースサービス • MySQLの他に色々使える • PostgreSQL、Oracle
 Aurora(MySQL ベースのAmazon魔改造) • 障害時に自動回復 • 自然災害のときに別地域のインスタンスに切り換えとか • オンプレでは使えない
  13. 13. MHA • 日本人のエンジニアが作者 • 歴史の長い実績のあるHAの仕組み • MySQLのM/S構成を自動で切り換える • メンテナンスモード? • 最近のバージョンで使うには不安が残った
  14. 14. PaceMaker • 他の汎用HAの仕組みの上で動かす • 歴史の長い実績のあるHAの仕組み • MySQLのM/S構成を自動で切り換える • 検証では動いたんだけれどもメンバーに渡すのに不 安が残った(やりたいことに対して概念が複雑)
  15. 15. MySQL Fabric • 安心のMySQL(Oracle)プロダクト • GA • MySQLのM/S構成を自動で切り換える • 独自xmlrpcプロトコルで問い合わせ • 独自ドライバ(MySQL Connector) • 管理用に別のデータベースが必要
  16. 16. MySQL Cluster • 安心のMySQL(Oracle)プロダクト • クラスタ組める(マルチマスタ) • MySQL5.6ベース • NDBエンジン
  17. 17. Percona XtraDB Cluster • 安心のPercona • クラスタ組める(マルチマスタ?) • 世の中では使われているっぽい • オリジナルのMySQLとは違う…
  18. 18. MariaDB Galera Cluster • 安心のMariaDB • クラスタ組める(マルチマスタ) • 世の中では使われている(地雷踏まれてる) • オリジナルのMySQLとは違う…
  19. 19. MySQL Fabricにした
  20. 20. これで安心
  21. 21. と思った?
  22. 22. 動きませんでした
  23. 23. 何が駄目だったか • MySQL Connectorがメンテされていなかった • 使っているフレームワーク(Django)で不具合 • MySQL Fabricが落ちるとデータベースに繋げられ なくなる
  24. 24. 何が駄目だったか
  25. 25. MySQL Router
  26. 26. MySQL Router • MySQL Proxy • 素のMySQLドライバが使える • MySQL Fabricプラグイン • 構成情報をキャッシュしてくれる
  27. 27. こうなった
  28. 28. 現状の制限 • MySQL Fabric 管理用のデータベースが冗長化でき ていない • これはサービスに関係ないからMariaDB Galera とかでもいいかも • 切り換わったことの通知がない
  29. 29. 展望 • Group Replication • 安心のMySQL (ry • 5.7ベースのMySQL Cluster • 顧客のオリジナルMySQLへのこだわりを無くす • おれたちの戦いはこれからだ!
  30. 30. おしまい

×