主夫ときどきプログラマ

データベース、Webエンジニアリング、コミュニティ、etc

MySQLのイベントにいってきた

f:id:masayuki14:20180412180431p:plain

MySQL InnoDB Cluster入門 ※大阪開催 に参加してきた。

最近はアプリケーションからDBとしてMySQLを使う程度で インフラとしてのMySQLの利用から遠ざかっていた。 最近のMySQLの事情をキャッチアップするために参加してきた。

内容は MySQL InnoDB Cluster の概要と、構成方法、最後にデモを見せてくれた。 セミナーの資料も公開されている。 セミナー資料

参加者が7名と少なかったけど、内容はかなり充実していた。MySQL使っている人は行ったほうがいいと思う。 今まで知らなかったけど結構セミナーをやっているようなので今後はフォローしていきたい。 主催者の@yyamasaki1さんがイベント管理をしている模様。

MySQL InnoDB Cluster とは

の3つのコンポーネントを組み合わせて作るMySQLの高可用性構成。 それぞれは単体で利用できるコンポーネントで、これらを組み合わせることで自動フェイルオーバーを含む信頼性の高いDBインフラを構築できる。

今回知ったキーワード

MySQL Group Replication

複数台のサーバーがグループを作って、お互いに通信しあいながらレプリケーションを行う。 グループのメンバー管理と障害検知が自動化されている。 マスタとなっているサーバーに障害が発生した時、自動的に他のサーバーが次のマスタに昇格する。 シングルマスターで運用できるけど、マルチマスタでの構成も容易。

MySQL Router

複数のMySQLサーバーへの接続を振り分けてくれる。そのまんまルーター。 R/Oの複数台のサーバーを登録するとラウンドロビンで接続を振り分けてくれる。 負荷分散としても利用できる。 MySQL Group Replication と合わせて使う時、マスタサーバーが変わった時でも自動で追随してくれる。 アプリケーションはマスタがどのサーバーかを意識する必要がなくなる。

Mysql Shell

MySQLサーバー管理用のCLIツール。JavascriptPythonSQLで管理コードが書ける。 MySQL Group Replicationで使う場合のサーバー設定を自動でうやってくれたり(my.confの設定など) MySQL Routerの設定、管理もできる。 バッチ処理によるサーバー管理処理も自動化できちゃう。すごく良さそう。

マルチスレッドスレーブ

スレーブ側のSQLスレッド(リレーログを実行してデータを更新するスレッド)がマルチスレッドになっている。 MySQL5.7から同一スキーマ、同一テーブルでもマルチスレッドで更新できるようになっていて、MySQL Group Replicationでもサポートしてる。

スプリットブレイン

一般的なクラスタシステムで、それぞれのノードはうまく動いているのにお互いの通信だけがうまくいかない状態。 どちらも正常に更新できてしまうので、同期が復旧した時に競合が発生してしまう。 その回避のために、スプリットブレインが発生したらどちらかを落とすのが通常の解決策。 多数決で生存数の少ないグループに所属する方を落とす。その場合奇数の方がいい。 マルチマスタでMySQL InnoDB Clusterを構成する時に発生する。

次のステップ

改めて認識したけど、どうも自分はDataBaseってやつがけっこう好きらしい。 今回の資料にはチュートリアルが紹介されているので自分でも動かしてみよう。 その成果をブログに書いたり勉強会で発表できればいいかな。

次回のイベント

次回は5月25日に大阪で大きめのMySQLにイベントを企画しているようだ。 MySQLの開発者もアメリカからやって来てお弁当もついてくる大きめのイベントになるそう。 MySQL8のリリースは公式アナウンスはないけど、つまり、察するに・・・。