percona-toolkit使用教程之實用類工具
1. pt-archiver
功能介紹:
將mysql數據庫中表的記錄歸檔到另外一個表或者文件
用法介紹:
pt-archiver [OPTION...] --source DSN --where WHERE
這個工具只是歸檔舊的數據,不會對線上數據的OLTP查詢造成太大影響,你可以將數據插入另外一台服務器的其他表中,也可以寫入到一個文件中,方便使用load data infile命令導入數據。另外你還可以用它來執行delete操作。這個工具默認的會刪除源中的數據。使用的時候請注意。
使用示例:
范例1:將192.168.3.135上的sanmao庫的oss_log表id小於100000的記錄轉移到192.168.3.92上的sanmao庫,並歸檔到oss_log_archive_20120605.log文件中:
pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --dest h=192.168.3.92,D=sanmao,t=oss_log --file '/var/log/oss_log_archive_20120605.log' --where "id<=100000" --commit-each
范例2:將192.168.3.135上的sanmao庫的oss_log小於160000的記錄歸檔到oss_log_archive_20120607.log文件中:
pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --file '/var/log/oss_log_archive_20120607.log' --where "id<=160000" --commit-each
范例3:刪除192.168.3.135上的sanmao庫的oss_log表中id小於167050的記錄:
pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --purge --where 'id<=167050'
注意:如果是字符集是utf8的話,需要在my.cnf中的[client]下面添加default-character-set = utf8,否則導出的文件內容中文會亂碼。
2. pt-find
功能介紹:
查找mysql表並執行指定的命令,和gnu的find命令類似。
用法介紹:
pt-find [OPTION...] [DATABASE...]
默認動作是打印數據庫名和表名
使用示例:
范例1:查找192.168.3.135中1天以前創建的InnoDB的表 ,並打印。
pt-find --ctime +1 --host=192.168.3.135 --engine InnoDB --user=root --password=zhang@123
范例2:查找192.168.3.135中1天以前更改過的數據庫名字匹配%hostsops%的並且引擎為MYISAM的表,並將表的引擎更改為InnoDB引擎。
pt-find --mtime +1 --dblike hostsops --engine MyISAM --host=192.168.3.135 --user=root --password=zhang@123 --exec "ALTER TABLE %D.%N ENGINE=InnoDB"
范例3:查找192.168.3.135中aaa庫和zhang庫中的空表,並刪除。
pt-find --empty aaa zhang --host=192.168.3.135 --user=root --password=zhang@123 --exec-plus "DROP TABLE %s"
范例4:查找192.168.3.135中超過100M的表:
pt-find --tablesize +100M --host=192.168.3.135 --user=root --password=zhang@123
3. pt-kill
功能介紹:
Kill掉符合指定條件mysql語句
用法介紹:
pt-kill [OPTIONS]
加入沒有指定文件的話pt-kill連接到mysql並通過SHOW PROCESSLIST找到指定的語句,反之pt-kill從包含SHOW PROCESSLIST結果的文件中讀取mysql語句
使用示例:
范例1:查找192.168.3.135服務器運行時間超過60s的語句,並打印
pt-kill --busy-time 60 --print --host=192.168.3.135 --user=root --password=zhang@123
范例2:查找192.168.3.135服務器運行時間超過60s的語句,並kill
pt-kill --busy-time 60 --kill --host=192.168.3.135 --user=root --password=zhang@123
范例3:從proccesslist文件中查找執行時間超過60s的語句
mysql -uroot -pzhang@123 -h192.168.3.135 -e "show processlist" > processlist.txt
pt-kill --test-matching processlist.txt --busy-time 60 --print
Percona Toolkit 的詳細介紹:請點這裡
Percona Toolkit 的下載地址:請點這裡