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