GA

2021/03/28

ぼくがかんがえたさいきょうのMySQL監視スクリプトのはなし

PHPerKaigi 2021 でトークしてきた話です。

これは yt-healthcheck の話で、ウチの環境ではこれを5分に1回、crondからキックしています。

喋っていた他にもいくつかひねりがあって、でも再集録の時間が取れなくて断念したネタもあります。


セッションのあと、Ask The Speakerで話しかけてくださったみなさまありがとうございました!
いつもこういう時ぼっちになるので助かりました!

Q. 「RDSではread_onlyの監視は要らない」って言ってたけどそれは何故?
A. RDSはRDSの基盤側で勝手にread_onlyを切り替えてユーザー側では指定できないので監視する必要はないのです

Q. SHOW ENGINE INNODB STATUS をもっと統一しようみたいな動きはないの?
A. アレは「InnoDBチームが自分たちのために出している出力」みたいなところがあるので、エンドユーザーが使っていることは知っていてもそういう流れにはならなさそう。一つの別解がMySQL 5.6から使える information_schema.innodb_metrics なんだと思う

Q. コネクション監視の閾値ってどれくらい?
A. デフォルトで70%がワーニングになってますけど、これ「そもそも平常状態のピーク * 2 = max_connection 」で普段設定していて、この前提の上で70%だと「想定していたピークの1.4倍くらいコネクションが来た」とか「オートスケールでコネクションプールが増えた」みたいなのが良い感じで引っ掛かります

【2021/03/29 11:31】

Q. AUTO_INCREMENTが40億行くってどういうケース?

A. 主にログ系。バッチで数か月分とか消し込みがかかっていてもAUTO_INCREMENTは巻き戻らないので、毎日100万とか1000万の単位で書き込まれると案外あふれる。あとはINSERT .. SELECT .. でバンバン連番を払い出すやつとか

2021/03/04

Perl MongersのためのMySQL InnoDB Cluster超入門のはなし

Japan.pm 2021 のトークセッションで喋らせてもらったネタ。
Perlの話は DBI->connect くらいしか出てこないのでPerl Mongersでなくてもお楽しみいただけるかと思います。


InnoDB Clusterのキモは何と言っても「MySQLとMySQL Routerはそれぞれ別の観点から別の仕事をしている」というところで(ついでに言うなら、オーケストレーター的に働くMySQL Shellは一度動き出してしまえば常駐しなくても良いところ)これを理解しておくと理解が色々と捗る。

このへんの機能も「MySQL Routerの」機能であって、グループレプリケーションはこの辺の機能には一切関係ない。

そのへんを認識すると、全てのmysqldがいなくなった時にmysqlrouterが返してくるこのへんのエラーも「ああ、如何にもそれっぽい」と思えるようになるんではなかろうかなと。

グループレプリケーションにブラックボックスを全てつぎ込んだが故に、全てを理解しようと思うと当然のようにMySQLのソースコードを当たる必要があるけれど、MySQL RouterやMySQL Shell部分はシンプルなので、「Paxosまではいいけど表面的な動作はコードレベルで押さえておきたい」みたいなケースには学習がしやすいんじゃないかなあと思ったりしました。

----

しかし Japan.pm 2021 は想像していたより色々チャレンジをされていたみたいで、 (discordには慣れなかったけど) トーク後のおしゃべり可能タイムが設けられていて「トークおつかれさまでした!」ってまいんだーさんの肉声で言われた時にはかなり嬉しかった。

トークのラインナップもさすがPerl Mongersって感じのアレでだいぶ好みでした。次回もあるといいなあ。