溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

pt(Percona Toolkit)工具介紹

發(fā)布時(shí)間:2020-06-22 14:08:10 來(lái)源:網(wǎng)絡(luò) 閱讀:3275 作者:輕狂書(shū)生999 欄目:MySQL數(shù)據(jù)庫(kù)

       pt(Percona Toolkit)工具介紹


.介紹
1.找出重復(fù)的索引和外鍵

    pt-duplicate-key-checker

例子:[root@node1 ~]# pt-duplicate-key-checker --user=root --password='abc123'

# ########################################################################

# Summary of indexes                                                      

# ########################################################################

 

# Total Indexes  89


這個(gè)工具會(huì)將重復(fù)的索引和外鍵都列出來(lái),并生成了刪除重復(fù)索引的語(yǔ)句,非常方便

2.執(zhí)行alter的時(shí)候不會(huì)阻塞寫(xiě)和讀取操作

    pt-online-schema-change

非常有名的工具,工作原理是創(chuàng)建一個(gè)和你要執(zhí)行alter操作的表一樣的空表結(jié)構(gòu),執(zhí)行表結(jié)構(gòu)修改,然后從原表中先創(chuàng)建一個(gè)觸發(fā)器,把新插入和更改的數(shù)據(jù)同步到新表,再copy原始數(shù)據(jù)到表結(jié)構(gòu)修改后的表,當(dāng)數(shù)據(jù)copy完成以后就會(huì)將原表移走,用新表代替原表,默認(rèn)動(dòng)作是將原表drop掉。所以,如果表中已經(jīng)定義了觸發(fā)器這個(gè)工具就不能工作了。也要注意數(shù)據(jù)的備份問(wèn)題.

3.分析日志記錄里面的sql或者直接整條sql,并提出建議

    pt-query-advisor

實(shí)際意義不大,對(duì)于分析大文件容易出現(xiàn)卡死.

4.格式化顯示mysql權(quán)限

    pt-show-grants

例子:[root@node1 ~]# pt-show-grants --user=root --password='abc123'

實(shí)際意義不大,主要是比較mysql權(quán)限以及進(jìn)行版本控制

5.在多臺(tái)服務(wù)器上執(zhí)行查詢,并比較有什么不同

    pt-upgrade

這在升級(jí)服務(wù)器的時(shí)候非常有用,可以先安裝并導(dǎo)數(shù)據(jù)到新的服務(wù)器上,然后使用這個(gè)工具跑一下sql看看有什么不同,可以找出不同版本之間的差異。

6.用explain分析sql如何利用索引并生成報(bào)告

    pt-index-usage

可以直接從慢查詢中獲取sql,F(xiàn)ILE文件中的sql格式必須和慢查詢中個(gè)是一致,如果不是一直需要用pt-query-digest轉(zhuǎn)換一下。也可以不生成報(bào)告直接保存到數(shù)據(jù)庫(kù)中

7.查詢程序執(zhí)行聚合的GDB堆棧跟蹤并匯總

    pt-pmp

看起來(lái)很復(fù)雜,其實(shí)屬于底層程序行為效率跟蹤

8.格式化explain出來(lái)的執(zhí)行計(jì)劃按照tree方式輸出

    pt-visual-explain

沒(méi)有實(shí)際意義,只是方便閱讀

9.比較mysql配置文件和服務(wù)器參數(shù)

    pt-config-diff

最少必須指定兩個(gè)配置文件源,就像unix下面的diff命令一樣,如果配置完全一樣就不會(huì)輸出任何東西,有時(shí)候用來(lái)排除配置差異造成的問(wèn)題.

10.對(duì)mysql的配置和sataus信息進(jìn)行匯總

    pt-mysql-summary

連接mysql后查詢出status和配置信息保存到臨時(shí)目錄中,然后用awk和其他的腳本工具進(jìn)行格式化

11.分析mysql的參數(shù)變量并給出建議

    pt-variable-advisor

實(shí)際意義有限,還是按自己需求來(lái)配置最實(shí)際,特別是多實(shí)例場(chǎng)景,這個(gè)建議毫無(wú)意義.

12.匯總mysql死鎖的相關(guān)信息

    pt-deadlock-logger

收集和保存mysql上最近的死鎖信息,可以直接打印死鎖信息和存儲(chǔ)死鎖信息到數(shù)據(jù)庫(kù)中,死鎖信息包括發(fā)生死鎖的服務(wù)器、最近發(fā)生死鎖的時(shí)間、死鎖線程id、死鎖的事務(wù)id、發(fā)生死鎖時(shí)事務(wù)執(zhí)行了多長(zhǎng)時(shí)間等等非常多的信息,對(duì)于頻繁出現(xiàn)死鎖的情況,建議開(kāi)一段時(shí)間來(lái)收集信息.

