MySQL Casual Talks Vol. 7まとめ
ふう、MySQL Casual Talks Vol. 7行って参りました。前回は自分が発表者でもあったので、正直なところ他の人の発表を聞く余裕はなく(汗) 今回は、同僚の発表もあったので楽しみにしていったら、相変わらずの濃ゆい話が盛りだくさんで、非常に楽しめました。毎度の事ながら、@myfinderさん始め、会場提供・準備していただいたLINE
のみなさま、Oracleのみなさまに感謝です。
yoku0825さん MySQL Fabricつらい
- GAから半年なのに誰も使ってない
- アメリカのイベントでは、MySQL Fabricだけに布がプレゼントされた(白目
- Fabric対応コネクタが各種言語向けに用意されてる
- yokuさん謹製fabric対応mysqlクライアント
- fabricとConnector/C経由で通信する
- ro(スレーブ、分散される)とrw(マスタ、当然1台)のモードがある
- マスタを落とすとちゃんと切り替わりますよ(デモ)
tatsuruさん MySQL on EC2
- 3年ぐらい運用、結構消耗
- MHA組んでおく
- ENIをつけておいて、マスタ切り替えはそれを付け替える
- Mackerelでモニタリング
- バックアップスレーブでsnapshotとってる
- スレーブ作る
- snapshotから作る
- dumpから作る
- 落ちたら捨てる前提(信頼性落とす、ダウンしたら捨てる)
- 取りあえず2セット作って入れ替える、が可能なのがよい
- スレーブのオートスケールは結構難しい
- warmup難しい
- 5.7はできそう(buffer poolリストア)
- データはEBSに置いている
- IOできなくなって死ぬことがある
- ヘルスチェック工夫しよう
- RDSはちょっと高いけど楽
- フェイルオーバーが長い
- 可用性がちょっと微妙でやめた(2012年ぐらいの話なので古いかも)
- ELBはDNSベースなのでちょっとってことでhaproxyで分散している
- もはや自前でMySQL運用する時代じゃないよね
ヤフー三谷さん @mita2 Percona Live行ってきた
- Oracle(200セット), MySQL/Percona(300セット)を運用中
- Exadataとかも
- Percona Live 10月にロンドンで開催されたのに参加してきた
- XtraDB Cluster
- ActiveActiveの構成、高い冗長性
- ヨーロッパでは広く普及
- OpenStackのバックエンドに使われている
- 本家のGroup Replicationと似てる
- どのノードに書いても同期レプリされる
- MySQL Clusterよりは本家MySQLに近くてハードル低い
- Writeのスケールはできない(MySQL Cluster使おう)
- SST(丸ごとコピー)、IST(差分)でDonorからデータを送る
- ノードへの分散はHAProxyとか使う
- ヘルスチェックの仕組みもXtraDB型に準備されてる
- 書き込みは楽観的ロック
- コミットしてノード間の情報が食い違ってるとコミット時にエラー
- 従って書き込みはできるだけ1台がいい
- オンラインalterはできない(今後サポート予定)ので、ローリングで変更していく
ペパボ okumuraさん @hfm MySQL 4.0をリプレイスした
- ブログ記事
- 2005年 4.0.25 -> 9年 -> 5.0.96にバージョンアップ
- @tnmt 氏がカジュアルに5.6バージョンアップを指示するイシューを投げたところから始まった
- しかしやる事になった時は何にも知識ありませんでした
- たくさんの爆弾が仕込まれていた。。
- マスタとスレーブの食い違いなどなど
- ハードもソフトも古い
- 検証の過程で色んなバージョンをインストールしたので、MySQL-AllStarというbox提供してます(4.0から5.6まで全部入り)
- 結局5.0まで上げることに
- 6/20 イベントがあるとレンタルサーバのアクセスが減るからwという理由でメンテ実施
- ダンプからリストア、切り替えまで同じタイミングでやった
- insertを実行するとbinlogが壊れることが発覚
- 失敗として切り戻し
- 5.0系を特定のgccでコンパイルすると起きるバグ?
- gccの最適化のレベルによってテストが通ったり通らなかったり
- その後別のバグ発生
- rpmbuild中に必要なファイルが消える
- 邪魔してたパッケージ消してビルド成功
- 8/22無事バージョンアップ成功
- 4.0に入っていたデータの一部がリカバリできなかったのは手動で戻した
サイバーエージェント @strsk さん ソーシャルゲームDBの危機回避
- ブログ記事
- ギフトとかカードの情報が増えまくる
- 1日数十GB、論削だけで物理削除してなかったり
- 削除するのではなく、必要なデータだけをINSERT SELECTで抽出してテーブルを作り直すと速い
- deleteしてもテーブル容量減らない(MVCCのバージョン管理のため)
- pt-online-schema-changeでテーブル再構築
- レプリ遅延
- truncateすると遅れる(deleteより遅い)
- バッファプールを大きく使ってると遅くなるというバグ
- 結局deleteしました
@ryopeko さん Q4M
サイバーエージェント @kakerukaeru さん continuous restore
- ブログ記事
- DBのバックアップだけじゃなくてリストアも繰り返しやって、復旧可能性を担保
- バァーン、バァーン、バババァーン
@ijin さん ConsulでMySQLのフェイルオーバー
- 元ネタのブログ記事
- consulはraftを使ってcap定理のcpを実現している
- MHA発動時に実行されるfailover scriptでconsulのAPIを叩いてマスタのDNS名を変更する
- consul event
- eventをノードに伝えると伝播される(no guarantee)
- watchで検知してスクリプトを動かす
- consul templateを使いましょう
@kazeburo さん isuconのためのMySQLチューニング
- my.cnfをチューニングする
- innodb_flush_log_at_trx_commit=2で結構上がる
- innodb_flush_method=nosync/O_DIRECTでも上がる
- この2つのオプションさえちゃんとやっておけばおk
- データ量に応じてinnodb_buffer_pool_sizeも
@neofact さん、 @kuwa_tw さん NVMFS
- ブログ記事
- 圧縮効いて8〜6割の性能
- 容量的には半分ぐらいに圧縮できた
- 圧縮伸長でCPU食う(元々ioDriveではCPUバウンドだけどさらにきつくなる)
@do_aki さん N:1レプリケーション
- いつもの
- 特に進捗なし
- Raspberry piでN:1 replication動きましたw
@kamipo さん ActiveRecord
-
ARのメンテナはみんなPostgreSQL派で、MySQLのプルリクは放置される傾向にある
- いっぱいMySQLのプルリク投げた!
- For MySQLってつけたの全部放置されてるorz
- 機能をバックポートしてactiverecord-mysql-awesome作った
- kamipoさんはすごいひと