紹介 of Anemometer
最近仕事してますん
2016/01/22
yoku0825
MySQL Casual Talks vol.9
宣伝
1/33
MySQL Cluster
Casual Talks
#3
2/33
やりたい
3/33
NDBCLUSTER
だといい加減マ
ンネリなので
4/33
M ySQL の
C luster くださいって⾔っ
たら
出てきそうな製品 C asual
T 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 utf8mb4
MySQL Bugs: #79977: utf8mb4̲unicode̲520̲ci donʼt
make sense for Japanese FTS
What would you like to see in MySQL 5.8? | Master
MySQL
17/33
\こんにちは/
yoku0825@とある企業のDBA
オラクれない-
ポスグれない-
マイエスキューエる-
家に帰ると
妻の夫-
せがれの⽗-
ムスメの⽗-
Twitter: @yoku0825
Blog: ⽇々の覚書
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
21/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 1G
*************************** 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_file
Docker 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を実⾏(単
位は分)
since
YYYYMMDDHHNNの10桁でpt-query-digestに渡すスローロ
グの開始時刻を指定
until
YYYYMMDDHHNNの10桁でpt-query-digestに渡すスローロ
グの終了時刻を指定
31/33
anemo eater
report
n回pt-query-digestを呼ぶたびに画⾯出⼒
no-docker
スクリプトの中でdocker runを実⾏しない。
local
yoku0825/anemoeaterをpullせずにDockerfileを使ってロー
カルでdocker buildを実⾏する
user, host, socket, port, password
--no-dockerの時だけ接続先MySQLの情報を指定する
32/33
Questions
and/or
Suggestions?
33/33

紹介 of Anemometer