從7乘24到朝九晚五,DBA效率提升必備工具匯總!
在DBA的日常工作有很多事情,比如:在線更改數(shù)據(jù)表結(jié)構(gòu),校驗主從數(shù)據(jù),檢查數(shù)據(jù)庫狀態(tài),分析慢查詢,如果人工去完成做起來真的很麻煩,很費時,足以讓你達到996!
但是有一些數(shù)據(jù)庫程序員,他們總是可以拿著996的薪水,干著955的活,是什么提高了DBA的“生產(chǎn)力”呢?
是科技推動了生產(chǎn)力!
今天小編就同大家分享一些在MySQL優(yōu)化工作中實用的PT工具,幫你達到事半功倍!
Percona Toolkit簡稱 pt 工具,是Percona公司開發(fā)用于管理MySQL的工具,功能包括檢查主從復(fù)制的數(shù)據(jù)一致性、檢查重復(fù)索引、定位IO占用高的表文件、分析慢日志、在線DDL等。
PT安裝
- sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
- yum list | grep percona-toolkit
安裝好PT,接下來介紹一些實用的PT工具以及它們使用的使用吧~
1. pt-duplicate-key-checker
說明:此工具主要用來檢查表的重復(fù)索引,并給出相關(guān)的建議。
- pt-duplicate-key-checker -h 127.0.0.1 -u root -p 123456 -d xuanyuan -t rs_hc_status
- h:指定要檢查的host
- u:數(shù)據(jù)庫的用戶名
- p:數(shù)據(jù)庫的密碼
- d:要檢查的數(shù)據(jù)庫的名稱
- t:要檢查的表
2. pt-kill
pt-kill 是一個簡單而且很實用的查殺mysql線程和查詢的工具,主要是為了防止一些大/復(fù)雜/長時間查詢占用數(shù)據(jù)庫及系統(tǒng)資源,而對線上業(yè)務(wù)造成影響的情況。
說明如下:
(1) 匹配processlist的查殺線程或者會話的重要參數(shù) 舉幾個匹配例子如下:
- 按照命令command查殺線程
- --match-command多個command之間用 | 分隔,否則會失效。
- --ignore-host/--match-host
- --ignore-db/--match-db
- --ignore-user/--match-user
(2) 行為參數(shù) Action:
- kill 殺掉連接并且退出
- kill-query 只殺掉連接執(zhí)行的語句,但是線程不會被終止
- print 打印滿足條件的語句
(3) 其它重要參數(shù)
(4) 常用使用如下:
每10秒檢查一次,發(fā)現(xiàn)有sleeping的進程就給干掉
- pt-kill --match-command Sleep --victims all --interval 10 --host=localhost --port=3306 --user=root --password=********* --kill --print -S
更多使用參考下圖:
3. pt-mysql-summary
查詢mysql的概要信息。
- pt-mysql-summary --host 127.0.0.1 --user root --password 123456 ;
參數(shù)說明:
- host:指定host 地址
- user:指定連接數(shù)據(jù)庫的用戶名
- password:指定連接數(shù)據(jù)庫的密碼
輸出內(nèi)容分析:
簡要信息:主要包括mysql啟動時間、版本、數(shù)據(jù)目錄,連接數(shù),主從信息。
- processlist信息
- mysql狀態(tài)相關(guān)信息
- Table cache
- InnoDB信息
- Variables參數(shù)變量信息
- Configuration File
4. pt-query-digest
pt-query-digest主要用來分析mysql慢日志。
5. pt-table-checksum校驗與pt-table-sync修復(fù)數(shù)據(jù)
- pt-table-checksum與pt-table-sync,通常兩個結(jié)合起來使用,前者主要用于數(shù)據(jù)的校驗,驗證主從是否一致;后者主要用來修復(fù)數(shù)據(jù),兩者一般情況結(jié)合起來用可以修復(fù)數(shù)據(jù)不一致的問題。
- pt-table-checksum驗證主從數(shù)據(jù)一致性的工具,當(dāng)有捕獲到不一致問題的時候,就會返回一個非0的結(jié)果。但是他只能查找數(shù)據(jù)的不一致。
- pt-table-checksum在運行的時候是基于statement復(fù)制格式的,如果我們是ROW格式,需要在執(zhí)行的時候加上--no-check-binlog-format參數(shù)。
(1) pt-table-checksum
我們縮小檢查范圍,單獨檢查某一個庫,:
- [root@localhost bin]# pt-table-checksum --nocheck-replication-filters --replicate=rep_test.checksums --no-check-binlog-format --databases=xuanyuan h=192.168.1.181,u=root,p=123456,P=3306
參數(shù)說明:
輸出內(nèi)容:
檢查結(jié)果說明:
(2) pt-table-sync
如果檢測到有數(shù)據(jù)是不一致的發(fā)方,需要借助pt-table-sync進行修復(fù)。
恢復(fù)不一致數(shù)據(jù):
修復(fù)完成后,主從數(shù)據(jù)將會達到一致狀態(tài)。
(3) pt-table-sync的一些使用案例