13.匯總mysql外鍵錯(cuò)誤信息

    pt-fk-error-logger

通過(guò)SHOW INNODB STATUS提取和保存mysql數(shù)據(jù)庫(kù)最近發(fā)生的外鍵錯(cuò)誤信息。可以通過(guò)參數(shù)控制直接打印錯(cuò)誤信息或者將錯(cuò)誤信息存儲(chǔ)到數(shù)據(jù)庫(kù)的表中.然而現(xiàn)在很少用外鍵了,也不建議用外鍵.

14.查看SHOW GLOBAL STATUS的多個(gè)樣本的信息

    pt-mext

實(shí)際意義不大,手動(dòng)執(zhí)行然后分析其實(shí)也不難.

15.分析sql日志并生成報(bào)告,最后給出建議

    pt-query-digest

很出名的工具,多用來(lái)分析統(tǒng)計(jì)慢查詢,也可以統(tǒng)計(jì)一般sql日志,運(yùn)行速度快,信息清晰.它可以分析binlog、General log、slowlog,也可以通過(guò)SHOW PROCESSLIST或者通過(guò)tcpdump抓取的MySQL協(xié)議數(shù)據(jù)來(lái)進(jìn)行分析??梢园逊治鼋Y(jié)果輸出到文件中,分析過(guò)程是先對(duì)查詢語(yǔ)句的條件進(jìn)行參數(shù)化,然后對(duì)參數(shù)化以后的查詢進(jìn)行分組統(tǒng)計(jì),統(tǒng)計(jì)出各查詢的執(zhí)行時(shí)間、次數(shù)、占比等,可以借助分析結(jié)果找出問(wèn)題進(jìn)行優(yōu)化。

16.按時(shí)間統(tǒng)計(jì)sql日志并生成報(bào)告

    pt-trend

實(shí)際意義不大,例如:讀取本地慢查詢?nèi)罩静⑤敵鼋y(tǒng)計(jì)信息.

17.監(jiān)控mysql復(fù)制延遲

    pt-heartbeat

會(huì)生成一個(gè)數(shù)據(jù)表,記錄延時(shí)時(shí)間,不過(guò)功能做得不是太好,如果沒(méi)有數(shù)據(jù)庫(kù)完全控制權(quán)或者網(wǎng)絡(luò)問(wèn)題,還是慎用,容易造成數(shù)據(jù)不一致.

18.設(shè)置從服務(wù)器落后于主服務(wù)器指定時(shí)間

    pt-slave-delay

建議不用,功能做得不好,容易搞掛主從結(jié)構(gòu),到時(shí)不得不重做主從就麻煩了.

19.查找和打印mysql所有從服務(wù)器復(fù)制層級(jí)關(guān)系

    pt-slave-find

連接mysql主服務(wù)器并查找其所有的從,然后打印出所有從服務(wù)器的層級(jí)關(guān)系。

20.監(jiān)視mysql復(fù)制錯(cuò)誤,并嘗試重啟mysql復(fù)制

    pt-slave-restart

監(jiān)視一個(gè)或者多個(gè)mysql復(fù)制錯(cuò)誤,當(dāng)從停止的時(shí)候嘗試重新啟動(dòng)復(fù)制。屬于監(jiān)控相關(guān)

21.檢查mysql復(fù)制一致性

    pt-table-checksum

很出名的工具,只需要在master上執(zhí)行即可,通常總是和pt-table-sync協(xié)作。工作原理:pt-table-checksum在主上執(zhí)行檢查語(yǔ)句在線檢查mysql復(fù)制的一致性,然后通過(guò)復(fù)制傳遞到從,再通過(guò)update更新master_src的值。通過(guò)檢測(cè)從上this_src和master_src的值從而判斷復(fù)制是否一致。最后把檢查報(bào)告寫(xiě)到某個(gè)位置,等待pt-table-sync調(diào)用。根據(jù)原理來(lái)說(shuō),它對(duì)于binlog_format要求是Statement和Mixed才能正常使用,對(duì)于row模式來(lái)說(shuō),則會(huì)報(bào)錯(cuò)不能使用。所以使用前要注意進(jìn)行更改配置,set global binlog_format=STATEMENT來(lái)使用,不然就使用不了,運(yùn)行完改回去就可以了。也要注意需要一定權(quán)限,最好用root.

22.同步mysql主從庫(kù)差異表的數(shù)據(jù)

    pt-table-sync

