gunma.web #24 mysql ha

30
MySQL HAについて Gunma.web #24

Upload: yusuke-muraoka

Post on 24-Jan-2017

265 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Gunma.web #24 MySQL HA

MySQL HAについてGunma.web #24

Page 2: Gunma.web #24 MySQL HA

Who• 村岡友介@jbking

• フリーランスのプログラマ

• どこか在住

• 群馬に住んでい「た」

• クラウド基盤を作ったり使ったりストリーム処理したり

• Python使い

• エンジニア歴10年超えてた

Page 3: Gunma.web #24 MySQL HA

MySQL HA今日話すこと

Page 4: Gunma.web #24 MySQL HA

まえふり

皆さんが作っているアプリケーションが「使っている」そのデータベースサービスはどうやって動くのかを紹介します

ようはインフラの仕組みです

茨の道です

アプリケーション

ミドルウェア

システム(ネットワーク)

Page 5: Gunma.web #24 MySQL HA

HA?

Page 6: Gunma.web #24 MySQL HA

HA• High Availability 稼働率

• システムを停めない

• 障害のときは正常系に切り換えたり

• 運用の人がやる作業を自動化してサポートするのがメイントピック

• 100%動きつづけるシステム…は存在しない…

Page 7: Gunma.web #24 MySQL HA

MySQL HA?

Page 8: Gunma.web #24 MySQL HA

MySQL HA• MySQLを使える状態にし続ける

• 負荷分散

• M/S構成の自動切り換え

• プロセス管理が主目的でハード管理は別スコープ

• ディスクフル

• ネットワーク障害

Page 9: Gunma.web #24 MySQL HA

昔むかし、こんな案件がありました…

Page 10: Gunma.web #24 MySQL HA

要件• MySQLを使いたい

• ネイティブのJSON型を使いたい (5.7から)

• HAな仕組みにしたい

• 先方の顧客にMySQLと言ったので他のものは使いたくない

• 意訳:InnoDB

• オンプレ

Page 11: Gunma.web #24 MySQL HA

MySQL HAの選択肢• AWS RDS

• MHA

• PaceMaker

• MySQL Fabric

• MySQL Cluster

• Percona XtraDB Cluster

• MariaDB Galera Cluster

Page 12: Gunma.web #24 MySQL HA

AWS RDS• Amazon Web Servicesのデータベースサービス

• MySQLの他に色々使える

• PostgreSQL、Oracle Aurora(MySQL ベースのAmazon魔改造)

• 障害時に自動回復

• 自然災害のときに別地域のインスタンスに切り換えとか

• オンプレでは使えない

Page 13: Gunma.web #24 MySQL HA

MHA• 日本人のエンジニアが作者

• 歴史の長い実績のあるHAの仕組み

• MySQLのM/S構成を自動で切り換える

• メンテナンスモード?

• 最近のバージョンで使うには不安が残った

Page 14: Gunma.web #24 MySQL HA

PaceMaker• 他の汎用HAの仕組みの上で動かす

• 歴史の長い実績のあるHAの仕組み

• MySQLのM/S構成を自動で切り換える

• 検証では動いたんだけれどもメンバーに渡すのに不安が残った(やりたいことに対して概念が複雑)

Page 15: Gunma.web #24 MySQL HA

MySQL Fabric• 安心のMySQL(Oracle)プロダクト

• GA

• MySQLのM/S構成を自動で切り換える

• 独自xmlrpcプロトコルで問い合わせ

• 独自ドライバ(MySQL Connector)

• 管理用に別のデータベースが必要

Page 16: Gunma.web #24 MySQL HA

MySQL Cluster

• 安心のMySQL(Oracle)プロダクト

• クラスタ組める(マルチマスタ)

• MySQL5.6ベース

• NDBエンジン

Page 17: Gunma.web #24 MySQL HA

Percona XtraDB Cluster

• 安心のPercona

• クラスタ組める(マルチマスタ?)

• 世の中では使われているっぽい

• オリジナルのMySQLとは違う…

Page 18: Gunma.web #24 MySQL HA

MariaDB Galera Cluster

• 安心のMariaDB

• クラスタ組める(マルチマスタ)

• 世の中では使われている(地雷踏まれてる)

• オリジナルのMySQLとは違う…

Page 19: Gunma.web #24 MySQL HA

MySQL Fabricにした

Page 20: Gunma.web #24 MySQL HA

これで安心

Page 21: Gunma.web #24 MySQL HA

と思った?

Page 22: Gunma.web #24 MySQL HA

動きませんでした

Page 23: Gunma.web #24 MySQL HA

何が駄目だったか

• MySQL Connectorがメンテされていなかった

• 使っているフレームワーク(Django)で不具合

• MySQL Fabricが落ちるとデータベースに繋げられなくなる

Page 24: Gunma.web #24 MySQL HA

何が駄目だったか

Page 25: Gunma.web #24 MySQL HA

MySQL Router

Page 26: Gunma.web #24 MySQL HA

MySQL Router

• MySQL Proxy

• 素のMySQLドライバが使える

• MySQL Fabricプラグイン

• 構成情報をキャッシュしてくれる

Page 27: Gunma.web #24 MySQL HA

こうなった

Page 28: Gunma.web #24 MySQL HA

現状の制限• MySQL Fabric 管理用のデータベースが冗長化できていない

• これはサービスに関係ないからMariaDB Galeraとかでもいいかも

• 切り換わったことの通知がない

Page 29: Gunma.web #24 MySQL HA

展望• Group Replication

• 安心のMySQL (ry

• 5.7ベースのMySQL Cluster

• 顧客のオリジナルMySQLへのこだわりを無くす

• おれたちの戦いはこれからだ!

Page 30: Gunma.web #24 MySQL HA

おしまい