smallpalace's blog

鯖缶主婦の日々の記録です

myna会20130729にいってきた記録

こんにちは。smallpalaceです。

タイトルどおり勉強会に行ってきたのでその記録を。

 

・まず来日されていたmysqlの中のすごい人(女性)によるperformance_schemaのお話

 

なんとなくスライドをメモっていたけど、以下URLが同じもの。

http://technocation.org/files/doc/2013_07_PS.pdf

 

サマリーとかダイジェストをpsからselectすることで

詳しくioなどのステータスをリアルタイムに見ることができとても便利そう。

そのときディスクに書いちゃってるクエリがわかるみたいなのが色々。

前回木村明治さんが紹介されていたps_helperオススメだそうです。

 

ポッドキャスト聞いてねとのこと

 

OurSQL Podcast episodes 139, 140, 141

 http://bit.ly/oursql139 

 http://bit.ly/oursql140 

 http://bit.ly/oursql141 

Slides/blog post

 http://bit.ly/mysql_ps

 

ぽっどキャストのCDをお土産にもらいました。ありがとうございます。

英語の勉強したいと思います。

------

 

続いては

・とみたまさひろさんのmysqlプロトコル解説

 

プロトコルを知るといいこと

→libmysqlclientに制限されないアプリがつくれる

MySQLパケットを中継するなにかをつくれるかも(proxy風のなにか)

 

rubyだとスレッドがたまるとかあるみたい

 

パケット

3byte、データ長

1byte、シーケンス番号

xbyte、データ

 

可変長整数

 

というようなプロトコルの解説が延々続き会場は静寂につつまれました

 一部のレベルの高いすごい方々には評判がよかったようです。

わたしはそんなレベルでないので活用する場所はなさそうなような。

結論、素直にAPIつかうのがいい。というご本人の結論でした。

http://slide.rabbit-shocker.org/authors/tommy/mysql-protocol/

 

--

・平塚さんのMySQL5.6パラメータ検討会

 

パラメータ数が増えすぎてつらい話をわかちあいたい

mysql5.6ではORACLEより増えた

 

ORACLEのマルチスレッドパラメータ気にしてるとかオラクルの話がちょっと出てました

 

サンプルを使おうにも5.5までついてたやつはそもそもあまり役に立たなかった

そこで本日はAmazonRDSの設定を参考にして、要注目パラメータを解説しましょうということに。

microとsmallを立ち上げてパラメータ引っこ抜いて即効落としたそうです。slave分も。

 

事の発端↓

RDSが5.6に対応したブログがかかれてる

http://aws.typepad.com/aws_japan/2013/07/mysql-56-support-for-amazon-rds.html

RDSのパクリをしようと決意したと。

Autoバックアップ設定しないとパラメータ手抜きされちゃうとかあるようです。

 

スライドとエクセルをみながらパラメータを一個一個説明するなど。

 

★デフォルトから変更されているパラメータ

黒字のところ

 

binlog_format バイナリログのフォーマット

デフォルトのステートメントだともんだいいあるので中の人はMIXEDを選んでいる

逆に5.1以降でステートメントむずかしく問題あるのでそろそろデフォルトMIXEDでいいのでは

 

explicit_defaults_for_timestamp デフォルトOFF

いきなり替えるとトラブる系の意識の高いパラメータ。AWS的にON

 

innodb_log_file_sizeデフォルト値ちいさい。aws的には128*2

 

key_buffer_size デフォルト8Mで変更後16M

倍でも小さめなのでRDSではmyisamつかわない想定ぽい

 

log_slave_updates バイナリログをスレーブでも出力するかどうか

孫スレーブとかをつくらせない方針ということで以前はOFF固定だったが

AWS的にONになった

 

master_info_repository/relay_log_info_repository/relay_log_recovery

クラッシュセーフにするためのしくみ。こちらをTABLEに。なぜデフォルトFILEなのか意味がわからない

 スレーブがクラッシュした際、リレーログの末尾が壊れてることを考慮したもの

 