很出名的工具,主從復(fù)制本身存在一些缺陷,在極端情況下會(huì)出現(xiàn)從庫(kù)多了數(shù)據(jù),或者少了數(shù)據(jù)的情況,這個(gè)時(shí)候就需要人為修復(fù),這個(gè)工具可以幫到我們。原理:通過(guò)pt-table-checksum得到的數(shù)據(jù),列出或直接執(zhí)行修改復(fù)制的差異數(shù)據(jù),使其重新同步。總是在主上執(zhí)行數(shù)據(jù)的更改,再同步到從上,不會(huì)直接更改成從的數(shù)據(jù),在主上執(zhí)行更改是基于主上現(xiàn)在的數(shù)據(jù),不會(huì)更改主上的數(shù)據(jù)。注意使用之前先備份你的數(shù)據(jù),避免造成數(shù)據(jù)的丟失.執(zhí)行execute之前最好先換成--print或--dry-run查看一下會(huì)變更哪些數(shù)據(jù)。

23.磁盤(pán)io監(jiān)控工具

    pt-diskstats

iostat有點(diǎn)像,但是這個(gè)工具是交互式并且比iostat更詳細(xì)。也可以分析從遠(yuǎn)程機(jī)器收集的數(shù)據(jù)。

24.模擬切割文件并通過(guò)管道傳遞給先入先出隊(duì)列

    pt-fifo-split

實(shí)際用的不多,通過(guò)讀取大文件中的數(shù)據(jù)并打印到fifo文件,每次達(dá)到指定行數(shù)就往fifo文件中打印一個(gè)EOF字符,讀取完成以后,關(guān)閉掉fifo文件并移走,然后重建fifo文件,打印更多的行。這樣可以保證你每次讀取的時(shí)候都能讀取到制定的行數(shù)直到讀取完成。注意此工具只能工作在類(lèi)unix操作系統(tǒng)。這個(gè)程序?qū)Υ笪募臄?shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)非常有用,

25.顯示系統(tǒng)信息概況

    pt-summary

此工具會(huì)運(yùn)行和多命令去收集系統(tǒng)狀態(tài)和配置信息,先保存到臨時(shí)目錄的文件中去,然后運(yùn)行一些unix命令對(duì)這些結(jié)果做格式化,最好是用root用戶或者有權(quán)限的用戶運(yùn)行此命令。

26.收集mysql的用于診斷的數(shù)據(jù)

    pt-stalk

遇到一些疑難雜癥的時(shí)候,可以拿來(lái)測(cè)試并獲取問(wèn)題數(shù)據(jù).原理:pt-stalk等待觸發(fā)條件觸發(fā),然后收集數(shù)據(jù)幫助錯(cuò)誤診斷,它被設(shè)計(jì)成使用root權(quán)限運(yùn)行的守護(hù)進(jìn)程,因此你可以診斷那些你不能直接觀察的間歇性問(wèn)題。默認(rèn)的診斷觸發(fā)條件為SHOW GLOBAL STATUS。也可以指定processlist為診斷觸發(fā)條件 ,使用--function參數(shù)指定。

27.將mysql數(shù)據(jù)庫(kù)中表的記錄歸檔到另外一個(gè)表或者文件

    pt-archiver

這個(gè)工具只是歸檔舊的數(shù)據(jù),不會(huì)對(duì)線上數(shù)據(jù)的OLTP查詢?cè)斐商笥绊?,你可以將?shù)據(jù)插入另外一臺(tái)服務(wù)器的其他表中,也可以寫(xiě)入到一個(gè)文件中,方便使用load data infile命令導(dǎo)入數(shù)據(jù)。另外你還可以用它來(lái)執(zhí)行delete操作。這個(gè)工具默認(rèn)的會(huì)刪除源中的數(shù)據(jù)。使用的時(shí)候請(qǐng)注意。

28.查找mysql表并執(zhí)行指定的命令,和find命令類(lèi)似。

    pt-find

庫(kù)少的話用途不大,當(dāng)你的庫(kù)很多,表也很多的時(shí)候,而又忘記了自己要查的表名的時(shí)候,還是挺有用的.

29.Kill掉符合指定條件mysql語(yǔ)句

    pt-kill

加入沒(méi)有指定文件的話pt-kill連接到mysql并通過(guò)SHOW PROCESSLIST找到指定的語(yǔ)句,反之pt-kill從包含SHOW PROCESSLIST結(jié)果的文件中讀取mysql語(yǔ)句.例如:刪除運(yùn)行超過(guò)60秒的連接.


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI