percona-toolkit工具的使用

來源:互聯網
上載者:User

標籤:

percona-toolkit是一組進階命令列工具的集合,可以查看當前服務的摘要資訊,磁碟檢測,分析慢查詢日誌,尋找重複索引,實現表同步等等

percona-toolkit 源自 Maatkit 和 Aspersa 工具,這兩個工具是管理 mysql 的最有名的 工具,現在 Maatkit 工具已經不維護了,請大家還是使用 percona-toolkit 吧!這些 工具主要包括開發、效能、配置、監控、複製、系統、實用六大類,作為一個優秀 的 DBA,裡面有的工具非常有用,如果能掌握並加以靈活應用,將能極大的提高工 作效率。

1、安裝

需求

 * Perl v5.8 or newer * Bash v3 or newer * Core Perl modules like Time::HiRes
yum -y install  perl-DBI  perl-DBD-MySQL  perl-TermReadKey perl-devel perl-Time-HiRescd /usr/local/src/wget https://www.percona.com/downloads/percona-toolkit/2.2.15/deb/percona-toolkit_2.2.15-2.tar.gztar -zxf percona-toolkit_2.2.15-2.tar.gzcd percona-toolkit-2.2.15/chmod +x Makefile.PLperl Makefile.PLmake && make installln -s /usr/bin  /usr/local/bin/*

 

2、介紹

1)pt-duplicate-key-checker

功能為從 mysql 表中找出重複的索引和外鍵,這個工具會將重複的索引和外鍵都列出來,並產生了重複資料刪除索引的語句,非常方便

pt-duplicate-key-checker --h localhost --u root --p 123456 -d test

2)pt-online-schema-change

功能為在 alter 操作更改表結構的時候不用鎖定表,也就是說執行 alter 的時候不會阻塞寫和讀取操作,注意執行這個工具的時候必須 做好備份

官方文檔 http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-ch ange.html

工作原理是建立一個和你要執行 alter 操作的表一樣的空表結構,執 行表結構修改,然後從原表中 copy 未經處理資料到表結構修改後的表, 當資料 copy 完成以後就會將原表移走,用新表代替原表,預設動作 是將原表 drop 掉。在 copy 資料的過程中,任何在原表的更新操作都 會更新到新表,因為這個工具在會在原表上建立觸發器,觸發器會將 在原表上更新的內容更新到新表。如果表中已經定義了觸發器這個工 具就不能工作了。

pt-online-schema-change --lock-wait-time=120 --alter="ENGINE=InnoDB" D=database,t=table --executept-online-schema-change --lock-wait-time=120 --alter="ADD COLUMN domain_id INT"D=database,t=table --execute

3)pt-query-advisor

根據一些規則分析查詢語句,對可能的問題提出建議

pt-query-advisor /path/to/slow-query.logpt-query-advisor --type genlog mysql.logpt-query-digest --type tcpdump.txt --print --no-report | pt-query-advisorpt-query-advisor --query "select * from test"pt-query-advisor /path/to/general.logpt-query-advisor /path/to/localhost-slow.log

4)pt-show-grants

正常化和列印 mysql 許可權,讓你在複製、比較 mysql 許可權以及進行版 本控制的時候更有效率

pt-show-grants --h localhost --u root --p 123456pt-show-grants --h localhost --u root --p 123456 -d testpt-show-grants --h localhost --u root --p 123456 -d test --revoke

5)pt-upgrade

在多台伺服器上執行查詢,並比較有什麼不同!這在升級伺服器的時 候非常有用,可以先安裝並導資料到新的伺服器上,然後使用這個工 具跑一下 sql 看看有什麼不同,可以找出不同版本之間的差異

6)pt-index-usage

從 log 檔案中讀取插敘語句,並用 explain 分析他們是如何利用索引。 完成分析之後會產生一份關於索引沒有被查詢使用過的報告

pt-index-usage /path/to/slow.log --h localhost --u root --p 123456 -d test --no-report --create-save-results-database

7)pt-pmp

為查詢程式執行彙總的 GDB 堆疊追蹤,先進性堆疊追蹤,然後將跟蹤資訊匯總

pt-pmp -p 21933pt-pmp -b /usr/local/mysql/bin/mysqld_safe

8)pt-visual-explain

格式化 explain 出來的執行計畫按照 tree 方式輸出,方便閱讀

pt-visual-explain --connect aaa --h localhost --u root --p 123456 -d testpt-visual-explain `mysql --h localhost --u root --p 123456 -d test -e "explain select testx from test where id=1"` |

