MySQL Casual Talks vol.5 メモ
MySQL Casual Talks vol. 5に行ってきたので、自分なりのメモと資料へのリンク。
途中、アラートが鳴り始めて確認してたりしてメモが適当なところがあるが仕方なしw
かなりのスピードでじゃんじゃんプレゼンが進んで行ったが、どれも面白い・役立つ内容ばかりで、楽しいひと時でした。発表者の皆様、会場の提供や調整などしてくださった@myfinderさんはじめとする皆様、ありがとうございました。自分の隣でビール缶を次々と「カシュッ」と空けていた@oranieさんのような余裕を持ちつつ、次回は自分も何かネタを提供できるといいなあ。
@yuryuさん GTIDを使い始めてやめた話
- GTID - 全てのトランザクションを一意に識別、一貫性保証
- マスタを切り替えると、マスタのUUIDが変わるのでGTIDが2個になる
- 利点
- change master to … master_auto_position=1で簡単にレプリをはれる
- mysql workbenchのmysqlfailoverとか使える
- 欠点
- クラスタ全部GTID有効にする必要
- MyISAM使用不可
- HAしたいならMHAでいいんじゃね?
- バグ
- GTID有効でFLUSH LOGSするとレプリ停止(5.6.11のみ)
- stop/start slaveするとトランザクションがスキップされる可能性あり
- ネットワーク切断でトランザクションスキップの可能性
- 結局、本格的に使うには時期尚早なので辞めました、ということ
@con_mameさん MySQL 5.6移行記
- クックパッでは5.5のサーバを5.6にバージョンアップしたり最初から使ったり
- レプリしてクエリ流してコンフィグいじり始めた
- うまく行ったのは最初だけで問題勃発
- EBSでスナップショット取ったボリュームを5.6マシンにぶら下げてmysql_upgrade実行
- Kage
- リクエストをコピーしてsandbox環境に流す仕組み(ユーザへはproductionからの結果が返る)
- レスポンスのdiffも取れる
- バックエンドを5.6にして違いを確認
- バージョン違い、設定違いのサーバを並べて比較
- 開発用DBを先に新しくしてリリース前に新環境を試す
- バグ確認用(最新) → 検証用(1つ前) → 本番用(安定版)
- 各バージョンが入ったAMIを用意しておいてすぐ起動できるようにしてある
- GTID有効だとsql_slave_skip_counter使えない
- AWSだと色んな検証がCasualにできる
- bugsは見ましょう!
- 5.6で遅くなるところもあるので、得意な部分から本番投入していっている
@yoshi_kenさん 5.0 Tritonnから5.6 mroongaへの移行
- 技評の記事の裏話
- 旧構成 マスタはDRBDでミラー、スレーブにレプリ
- 5.6スレーブを追加してそこに孫をぶら下げて旧環境を切り離し
- 本番環境のアクセスログから抜き出したURLを使ってテスト
- 5.6で遅くなったクエリをチューニング
- SQLMODE厳格化への対応
- テスト中に見つけたmroongaのバグはすぐに修正してもらえた
- HWトラブル
- マスタ死亡、起動しない、焦げ臭い!さらにもう一台も焦げた。。
- GTIDよりsemi sync repl + MHAがいいのでわ
- innodb_file_per_tableでなかったのでダンプしてバージョンアップした
- memcached APIはバグで使えなかった
@yoku0825さん アプリ担当が出してきたDDLがドイヒーな話
とあるイルカのバーボンハウス from yoku0825
- すごい心が痛い&共感出来る内容だったけどテンポ早すぎてメモできなかったw
- MariaDB 10からもGTIDが使えるようになった(ただしMySQLとは結構違う)
- ログ用テーブル
- 突っ込みどころたくさんww
- インデックス名はidx_カラム名_カラム名_…とすると長いけどexplainのときに分かりやすい
- フレームワークが作る通りではなくDBの特性を考える
- SQL文を見るだけでどのインデックスを使うかなどの意図が分かる名前付け
@kamipoさん mysql-build
- この辺りトラブル発生してメモがおろそか
- いろんなMySQLをインストールして使い分ける仕組み
- percona serverのmysqldumpにはkeyを消してダンプして作り直すオプションがある
- ダンプが高速化
- fbの5.6にはlogical key readのオプションがある
@do_akiさん multi master replication
- MySQL Casual定番の内容
- change masterを2秒ごとに切り替えてマルチマスタ
- 5.7では標準でできるようになった
- 過去に色々な方法でマルチマスタを試みている人がいるww
@RKajiyamaさん 5.7 Multi-source replication
- labsにはDMR以前のものがありますよ
- hadoop applier for mysql
- hadoopをMySQLスレーブのように使う
- JSON UDF
- Multi source replication
- MySQL Utilities Fabric
- シャーディングの情報を管理する仕組み
- Fabric + multi source replication + multi thread slaveの組み合わせ良さげ
- hadoop applier for mysql
@songmuさん
- GitDDL::Migrator, SQLTranslator(SQLFairy)
- ブランチごとにテーブルやカラムが違うと大変
- テーブル構成の違いなどが表示できる
- ブランチを行ったり来たりしながらalterしたりできる
- App::RunCron
- perlのラッパー、レポータを書くと色々できる
- cronのログってnullに捨てちゃうけど困るよね
- cronlog
- cronの処理をラップしてエラー処理が可能
@nekogeruge_987さん DB2からMySQL5.5への移行
- 13年運用されてるデータベース
- レコードをCSVにしてload infile
- シェルスクリプトで自動化
- 4時間以内に終わらせるという時間制約
- loadを高速化する工夫
- ジョブフローの最適化(jenkins build flow plugin)
- ジョブフローをGroovyで書ける(並列実行などなども可)
- データ移行自体をCIする(1クリックデータ移行!)
- /var/lib/mysql以下の並列rsync
@monryさん Amazon RDS
- マスタ1台、スレーブ5台
- 243ドル/月
- 物理サーバが1台13万以上ならRDSの方が安い(3年償却)
@chobi_eさん ストレージエンジンを作ってみた
- kazuhoさんのリアルタイムランキング用MySQLストレージエンジンの話
- 本を読む
-
のChapter 10
- Mysql 5.1 Plugin Development
- ランキングと言えばredis
- sorted setのソースを取ってくる
- 意外と簡単に書けるので書いてみよう