sync_binlog が5.6から1になってる!!ここ一番重要。

変更不可になってるっぽい

性能は上がってる模様

MySQL5.6からコミット毎の3回のコミットが2回に減った模様。(他のRDBMSと同様になった)

ただ、5.5と同じ設定だと壊れた時のデータの保全性が異なって大変なことになるので気にしましょう。

MHAつかってるとかの場合以外は5.6からはsync_binlogは1必須とのこと。

 

RDS的に変更不可なやつは3つ

 

★5.5から変更されているパラメータ

innodb_additional_mem_pool_size

デフォルト8メガ.さわんなくていいやつ。my.cnfから行ごと削除でOK。

 

innodb_buffer_pool_instatnces

デフォルト8ほっとけばよし。5.5まではこれを2にするとかよっぽどでないと必要ないと開発者がいってたらしい。

 

innodb_flush_method

O_DIRECT

5.6ではやめたらしい。再起動後の性能回復は遅い。バッファプールダンプ使えば緩和はできる。

OSのページキャッシュを別につかいたい理由がなんかあったぽい。

理由は不明で気になっている

 

innodb_old_blocks_time デフォルトが0から1000ミリ秒(1秒)に。

ウォームアップでフルスキャンしても載らなくなる。

NEW領域にあった貴重なデータを流さないための模様

 

max_connect_errors

接続エラー10回から100回に。高負荷時とかだめなときは継続して起きるので100になったところで意味あるか微妙ではある。

たしかに。

 

クエリキャッシュデフォルト無効

5.6からはOFFからONにするには再起動しないとダメ

オワコンということかも

 

sort_buffer_sizeデフォルト値がだいぶへりました。

セッション単位で変更可能なのでそうするのがいいっぽいです。

 

sql_mode他のdbmsとの互換性アップのための改修

/usrの下に勝手につくられたmy.cnfに書かれた設定をコメントしましょう。

 

table_open_cache

デフォルト値が5.1は400とかで少なかったので2000にふえた。これを増やすのは必要。

 

インスタンスサイズによって異なるパラメータ

 

innodb_buffer_pool_size

5.1は8MBで論外だった一番重要で大体メモリの半分割り当てる

RDSでは半分よりちょっとアグレッシブに割り当ててる

 

MaxConnections デフォルトは151らしい。apacheにあわせてかわったらしいが今あんま意味ない

RDSでは物理メモリに収まるように計算はされてる

 

自動計算されるパラメータ

back_logソケットキューの長さ

カーネルパラメータの値も考える

 

host_cache_sizeエントリ目に見えるようになった

 

thread_cache_size

自動調整で8とか9とからしい。

 

max_alowed_packet

スレーブだけ最大値(1GB)。設定ミスでレプリケーションがとまることないようにAWSの親心

 

文字コードは特別な事情がなければutf8mb4がいいと思われる

 

gtid_mode

RDSではボツ。

 

スロークエリログ

デフォルトOFF。

RDSではテーブルに出すといいよ

 

デフォルト値は最適値ではぜんぜんない

ほんとにそのとおりですね!!

 

宿題

1.explicit_defaults_for_timestampをお使いの環境に適用して確認してみてください

というようなのが1から4まで。スライドは以下からどうぞ。

  http://d.hatena.ne.jp/sh2/20130806

----

LT

 

・yokuさん チューニンガソンの復習

 http://www.slideshare.net/yoku0825/5-24757328

sh2さんの宿題

これよりはやくしてください

 

魔改造とのこと。

結局MyISAMつかっていましたw

スモーカーが集うmysqlの飲み会したいそうです。

----

・yamasakiさんのLT mysqlクラスタ7.3の紹介

性能がかなり伸びた

オートインストーラができた

5分くらいでできるらしい

 

デモみました。

ブラウザでインストール設定できるのはよさそうでした。

 

以上。みていただいてありがとうございました。

また機会があれば。