9、pt-config-diff

比較 mysql 設定檔和伺服器參數

pt-config-diff /usr/local/mysql/share/mysql/my-large.cnf /usr/local/mysql/share/mysql/my-medium.cnf

10、pt-mysql-summary

精細地對 mysql 的配置和 sataus 資訊進行匯總,匯總後你直接看一眼 就能看明白

11)pt-variable-advisor

分析 mysql 的參數變數,並對可能存在的問題提出建議

pt-variable-advisor --h localhost --u root --p 123456 

結果

# WARN delay_key_write: MyISAM index blocks are never flushed until necessary.# WARN innodb_lock_wait_timeout: This option has an unusually long value, which can cause system overload if locks are not being released.# NOTE innodb_max_dirty_pages_pct: The innodb_max_dirty_pages_pct is lower than the default.# NOTE low_priority_updates: The server is running with non-default lock priority for updates.# NOTE max_binlog_size: The max_binlog_size is smaller than the default of 1GB.# NOTE port: The server is listening on a non-default port.# NOTE read_buffer_size-1: The read_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.# NOTE read_rnd_buffer_size-1: The read_rnd_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.# CRIT slave_skip_errors: You should not set this option.# NOTE sort_buffer_size-1: The sort_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.# NOTE tx_isolation-1: This server‘s transaction isolation level is non-default.# NOTE innodb_data_file_path: Auto-extending InnoDB files can consume a lot of disk space that is very difficult to reclaim later.# WARN log_output: Directing log output to tables has a high performance impact.

12)pt-deadlock-logger

提取和記錄 mysql 死結的相關資訊,收集和儲存 mysql 上最近的死結資訊,可以直接列印死結資訊和儲存 死結資訊到資料庫中,死結資訊包括髮生死結的伺服器、最近發生死 鎖的時間、死結線程 id、死結的事務 id、發生死結時事務執行了多長 時間等等非常多的資訊

13)pt-fk-error-logger

提取和記錄 mysql 外鍵錯誤資訊,通過SHOW INNODB STATUS提取和儲存mysql資料庫最近發生的外鍵 錯誤資訊。可以通過參數控制直接列印錯誤資訊或者將錯誤資訊儲存 到資料庫的表中

14)pt-mext

並行查看 SHOW GLOBAL STATUS 的多個樣本的資訊,原理:pt-mext 執行你指定的 COMMAND,並每次讀取一行結果,把 空行分割的內容儲存到一個一個的臨時檔案中,最後結合這些臨時文 件並行查看結果

15)pt-query-digest

分析查詢執行日誌,併產生一個查詢報告,為 MySQL、PostgreSQL、 memcached 過濾、重放或者轉換語句

16)pt-trend

居於一組時間序列的資料點做統計,讀取一個慢查詢日誌,並輸出統計資訊。也可以指定多個檔案。如果 不指定檔案的話直接從標準輸入中讀取資訊

17)pt-heartbeat

監控 mysql 複寫延遲,測量複製落後主 mysql 或者主 PostgreSQL 多少時間,你可以使用這個 指令碼去更新主或者監控複製

原理:pt-heartbeat 通過真實的複製資料來確認 mysql 和 postgresql 複寫延遲,這個避免了對複製機制的依賴,從而能得出準確的落後複 制時間,包含兩部分:第一部分在主上 pt-heartbeat 的--update 線程 會在指定的時間間隔更新一個時間戳記,第二部分是 pt-heartbeat 的 --monitor 線程或者--check 線程串連到從上檢查複製的心跳記錄(前 面更新的時間戳記),並和當前系統時間進行比較,得出時間的差異。 你可以手工建立 heartbeat 表或者添加--create-table 參數,推薦使用 MEMORY 引擎

18)pt-slave-delay

設定從伺服器落後於主伺服器指定時間

原理:通過啟動和停止複製 sql 線程來設定從落後於主指定時間。默 認是基於從上 relay 日誌的二進位日誌的位置來判斷,因此不需要連 接到主伺服器,如果 IO 進程不落後主伺服器太多的話,這個檢查方 式工作很好,如果網路通暢的話,一般 IO 線程落後主通常都是毫秒 層級。一般是通過--delay and --delay"+"--interval 來控制。--interval 是 指定檢查是否啟動或者停止從上 sql 線程的頻繁度,預設的是 1 分鐘 檢查一次

19)pt-slave-find

尋找和列印 mysql 所有從伺服器複製層級關係

