Upload
yoku0825
View
1.948
Download
1
Embed Size (px)
Citation preview
紹介 of Anemometer最近仕事してますん
2016/01/22
yoku0825MySQL Casual Talks vol.9
宣伝1/33
MySQL Cluster Casual Talks
#32/33
やりたい3/33
NDBCLUSTERだといい加減マンネリなので
4/33
M ySQL のC luster くださいって⾔っ
たら
出てきそうな製品 C asualT alks
5/33
通称 MCCT
6/33
商⽤クラスターのスピーカーが⾒付かったら本腰⼊れ
る7/33
前回 vol.8
8/33
⼩規模サイトのDB運⽤
スレーブ2台以上禁⽌ 9/33
俺が⼩規模MySQLだ︕︕︕
10/33
スレーブ1台のMySQL を100台 管理する技術
11/33
とか吹っ掛けようと思ったんですがスライド間に合いませんでした̲| ̄|○
12/33
本編の前に⼤事なお知らせがあります
13/33
14/33
default_password_lifetime= 0
MySQL Bugs: #77277: default̲password̲lifetime should be set 0 as implicit default valueドキュメント-An update on default̲password̲lifetime | MySQL Server Blog
-
「もっとユーザーを驚かせない⽅法でsecure by defaultな状態に移⾏できるようにしたい」
MySQL Bugs: #79939: default̲password̲lifetime > 0 should print warning at startup
-
MySQL Bugs: #79959: SYS should have a view of user accounts expiring
-
15/33
default_password_lifetime= 0
⼩さなバグレポがイケてないデフォルト値を変えた。“affects me”してくださった⽅ありがとうございます。そしてありがとう @morgo と @Rkajiyama︖
16/33
さあ、次は︖
MySQL Bugs: #76553: Sushi-Beer issue of MySQL with utf8mb4MySQL Bugs: #79977: utf8mb4̲unicode̲520̲ci donʼt make sense for Japanese FTSWhat would you like to see in MySQL 5.8? | Master MySQL
17/33
\こんにちは/
yoku0825@とある企業のDBAオラクれない-ポスグれない-マイエスキューエる-
家に帰ると妻の夫-せがれの⽗-ムスメの⽗-
Twitter: @yoku0825Blog: ⽇々の覚書MyNA ML: ⽇本MySQLユーザ会
18/33
紹介 of Anemometer
19/33
Anemometer
スローログ pt-query-digestの可視化ツールpt-query-digestの結果をMySQLに⼊れる機能(--history, --review)をそのまま使ってる実のところ、そのテーブルの中⾝をグラフィカルにしてくれるツールbox/Anemometer: Box SQL Slow Query Monitor
20/33
Anemometer
Home · box/Anemometer Wiki21/33
Anemometer
pt-query-digestがTime rangeとしてクエリーをまとめてしまう問題
# Query 14: 0.00 QPS, 0.00x concurrency, ID 0xAF17C328E1020443 at byte 10391443# This item is included in the report because it matches --outliers.# Scores: V/M = 13.70# Time range: 2015-11-02 10:55:08 to 2015-12-18 15:20:14# Attribute pct total min max avg 95% stddev median# ============ === ======= ======= ======= ======= ======= ======= =======# Count 0 13# Exec time 0 163s 2s 51s 13s 29s 13s 9s# Lock time 0 5ms 271us 445us 354us 424us 65us 301us# Rows sent 9 544.87k 3.91k 104.73k 41.91k 97.04k 33.62k 46.68k# Rows examine 0 12.00M 238.87k 3.04M 945.00k 1.46M 808.81k 725.01k# Query size 0 24.29k 1.87k 1.87k 1.87k 1.86k 0.00 1.86k
22/33
Anemometer
テーブル上UNIQUE KEY (hostname_max, checksum, ts_min,
ts_max)で、Anemometerはts_minでプロットするため、そのクエリーがts_minに集中したことになってしまう。
mysql> SELECT * FROM global_query_review_history LIMIT 1\G*************************** 1. row *************************** hostname_max: xxx db_max: xxx checksum: 1233945238822708500 sample: xxx ts_min: 2015-09-14 11:32:12 ts_max: 2015-10-28 15:51:01 ts_cnt: 31 Query_time_sum: 651.778 Query_time_min: 2.07993 Query_time_max: 197.678
23/33
Anemometer
ts_minに集中しちゃう⽇次でpt-query-digestを回している程度だと、⽇単位までしか分解できない
24/33
anemo eater
スローログをスプリットしてpt-query-digestを呼びまくる1分ぶんずつpt-query-digestに⾷わせれば、ts_minとts_maxの差は最⼤でも1分
-
AnemometerをDockerコンテナーとして起動する-既存のAnemometerがあれば単にスローログを分割して⾷わせるpt-query-digestのラッパーとして呼べる
-
25/33
anemo eater
1分単位でプロットできる
26/33
anemo eater
⾯倒なことはしたくないAnemometerの存在とその弱点は知ってた(Dockerイメージは作ったけど弱点にぶちあたって放置)
-
カジュアルにMySQLスローログ可視化with Fluentd+Elasticsearch+Kibana - kikumotoのメモ帳
-
MySQL Casual Talks vol 6.でNata2について発表してきた - Studio3104::BLOG.new
-
俺にクンフーが⾜りなかった
27/33
anemo eater
リアルタイムでなくてもいいスロークエリーのリアルタイム通知は別の⽅法でしてる-グラフで⾒られれば数分前の情報であっても全然構わない
-
リアルタイムを捨てて保存期間を考えないスローログが残っている限りの情報を、最初から、最後まで⾒られる
-
⾒るかどうかもわからないグラフのために常時リソースを割かなくていい⾒たく / ⾒せたく なったら起動、⾒終わったら停⽌
-
28/33
anemo eater
$ git clone https://github.com/yoku0825/anemoeater$ cd anemoeater$ ./anemoeater slow_log_fileDocker container starts with 172.17.0.43.URL will be http://xxxx:32780/anemometer
29/33
anemo eater
pt-query-digestslowlog
mysqld httpdphp
browser
Docker container apache
30/33
anemo eater
parallel並列で分割したスローログに対してpt-query-digestを実⾏
cell指定した単位にクエリーを丸めてpt-query-digestを実⾏(単位は分)
sinceYYYYMMDDHHNNの10桁でpt-query-digestに渡すスローログの開始時刻を指定
untilYYYYMMDDHHNNの10桁でpt-query-digestに渡すスローログの終了時刻を指定
31/33
anemo eater
reportn回pt-query-digestを呼ぶたびに画⾯出⼒
no-dockerスクリプトの中でdocker runを実⾏しない。
localyoku0825/anemoeaterをpullせずにDockerfileを使ってローカルでdocker buildを実⾏する
user, host, socket, port, password--no-dockerの時だけ接続先MySQLの情報を指定する
32/33
Questions and/or
Suggestions?33/33