MySQL基礎運維——percona-toolkit運維工具
一、percona-toolkit工具
percona-toolkit是一組高階命令列工具的集合,用來執行各種透過手工執行非常複雜和麻煩的 mysql 任務和系統任務,這些任務包括:
-
檢查 master 和 slave 資料的一致性
-
有效地對記錄進行歸檔
-
查詢重複的索引
-
對伺服器資訊進行彙總
-
分析來自日誌和 tcpdump 的查詢
-
當系統出問題的時候收集重要的系統資訊
percona-toolkit 源自 Maatkit 和 Aspersa 工具,這兩個工具是管理 mysql 的最有名的工具,現在 Maatkit 工具已經不維護了,請大家還是使用 percona-toolkit 吧! 這些工具主要包括開發、效能、配置、監控、複製、系統、實用六大類,作為一個優秀的 DBA,裡面有的工具非常有用,如果能掌握並加以靈活應用,將能極大的提高工作效率。
1、percona-toolkit軟體包下載
2、 percona-toolkit軟體安裝
軟體安裝存在三種安裝方式,分別為RPM包、二進位制包、原始碼安裝。
需安裝依賴包
1 |
yum
install
perl-DBI perl-DBD-MySQL |
1.RPM包安裝方式
1 |
rpm –ivh percona-toolkit-3.1.0-2.el7.x86_64.rpm |
2.二進位制包安裝
1
2
3
4
5 |
tar
–xvf percona-toolkit-3.0.11_x86_64.
tar
.gz cd
percona-toolkit-3.0.11 perl Makefile.PL make make
install |
下面介紹它自帶的一些工具
2、pt-kill工具
1、工具介紹
pt-kill 是一個簡單而且很實用的查殺mysql執行緒和查詢的工具,主要是為了防止一些大/複雜/長時間查詢佔用資料庫及系統資源,而對線上業務造成影響的情況。
2、常用引數
常用引數 |
含義 |
--user |
使用者 |
--password |
密碼 |
--port |
埠 |
--host |
主機 |
--socket |
本地套接字 |
--match-command |
匹配狀態 |
--match-info |
匹配資訊 |
--match-state |
匹配宣告 |
--ignore-host/--match-host |
匹配主機 |
--ignore-db/--match-db |
匹配資料庫 |
--ignore-user/--match-user |
匹配使用者 |
--kill |
殺掉連線並且退出 |
--kill-query |
只殺掉連線執行的語句,但是執行緒不會被終止 |
|
列印滿足條件的語句 |
--busy-time |
SQL執行時間的執行緒 |
--idle-time |
sleep時間的連線執行緒,必須在--match-command sleep時才有效 |
--interval |
query的間隔 |
--victim |
oldest|all|all-but-oldest 針對範圍 |
--daemonize |
是否放到後臺執行 |
--interval |
執行頻率(s=seconds, m=minutes, h=hours, d=days) |
--log-dsn D=test,t=pk_log |
記錄資訊到表中 |
3、實際案例
以下均省略連線引數!
3.1 殺執行時間超過10s的SQL語句但保留執行緒
1 |
pt-
kill
--busy-
time
=10 --victims all --print --
kill
-query |
3.2 查某IP來源且執行時間超過20s的會話
1 |
pt-
kill
--match-host
"10.100.50.29"
--print --victims all --busy-
time
=20s |
3.3 每10秒檢查一次,狀態為sleep的程式就給幹掉
1 |
pt-
kill
--match-
command
Sleep --victims all --interval 10 --
kill
--print |
3.4 查殺select大於10s的會話
1 |
pt-
kill
--match-info
"select|Select|SELECT"
--print --victims all --busy-
time
20s |
3.5 查狀態為sleep的程式且時間超過1h
1 |
pt-
kill
--match-
command
Sleep --victims all --idle-
time
=1h --print |
3.6 查殺訪問某使用者的會話
1 |
pt-
kill
--match-user
"test"
--victims all --print --
kill |
3.7 將執行記錄記錄到表中
1 |
pt-
kill
--log-dsn D=
test
,t=pk_log --create-log-table --host=192.168.186.11 --user=root --password=mysql --port=3306 --busy-
time
=10 --print --
kill
-query |
注:
指定庫必須存在否則會報錯!
test庫中pk_log表,若不存在先建立表--create-log-table
3.8 殺掉正在進行filesort的sql
1 |
pt-
kill
--match-
command
Query --match-state “Sorting result” --busy-
time
10 --interval 10 --run-
time
1 --print --
kill
--victims all |
3.9 後臺執行殺掉正在進行filesort的sql
1 |
pt-
kill
--match-
command
Query --match-state “Sorting result” --busy-
time
10 --interval 10 --run-
time
1 --print --
kill
--victims all --daemonize |
注:
--daemonize 會將該命令放到後臺不斷執行。
3.10 篩選檔案中processlist
1
2 |
mysql -e
"SHOW PROCESSLIST"
> proclist.txt pt-
kill
--
test
-matching proclist.txt --busy-
time
60 --print |
3、pt-query-digest工具
1、工具介紹
分析查詢執行日誌,併產生一個查詢報告,為 MySQL、 PostgreSQL、memcached 過濾、重放或者轉換語句。
2、常用引數
常用引數 |
含義 |
--create-review-table |
當使用--review引數把分析結果輸出到表中時,如果沒有表就自動建立 |
--create-history-table |
當使用--history引數把分析結果輸出到表中時,如果沒有表就自動建立 |
--filter |
對輸入的慢查詢按指定的字串進行匹配過濾後再進行分析 |
--limit |
限制輸出結果百分比或數量,預設值是20,即將最慢的20條語句輸出 |
--host |
mysql伺服器地址 |
--user |
mysql使用者名稱 |
--password |
mysql使用者密碼 |
--history |
將分析結果儲存到表中,分析結果比較詳細,下次再使用--history時,如果存在相同的語句,且查詢所在的時間區間和歷史表中的不同,則會記錄到資料表中,可以透過查詢同一CHECKSUM來比較某型別查詢的歷史變化 |
--review |
將分析結果儲存到表中,這個分析只是對查詢條件進行引數化,一個型別的查詢一條記錄,比較簡單。當下次使用--review時,如果存在相同的語句分析,就不會記錄到資料表中 |
--output |
分析結果輸出型別,值可以是report(標準分析報告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便於閱讀 |
--since |
從什麼時間開始分析,值為字串,可以是指定的某個”yyyy-mm-dd (hh:mm:ss)”格式的時間點,也可以是簡單的一個時間值:s(秒)、h(小時)、m(分鐘)、d(天),如12h就表示從12小時前開始統計。 |
--until |
截止時間,配合—since可以分析一段時間內的慢查詢 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014851/viewspace-2867430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql運維利器percona-toolkit工具之pt-query-digestMySql運維
- Glance基礎服務運維運維
- 全面的MySQL基礎運維知識點(一)MySql運維
- 全面的MySQL基礎運維知識點(三)MySql運維
- 全面的MySQL基礎運維知識點(二)MySql運維
- 用自動化運維工具解放IT運維運維
- mysql運維案例MySql運維
- 自動化運維工具之Puppet基礎入門運維
- Redis日常運維-基礎認識Redis運維
- mongodb基礎運維能力定義MongoDB運維
- 運維監控工具運維
- Jumpserver基礎運維-01介紹Server運維
- Heartbeat基礎知識-運維小結運維
- 《前端運維》一、Linux基礎--基礎命令(1)前端運維Linux
- Linux運維都需要做什麼?0基礎Linux運維學習Linux運維
- 零基礎怎麼學Linux運維?學習Linux運維有Linux運維
- 《前端運維》一、Linux基礎--05Shell運算子前端運維Linux
- 【IT運維】運維告警方式有哪些?哪個工具好用?運維
- 【上海線下活動】基礎運維及運維架構演進 -- 滬江技術沙龍運維架構
- 8. 傻瓜運維工具運維
- ORACLE基礎運維命令操作手冊Oracle運維
- Keepalived基礎知識-運維小結運維
- IT運維之自動化運維運維
- 這 4 種 Redis 常用運維工具都不會?你算啥運維人Redis運維
- 簡化IT運維工作,就要學會使用自動化運維工具!運維
- Linux運維人員必會開源運維工具體系Linux運維
- 回首五年運維,運維需要思考運維
- Jumpserver基礎運維-02檔案傳輸Server運維
- 基礎運維常見工作內容有哪些?運維
- 50%運維都迷糊的Socket基礎知識!運維
- ELK基礎架構解說-運維筆記架構運維筆記
- TimesTen運維技能檢測題-基礎篇運維
- 零基礎轉行學linux運維怎麼樣?linux運維學習方法Linux運維
- linux運維工具psshLinux運維
- Redis效能分析和運維工具Redis運維
- MySQL運維5-Mycat配置MySql運維
- 【IT運維監控】幾大運維監控工具優缺點介紹運維
- 智慧運維基礎-運維知識庫之ETL運維