歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Percona Toolkit系列之開發工具類使用

Percona Toolkit系列之開發工具類使用

日期:2017/2/28 14:35:35   编辑:Linux教程

percona-toolkit工具包的使用教程之開發類工具

1. pt-duplicate-key-checker

功能介紹:

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

用法介紹:

pt-duplicate-key-checker [OPTION...] [DSN]

包含比較多的選項,具體的可以通過命令pt-duplicate-key-checker --help來查看具體支持那些選項,我這裡就不一一列舉了。DNS為數據庫或者表。

使用示例:

查看test數據庫的重復索引和外鍵使用情況使用如下命令

pt-duplicate-key-checker --host=localhost --user=root --password=zhang@123 --databases=test

2. pt-online-schema-change

功能介紹:

功能為在alter操作更改表結構的時候不用鎖定表,也就是說執行alter的時候不會阻塞寫和讀取操作,注意執行這個工具的時候必須做好備份,操作之前最好詳細讀一下官方文檔http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html。

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

用法介紹:

pt-online-schema-change [OPTIONS] DSN

options可以自行查看help,DNS為你要操作的數據庫和表。

這裡有兩個參數需要介紹一下:

--dry-run 這個參數不建立觸發器,不拷貝數據,也不會替換原表。只是創建和更改新表。

--execute 這個參數的作用和前面工作原理的介紹的一樣,會建立觸發器,來保證最新變更的數據會影響至新表。注意:如果不加這個參數,這個工具會在執行一些檢查後退出。這一舉措是為了讓使用這充分了解了這個工具的原理,同時閱讀了官方文檔。

使用示例:

在線更改表的的引擎,這個尤其在整理innodb表的時候非常有用,示例如下:

pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ENGINE=InnoDB" D=test,t=oss_pvinfo2 --execute

從下面的日志中可以看出它的執行過程:

Altering `test`.`oss_pvinfo2`...

Creating new table...

Created new table test._oss_pvinfo2_new OK.

Altering new table...

Altered `test`.`_oss_pvinfo2_new` OK.

Creating triggers...

Created triggers OK.

Copying approximately 995696 rows...

Copied rows OK.

Swapping tables...

Swapped original and new tables OK.

Dropping old table...

Dropped old table `test`.`_oss_pvinfo2_old` OK.

Dropping triggers...

Dropped triggers OK.

Successfully altered `test`.`oss_pvinfo2`.

在來一個范例,大表添加字段的,語句如下:

pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ADD COLUMN domain_id INT" D=test,t=oss_pvinfo2 --execute

3. pt-query-advisor

功能介紹:

根據一些規則分析查詢語句,對可能的問題提出建議,這些評判規則大家可以看一下官網的鏈接:http://www.percona.com/doc/percona-toolkit/2.1/pt-query-advisor.html,這裡就不詳細列舉了。那些查詢語句可以來自慢查詢文件、general日志文件或者使用pt-query-digest截獲的查詢語句。目前這個版本有bug,當日志文件非常大的時候會需要很長時間甚至進入死循環。

用法介紹:

pt-query-advisor /path/to/slow-query.log

pt-query-advisor --type genlog mysql.log

pt-query-digest --type tcpdump.txt --print --no-report | pt-query-advisor

使用示例:

分析一個語句的例子:

pt-query-advisor --query "select * from aaa"

分析general log中的查詢語句的例子:

pt-query-advisor /data/dbdata/general.log

分析慢查詢中的查詢語句的例子:

pt-query-advisor /data/dbdata/localhost-slow.log

4. pt-show-grants

功能介紹:

規范化和打印mysql權限,讓你在復制、比較mysql權限以及進行版本控制的時候更有效率!

用法介紹:

pt-show-grants [OPTION...] [DSN]

選項自行用help查看,DSN選項也請查看help,選項區分大小寫。

使用示例:

查看指定mysql的所有用戶權限:

pt-show-grants --host='localhost' --user='root' --password='zhang@123'

查看執行數據庫的權限:

pt-show-grants --host='localhost' --user='root' --password='zhang@123' --database='hostsops'

查看每個用戶權限生成revoke收回權限的語句:

pt-show-grants --host='localhost' --user='root' --password='zhang@123' --revoke

5. pt-upgrade

功能介紹:

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

用法介紹:

pt-upgrade [OPTION...] DSN [DSN...] [FILE]

比較文件中每一個查詢語句在兩個主機上執行的結果,並檢查在每個服務器上執行的結果、錯誤和警告。

使用示例:

只查看某個sql在兩個服務器的運行結果范例:

pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data limit 5"

查看文件中的對應sql在兩個服務器的運行結果范例:

pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 aaa.sql

查看慢查詢中的對應的查詢SQL在兩個服務器的運行結果范例:

pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 slow.log

此外還可以執行compare的類型,主要包含三個query_times,results,warnings,比如下面的例子,只比較sql的執行時間

pt-upgrade h=192.168.3.91 h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data" --compare query_times

Percona Toolkit 的詳細介紹:請點這裡
Percona Toolkit 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved