紹介 of anemometer

34
紹介 of Anemometer 最近仕事してますん 2016/01/22 yoku0825 MySQL Casual Talks vol.9

Upload: yoku0825

Post on 16-Apr-2017

1.951 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 紹介 of Anemometer

紹介 of Anemometer最近仕事してますん

2016/01/22

yoku0825MySQL Casual Talks vol.9

Page 2: 紹介 of Anemometer

宣伝1/33

Page 3: 紹介 of Anemometer

MySQL Cluster Casual Talks

#32/33

Page 4: 紹介 of Anemometer

やりたい3/33

Page 5: 紹介 of Anemometer

NDBCLUSTERだといい加減マンネリなので

4/33

Page 6: 紹介 of Anemometer

M ySQL のC luster くださいって⾔っ

たら

出てきそうな製品 C asualT alks

5/33

Page 7: 紹介 of Anemometer

通称 MCCT

6/33

Page 8: 紹介 of Anemometer

商⽤クラスターのスピーカーが⾒付かったら本腰⼊れ

る7/33

Page 9: 紹介 of Anemometer

前回 vol.8

8/33

Page 10: 紹介 of Anemometer

⼩規模サイトのDB運⽤

スレーブ2台以上禁⽌ 9/33

Page 11: 紹介 of Anemometer

俺が⼩規模MySQLだ︕︕︕

10/33

Page 12: 紹介 of Anemometer

スレーブ1台のMySQL を100台 管理する技術

11/33

Page 13: 紹介 of Anemometer

とか吹っ掛けようと思ったんですがスライド間に合いませんでした̲| ̄|○

12/33

Page 14: 紹介 of Anemometer

本編の前に⼤事なお知らせがあります

13/33

Page 15: 紹介 of Anemometer

14/33

Page 16: 紹介 of Anemometer

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

Page 17: 紹介 of Anemometer

default_password_lifetime= 0

⼩さなバグレポがイケてないデフォルト値を変えた。“affects me”してくださった⽅ありがとうございます。そしてありがとう @morgo と @Rkajiyama︖

16/33

Page 18: 紹介 of Anemometer

さあ、次は︖

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

Page 19: 紹介 of Anemometer

\こんにちは/

yoku0825@とある企業のDBAオラクれない-ポスグれない-マイエスキューエる-

家に帰ると妻の夫-せがれの⽗-ムスメの⽗-

Twitter: @yoku0825Blog: ⽇々の覚書MyNA ML: ⽇本MySQLユーザ会

18/33

Page 20: 紹介 of Anemometer

紹介 of Anemometer

19/33

Page 21: 紹介 of Anemometer

Anemometer

スローログ pt-query-digestの可視化ツールpt-query-digestの結果をMySQLに⼊れる機能(--history, --review)をそのまま使ってる実のところ、そのテーブルの中⾝をグラフィカルにしてくれるツールbox/Anemometer: Box SQL Slow Query Monitor

20/33

Page 22: 紹介 of Anemometer

Anemometer

Home · box/Anemometer Wiki21/33

Page 23: 紹介 of Anemometer

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

Page 24: 紹介 of Anemometer

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

Page 25: 紹介 of Anemometer

Anemometer

ts_minに集中しちゃう⽇次でpt-query-digestを回している程度だと、⽇単位までしか分解できない

24/33

Page 26: 紹介 of Anemometer

anemo eater

スローログをスプリットしてpt-query-digestを呼びまくる1分ぶんずつpt-query-digestに⾷わせれば、ts_minとts_maxの差は最⼤でも1分

-

AnemometerをDockerコンテナーとして起動する-既存のAnemometerがあれば単にスローログを分割して⾷わせるpt-query-digestのラッパーとして呼べる

-

25/33

Page 27: 紹介 of Anemometer

anemo eater

1分単位でプロットできる

26/33

Page 28: 紹介 of Anemometer

anemo eater

⾯倒なことはしたくないAnemometerの存在とその弱点は知ってた(Dockerイメージは作ったけど弱点にぶちあたって放置)

-

カジュアルにMySQLスローログ可視化with Fluentd+Elasticsearch+Kibana - kikumotoのメモ帳

-

MySQL Casual Talks vol 6.でNata2について発表してきた - Studio3104::BLOG.new

-

俺にクンフーが⾜りなかった

27/33

Page 29: 紹介 of Anemometer

anemo eater

リアルタイムでなくてもいいスロークエリーのリアルタイム通知は別の⽅法でしてる-グラフで⾒られれば数分前の情報であっても全然構わない

-

リアルタイムを捨てて保存期間を考えないスローログが残っている限りの情報を、最初から、最後まで⾒られる

-

⾒るかどうかもわからないグラフのために常時リソースを割かなくていい⾒たく / ⾒せたく なったら起動、⾒終わったら停⽌

-

28/33

Page 30: 紹介 of Anemometer

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

Page 31: 紹介 of Anemometer

anemo eater

pt-query-digestslowlog

mysqld httpdphp

browser

Docker container apache

30/33

Page 32: 紹介 of Anemometer

anemo eater

parallel並列で分割したスローログに対してpt-query-digestを実⾏

cell指定した単位にクエリーを丸めてpt-query-digestを実⾏(単位は分)

sinceYYYYMMDDHHNNの10桁でpt-query-digestに渡すスローログの開始時刻を指定

untilYYYYMMDDHHNNの10桁でpt-query-digestに渡すスローログの終了時刻を指定

31/33

Page 33: 紹介 of Anemometer

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

Page 34: 紹介 of Anemometer

Questions and/or

Suggestions?33/33