目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

MySQL Casual #2行ってきたよ

行ってきたのでちょっと忘れないうちにメモメモ。
個人の覚え書きなので抜け漏れ誤りがあります。そしてまだまとまってないです。

MySQLでNoSQL

  • oinumeさん
  • アメーバピグでのNoSQLの使用法
  • Fusion-IOの話はしません。
  • アプリでJavaの話
  • 登録800万人
  • アーキテクチャ
    • ソケットサーバ(独自ミドルウェア)
    • アプリサーバみたいなやつ
  • MySQLRDBMSとしては使ってない
    • もともと独自KVS(オンメモリ) + MySQL からMySQL一本化
    • データが多いので再起動に 7時間かかる = 7時間止める必要があった
  • パフォーマンスチューニング
    • スローログを見る
    • クライアント側でもスローを見る
    • 大量にのfetchすると遅い
  • MySQLをKVSとして使って誰得?
    • JOINできない
    • INDEXは効いている
    • ALTER TABLEできない
    • MongoDBに以降しやすい
    • デメリットは
      • キー以外でのカラムでの絞り込みできない
      • 特定のカラムでソートできない
  • Fusion-IOに移行したら
    • KVSが150台から6台へ
  • DBを分ける理由が特にない。 (DBは分割しているのかという質問に対し)

超CasualにつかるMySQL

  • グニャラくん ★
  • DeNAの人(あれ?)
  • ブラジルでSennaとGroongaの開発してた
  • MongoDBは運用ノウハウが少ないね
    • 運用実績のないシステムの運用は大変
    • 24時間365日守れるの?
  • MySQLは枯れている
  • ミドルウェアは真に必要な時に導入すれば良い
  • value にXML JSON
  • natural_keyとcreate_at update_atは分けておく
  • インデックスが必要なら別テーブルを作る
  • MessagePack + Snappyで圧縮してる

Performane Schema活用

  • 奥野さん
  • Performane Schema
    • 情報を収集するツール
    • MySQL 5.5から
    • ストレージエンジンで実装
  • プロセス監視
    • pgrep -x mysqld
    • mysqladmin ping
  • STATUS
    • mysqladmin status
  • SHOWコマンド
    • SHOW GLOBAL STATUS
  • INFORMATION_SCHEMA
    • SELECTで取得できる
  • EXPLAIN
  • SHOW PROFILE
  • ログ
  • GDB
    • 関数の最適化が敵
    • gdb -p `pgrep -x mysqld`
  • DBUGトレース
    • 最強らしい
  • PERFORMANCE_SCHEMA
    • DtraceのSDTと似てる
    • プラットフォームフリー
  • オーバーヘッド
    • CPU若干 無視できない
    • 設定
      • 5.5以上を使いましょう
      • 起動中には変更不可
  [mysqld]
  performance_schema
    • summaryテーブルをよく使う
    • 時間の単位はピコ秒

event schedulerのはなし

  • myfinderさん
  • cronのようなもの
  • create eventで作れる
  • パーティショニングのrotateとかに使っている
  • 注意
    • マスタースレーブで有効にしないといけない
    • イベントが動いたかどうかを監視しないといけない
    • 障害復旧で設定変更しないといけない

MySQL4.0でCasual

  • innodb_buffer_pool_sizeの表示が正しくない UINTなのでオーバフロー?
  • 4.0のクライアントは5.5.57につながらない

5.0から5.5への以降

  • oranieさん
  • 5.0.7 -> 5.1 -> 5.5
    • 5.1をはさんで以降した

マスタ n : 1 スレーブレプリケーション

  • シャーディングするとjoinできない
    • ちょっとした集計するとき不便
  • STOP SLAVE; CHANGE MASTER; START SLAVE;でマスターを切り替えていく

MySQL MHA

  • まつのぶさん
  • pure perl
  • 5.0以上で動作
  • 依存モジュールは少ない
  • 結論DeNAに入社すればサンプルも設定例も動いているのも見れます

MySQLでNoSQL

  • かじやまさん
  • 2パタンのMemcachedの連携
  • MySQL Cluster7.2
    • memcachedにNDB API用ドライバを追加
    • アプリからはmemcachedで接続

MySQLの認定試験のはなし