原理:串連 mysql 主伺服器並尋找其所有的從,然後列印出所有從服 務器的層級關係

20)pt-slave-restart

監視 mysql 複製錯誤,並嘗試重啟 mysql 複製當複製停止的時候,監視一個或者多個 mysql 複製錯誤,當從停止的時候嘗試重新啟動複 制。你可以指定跳過的錯誤並運行從到指定的日誌位置

21)pt-table-checksum

檢查 mysql 複製一致性

工作原理:pt-table-checksum 在主上執行檢查語句線上檢查 mysql 複 制的一致性,產生 replace 語句,然後通過複製傳遞到從,再通過 update 更新 master_src 的值。通過檢測從上 this_src 和 master_src 的 值從而判斷複製是否一致。 注意:使用的時候選擇業務地峰的時候運行,因為啟動並執行時候會造成 表的部分記錄鎖定。使用--max-load 來指定最大的負載情況,如果達 到那個負載這個暫停運行。如果發現有不一致的資料,可以使用 pt-table-sync 工具來修複。 注意:和 1.0 版本不同,新版本的 pt-table-checksum 只需要在 master 上執行即可。 通過 –explain 參數再結合二進位日誌就可以看出指令碼的工作原理, 如我的 test 庫有一個名字為 zhang 的表,我們通過抓取二進位日誌來 查看

22)pt-table-sync

高效同步 mysql 表的資料

原理:總是在主上執行資料的更改,再同步到從上,不會直接更改成 從的資料,在主上執行更改是基於主上現在的資料,不會更改主上的 資料。注意使用之前先備份你的資料,避免造成資料的丟失.執行 execute 之前最好先換成--print 或--dry-run 查看一下會變更哪些資料

23)pt-diskstats

是一個對 GUN/LINUX 的互動式監控工具,為 GUN/LINUX 列印磁碟 io 統計資訊,和 iostat 有點像,但是這個工 具是互動式並且比 iostat 更詳細。可以分析從遠程機器收集的資料

24)pt-fifo-split

類比切割檔案並通過管道傳遞給先入先出隊列而不用真正的切割文 件,pt-fifo-split 讀取大檔案中的資料並列印到 fifo 檔案,每次達到指定行 數就往 fifo 檔案中列印一個 EOF 字元,讀取完成以後,關閉掉 fifo 文 件並移走,然後重建 fifo 檔案,列印更多的行。這樣可以保證你每次 讀取的時候都能讀取到制定的行數直到讀取完成。注意此工具只能工 作在類 unix 作業系統。這個程式對大檔案的資料匯入資料庫非常有 用,具體的可以查看 http://www.mysqlperformanceblog.com/2008/07 /03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/。

25)pt-summary

友好地收集和顯示系統資訊概況,此工具並不是一個調優或者診斷工 具,這個工具會產生一個很容易進行比較和發送郵件的報告

原理:此工具會運行和多命令去收集系統狀態和配置資訊,先儲存到 臨時目錄的檔案中去,然後運行一些unix命令對這些結果做格式化, 最好是用 root 使用者或者有許可權的使用者運行此命令

26)pt-stalk

出現問題的時候收集 mysql 的用於診斷的資料,pt-stalk 等待觸發條件觸發,然後收集資料協助錯誤診斷,它被設計 成使用 root 許可權啟動並執行守護進程,因此你可以診斷那些你不能直接 觀察的間歇性問題。預設的診斷觸發條件為 SHOW GLOBAL STATUS。 也可以指定 processlist 為診斷觸發條件 ,使用--function 參數指定

27)pt-archiver

將 mysql 資料庫中表的記錄歸檔到另外一個表或者檔案,也可以直接 進行記錄的刪除操作

這個工具只是歸檔舊的資料,不會對線上資料的 OLTP 查詢造成太大 影響,你可以將資料插入另外一台伺服器的其他表中,也可以寫入到 一個檔案中,方便使用 load data infile 命令匯入資料。另外你還可以 用它來執行 delete 操作。這個工具預設的會刪除源中的資料。使用 的時候請注意

28)pt-find

尋找 mysql 表並執行指定的命令,和 gnu 的 find 命令類似

29)pt-kill

Kill 掉符合指定條件 mysql 語句,假如沒有指定檔案的話pt-kill串連到mysql並通過SHOW PROCESSLIST 找到指定的語句,反之 pt-kill 從包含 SHOW PROCESSLIST 結果的檔案 中讀取 mysql 語句

 

percona-toolkit工具的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.