2018年12月26日水曜日

ペパボがProxySQLならこちらはMySQL Routerだ!

TL;DR

  • パッチはだいぶ下にあります。しかも大したやつじゃないです。
  • 9割余談です。

このエントリーは GMOペパボ Advent Calendar 2018 の26日目の記事です。
25日目は kurotaky さんの「結婚式の後に書きます!」の予定だったんですが、どう考えても結婚式の後にブログ書いてる暇があったら奥さんと結婚式の余韻に浸ってください。 末永くお幸せに!
ところでなぜ26日目なのかというと、
中の人へ
https://qiita.com/organizations/pepabo に所属すると登録できるようになります。お近くの CTL に Qiita のユーザ名を伝えて追加してもらってください
さすがにこの組織に追加してもらう訳にはいきません(注: わたしはペパボの中の人ではありません) が、26日目なら名乗ってもOKとのことだったので、これは26日目の記事(論理)です!
メリークリスマス! (プラス1日)

さて、2018年のペパボと言えば、 ProxySQL だったように思います(独断と偏見と観測範囲による、主に おっくんさん と仲良くしてたからそう思うだけな気がする)
おもむろに もりたこさん がProxySQLの中身を読みだしたりしているところからもその気配は感じられますね。
あとは k1low さんが tcpdp を公開していたり
監査大事! クエリーログ! っていうふいんき(略)が伝わってきます。

ところでおっくんさんのスライドで紹介されている「いろいろなクエリログの取得方法」ですが
_人人人人人人人人人人人人_
> MySQL Routerがない! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
ProxySQLはあるのに!!!
と思ったら、どうも
俺もProxySQL勧めたんだった!!!!!1
orz
ウチの環境では mikasafabric for MySQL というMySQL Fabricの なれの果て フォークプロダクトをバリバリ本番で使っていますので、MySQL Routerのハックはまれにですがよくやります。
今年の9月いっぱいくらいはMySQL Router 8.0.12にfabric+cache pluginをポーティングする 苦行 作業をしていました。やったぜ、これでMySQL 8.0でもmikasafabric for MySQLが使える! つらくない!
ちなみにテスト用に入れていたパッチはこんな簡単なやつだったようです。
これアカウント名とか取るには認証パケットの段階で記録しておかないといけなさそうで、面倒でやめた気がしますが、ジェネラルログみたいに、CONNECTの時にスレッドIDと接続元とかアカウントを記録してやって、ログを見る時にスクリプトでほげればいいんだなきっと。
176 #ifdef QUERY_LOG
177     if (buffer[4] == 0x3)
178     {
179       // Com_QUERY
180       auto pkt = mysql_protocol::Packet(buffer);
181       auto query_length= pkt.get_lenenc_uint(0);
182       if (query_length > 2)
183         log_info(pkt.get_string(4, query_length).c_str());
184     }
185 #endif
もうちょっとカジュアルにMySQL Routerをゴニョれるようになりたいですね、来年は。

完璧に余談ですが、 おっくんさん は実は 席替えスクリプト
の時に何となく名前を認識して、MySQL Casualの時に「すごい人だなーってどこかで聞いたことのある名前だなー」って思って、今年ようやくリアルでも改めて交流ができた年でもありました。
さあ、また来年もMySQLやっていき!

0 件のコメント :

コメントを投稿