b.l0g.jp     About     Archive     Feed

MySQL Casual Talks Vol. 7まとめ

ふう、MySQL Casual Talks Vol. 7行って参りました。前回は自分が発表者でもあったので、正直なところ他の人の発表を聞く余裕はなく(汗) 今回は、同僚の発表もあったので楽しみにしていったら、相変わらずの濃ゆい話が盛りだくさんで、非常に楽しめました。毎度の事ながら、@myfinderさん始め、会場提供・準備していただいたLINE

のみなさま、Oracleのみなさまに感謝です。

yoku0825さん MySQL Fabricつらい

MySQL Fabricつらい from yoku0825
  • 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をリプレイスした

MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話 from Takahiro Okumura
  • ブログ記事
  • 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

  • ブログ記事
  • パーフェクトRuby出しました
  • Rubyの人はRedis使う人多い(sidekiqで)けどQ4M
    • shinq
    • ActiveJobを利用
    • Rails 4.2に入る予定のキュー機能

サイバーエージェント @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チューニング

ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術 from Masahiro Nagano
  • 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

NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴 from Akihiro Kuwano
  • ブログ記事
  • 圧縮効いて8〜6割の性能
  • 容量的には半分ぐらいに圧縮できた
  • 圧縮伸長でCPU食う(元々ioDriveではCPUバウンドだけどさらにきつくなる)

@do_aki さん N:1レプリケーション

  • いつもの
  • 特に進捗なし
  • Raspberry piでN:1 replication動きましたw

@kamipo さん ActiveRecord

日本Chefユーザ会 Meetup メモ

Chef_Vertical_Website_Reg

日本Chefユーザ会なるものがいつの間にかできていたようで、Chef社の人も招いてMeetupが開催されると聞き、参加してきた。

先日発表されたChef 12(参考日本語記事)の簡単な紹介と、Chefのテスト環境に流れを追っての概要とデモがあった。新しい情報はそれほどなかったように思ったが、テストについてのデモ後は質問が活発に出たりしてなかなか面白かったので、メモ公開。

ちなみに、Chefユーザ会のハッシュタグは #getchef_ja だそうなので、日本語のChefに関連するつぶやきはここを見ておくのがよさそう。

Chef 12の紹介 (Michael Ducyさん)

  • 新しくなったchef server
    • 従来1組織しか管理できなかったがmulti tenantサポート
  • chef client
    • chef pushというクライアント側へのプッシュ機能が付く予定
  • Chef development kitがバージョンアップ
    • test-kichenやfoodcriticなどを含む
  • Enterprise版の機能
    • HA
    • replication
      • 複数のchefサーバを立てて同期できる
    • analytics
    • 25ノードまでは有料版の機能を無料で使える
      • さらに30日間はサポートも無料
    • 日本でEnterprise版を使いたければ、まずクリエーションラインさんに問い合わせ

テストについて (Seth Thomasさん)

  • クックブックのテストをする時は、以下のツールを使っていくことが多いよ、という話
  •  test-kitchen
    • chef dev kitの一部
    • 仮想マシンでクックブックをテスト
  • foodcritic
    • chef dev kitの一部
    • chefのお作法に沿った文法かチェック
  • rubocop
    • Rubyのお作法チェック
  • guard
    • ファイルシステム変更確認
    • これでcookbookの変更とかをチェックして、test-kichenやfoodcritic、rubocopとか走らせる
    • 下の質問にもあるが、ローカル環境で動かしておいて、コミット前のテストを自動化するのに使う
  • serverspec
    • クックブックを実行した後に、対象のノードがどうなったかのチェックするのに使う
    • chefspecは、どうなるべきかクックブックで実装できてるかをチェックするツール

質問

  • クラスタがちゃんとセットアップできたかのチェックとかやりたいんだけど
    • chef metalを使えばできる
    • ただしまだベータです
  • serverspecのspecファイルはどこに置くの
    • mysqlだとクックブックのディレクトリのtest/integration以下に置いてる
    • MySQLのクックブックが一番ちゃんとテストしてあって色々な点で参考になる。読むなら一番いい
    • test-kitchenのサンプルとしてもMySQLがいい
  • Windowsで使いにくいんだけど
    • 手順とか公開してます
  • serverspecは全部実行した後にやると思うけどchefspec, test-kitchenとかはどのタイミングでかける?
    • chefspecはlocalで実行する
    • その後test-kitchenで確認する
  • guardはどう使う感じ?
    • 基本はローカルで動かしておいてコミット前のチェックまで自動でやるもの
    • リモートで動かして使うことももちろんできる
  • cookbook内のattributeをserverspecで使いたい時はどうしたらいい?
    • serverspec側を何とかいじってattributeの書いてあるファイルを見るとかする他ない
  • test-kitchenするのにいいのありますか?(EC2だとお金かかっちゃうから)
    • DigitalOceanは(chef社からは)速いよ(ただし西海岸は。DigitalOceanはChefのユーザでもあるし)
    • 速いところを探して使うしかない
    • test-kitchen -parallelを使えば並列実行できて速い
  • kitchen.yamlでnodeの情報にアクセスしたい
    • chef-zeroを使えばいい
    • chef-soloは将来的にdeprecatedになる予定
  • 日本でのchefコミュニティを活性化させるにはどうしたらよいと思うか?
    • ビールが必要(笑)
    • 頻繁に勉強会やmeetupやっていきたい
  • (逆に参加者への質問)女性chef関係者はいないのか?w

10/25の楽天テクノロジーカンファレンスでも、Michealさんが話をするそうで、参加者へのアンケート(?)の結果、Dockerと関連してChefを使う話を予定しているとのこと。

この後、Chef社とクリエーションライン社のおごりで、楽しくビールを飲みながらChefの話をしてお開き。

発表いただいたChef社の方、会場の準備などしていただいたクリエーションラインの方々、ありがとうございました。ビールごちそうさまでした。

WEB+DB PRESS vol. 79の記事を書きました

cover

同じ会社で働いてる @kuwa_tw さんから紹介いただいて、WEB+DB PRESS vol. 79の記事を書かせていただきました。雑誌に、というか印刷物に自分の書いたものが掲載されるのは初めての経験です。あまり歓迎されないけれども避けては通れない、メンテナンスという切り口で書かせていただいています。

始め、執筆の話をもらった時は、自分の書いた文章が印刷されて世に出るなんて想像もつかない出来事だなあと思っていましたが、実際手元に届いても、これが広く読者の方々に読まれるというのがどういうことなのかよくわかっておりませんw 皆さんからマサカリが飛んできて初めて理解できるものなのかもしれません。ご意見などありましたら @dblmkt までいただけるとうれしいです。

執筆のチャンスをくれた @kuwa_tw さんを始め、不慣れな我々をサポートしてくれた技術評論社の編集者の方、一緒に記事を執筆し色々なアドバイスをくれた同僚達にこの場を借りて感謝を表したいと思います。ありがとうございました!