Percona-toolkit工具詳解

1. pt工具安裝

[root@master ~]# yum install -y  percona-toolkit-3.1.0-2.el7.x86_64.rpm

2. 常用工具使用介紹

2.1 pt-archiver 歸檔表

# 重要參數(shù)
--limit 100       每次取100行數(shù)據(jù)用pt-archive處理    
--txn-size  100   設(shè)置100行為一個(gè)事務(wù)提交一次郊霎,    
--where 'id<3000'  設(shè)置操作條件    
--progress 5000     每處理5000行輸出一次處理信息    
--statistics       輸出執(zhí)行過程及最后的操作統(tǒng)計(jì)诞仓。(只要不加上--quiet骂际,默認(rèn)情況下pt- archive都會(huì)輸出執(zhí)行過程的)    
--charset=UTF8     指定字符集為UTF8—這個(gè)最后加上不然可能出現(xiàn)亂碼界牡。    
--bulk-delete      批量刪除source上的舊數(shù)據(jù)(例如每次1000行的批量刪除操作)
使用案例:
1.歸檔到數(shù)據(jù)庫

pt-archiver --source h=10.0.0.11,D=world,t=city,u=root,p=123 --dest h=10.0.0.11,D=world,t=city2,u=root,p=123 --where 'id<1000' --no-check-charset --no-delete --limit=100 --commit-each --progress 200 --statistics

2.只清理數(shù)據(jù)

pt-archiver --source h=127.0.0.1,D=world,t=city2,u=root,p=123 --where 'id<100' --purge --limit=1 --no-check-charset

3.只把數(shù)據(jù)導(dǎo)出到外部文件,但是不刪除源表里的數(shù)據(jù)
pt-archiver --source h=10.0.0.11,D=world,t=city,u=root,p=123 --where '1=1' --no-check-charset --no-delete --file="/tmp/archiver.dat" 

2.2 pt-osc

pt-osc工作流程:
1钦椭、檢查更改表是否有主鍵或唯一索引拧额,是否有觸發(fā)器
2、檢查修改表的表結(jié)構(gòu)彪腔,創(chuàng)建一個(gè)臨時(shí)表侥锦,在新表上執(zhí)行ALTER TABLE語句
3、在源表上創(chuàng)建三個(gè)觸發(fā)器分別對(duì)于INSERT UPDATE DELETE操作
4德挣、從源表拷貝數(shù)據(jù)到臨時(shí)表恭垦,在拷貝過程中,對(duì)源表的更新操作會(huì)寫入到新建表中
5格嗅、將臨時(shí)表和源表rename(需要元數(shù)據(jù)修改鎖署照,需要短時(shí)間鎖表)
6、刪除源表和觸發(fā)器吗浩,完成表結(jié)構(gòu)的修改。

##=====================================================##
pt-osc工具限制
1没隘、源表必須有主鍵或唯一索引懂扼,如果沒有工具將停止工作
2、如果線上的復(fù)制環(huán)境過濾器操作過于復(fù)雜右蒲,工具將無法工作
3阀湿、如果開啟復(fù)制延遲檢查,但主從延遲時(shí)瑰妄,工具將暫停數(shù)據(jù)拷貝工作
4陷嘴、如果開啟主服務(wù)器負(fù)載檢查,但主服務(wù)器負(fù)載較高時(shí)间坐,工具將暫停操作
5灾挨、當(dāng)表使用外鍵時(shí)邑退,如果未使用--alter-foreign-keys-method參數(shù),工具將無法執(zhí)行
6劳澄、只支持Innodb存儲(chǔ)引擎表地技,且要求服務(wù)器上有該表1倍以上的空閑空間。

pt-osc之a(chǎn)lter語句限制
1秒拔、不需要包含alter table關(guān)鍵字莫矗,可以包含多個(gè)修改操作,使用逗號(hào)分開砂缩,如"drop clolumn c1, add column c2 int"
2作谚、不支持rename語句來對(duì)表進(jìn)行重命名操作
3、不支持對(duì)索引進(jìn)行重命名操作
4庵芭、如果刪除外鍵妹懒,需要對(duì)外鍵名加下劃線,如刪除外鍵fk_uid, 修改語句為"DROP FOREIGN KEY _fk_uid"

pt-osc之命令模板
## --execute表示執(zhí)行
## --dry-run表示只進(jìn)行模擬測(cè)試
## 表名只能使用參數(shù)t來設(shè)置喳挑,沒有長參數(shù)
pt-online-schema-change \
--host="127.0.0.1" \
--port=3358 \
--user="root" \
--password="root@root" \
--charset="utf8" \
--max-lag=10 \
--check-salve-lag='xxx.xxx.xxx.xxx' \
--recursion-method="hosts" \
--check-interval=2 \
--database="testdb1" \
 t="tb001" \
--alter="add column c4 int" \
--execute

例子:
pt-online-schema-change --user=root --password=123 --host=10.0.0.11 --alter "add column age int default 0" D=test,t=t1 --print --execute

2.3 pt-table-checksum

創(chuàng)建數(shù)據(jù)庫
Create database pt CHARACTER SET utf8;
創(chuàng)建用戶checksum并授權(quán)
GRANT ALL ON *.* TO 'checksum'@'10.0.0.%' IDENTIFIED BY 'checksum';
flush privileges;

--[no]check-replication-filters:是否檢查復(fù)制的過濾器彬伦,默認(rèn)是yes,建議啟用不檢查模式伊诵。
--databases | -d:指定需要被檢查的數(shù)據(jù)庫单绑,多個(gè)庫之間可以用逗號(hào)分隔。
--[no]check-binlog-format:是否檢查binlog文件的格式曹宴,默認(rèn)值yes搂橙。建議開啟不檢查。因?yàn)樵谀J(rèn)的row格式下會(huì)出錯(cuò)笛坦。
--replicate`:把checksum的信息寫入到指定表中区转。
--replicate-check-only:只顯示不同步信息

pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=pt.checksums --create-replicate-table --databases=test --tables=t1 h=10.0.0.11,u=checksum,p=checksum,P=3306

#!/bin/bash
date >> /root/db/checksum.log
pt-table-checksum --nocheck-binlog-format --nocheck-plan
--nocheck-replication-filters --replicate=pt.checksums --set-vars
innodb_lock_wait_timeout=120 --databases UAR_STATISTIC -u'checksum' -p'checksum'
-h'10.0.0.11' >> /root/db/checksum.log
date >> /root/db/checksum.log

2.4 pt-table-sync

主要參數(shù)介紹
--replicate :指定通過pt-table-checksum得到的表.
--databases : 指定執(zhí)行同步的數(shù)據(jù)庫。
--tables :指定執(zhí)行同步的表版扩,多個(gè)用逗號(hào)隔開废离。
--sync-to-master :指定一個(gè)DSN,即從的IP礁芦,他會(huì)通過show processlist或show slave status 去自動(dòng)的找主蜻韭。
h= :服務(wù)器地址,命令里有2個(gè)ip柿扣,第一次出現(xiàn)的是Master的地址肖方,第2次是Slave的地址。
u= :帳號(hào)未状。
p= :密碼俯画。
--print :打印,但不執(zhí)行命令司草。
--execute :執(zhí)行命令艰垂。
pt-table-sync --replicate=pt.checksums h=10.0.0.11,u=root,p=123,P=3306 --print

2.5 mysql死鎖監(jiān)測(cè)


pt-deadlock-logger h='127.0.0.1' --user=root --password=123456

2.6 主鍵沖突檢查

pt-duplicate-key-checker --database=world h='127.0.0.1' --user=root --password=123456

pt-kill 語句

常用參數(shù)說明
--daemonize  放在后臺(tái)以守護(hù)進(jìn)程的形式運(yùn)行泡仗;
--interval  多久運(yùn)行一次,單位可以是s,m,h材泄,d等默認(rèn)是s –不加這個(gè)默認(rèn)是5秒
--victims 默認(rèn)是oldest,只殺最古老的查詢沮焕。這是防止被查殺是不是真的長時(shí)間運(yùn)行的查詢,他們只是長期等待 這種種匹配按時(shí)間查詢拉宗,殺死一個(gè)時(shí)間最高值峦树。
--all 殺掉所有滿足的線程
--kill-query      只殺掉連接執(zhí)行的語句,但是線程不會(huì)被終止
--print               打印滿足條件的語句
--busy-time 批次查詢已運(yùn)行的時(shí)間超過這個(gè)時(shí)間的線程旦事;
--idle-time 殺掉sleep 空閑了多少時(shí)間的連接線程魁巩,必須在--match-command sleep時(shí)才有效—也就是匹配使用 -- –match-command 匹配相關(guān)的語句。
----ignore-command 忽略相關(guān)的匹配姐浮。 這兩個(gè)搭配使用一定是ignore-commandd在前 match-command在后谷遂,
--match-db cdelzone 匹配哪個(gè)庫
command有:Query、Sleep卖鲤、Binlog Dump肾扰、Connect、Delayed insert蛋逾、Execute集晚、Fetch、Init DB区匣、Kill偷拔、Prepare、Processlist亏钩、Quit莲绰、Reset stmt、Table Dump

例子:
---殺掉空閑鏈接sleep 5秒的 SQL 并把日志放到/home/pt-kill.log文件中
/usr/bin/pt-kill  --user=用戶名 --password=密碼 --match-command Sleep  --idle-time 5 --victim all --interval 5 --kill --daemonize -S /tmp/mysql.sock --pid=/tmp/ptkill.pid --print --log=/tmp/pt-kill.log &

---查詢SELECT 超過1分鐘路

/usr/bin/pt-kill --user=用戶名 --password=密碼 --busy-time 60  --match-info "SELECT|select" --victim all --interval 5 --kill --daemonize -S  -S /tmp/mysql.sock --pid=/tmp/ptkill.pid --print --log=/tmp/pt-kill.log &

--- Kill掉 select IFNULl.*語句開頭的SQL

pt-kill --user=用戶名 --password=密碼 --victims all --busy-time=0 --match-info="select IFNULl.*" --interval 1 -S /tmp/mysqld.sock --kill --daemonize --pid=/tmp/ptkill.pid --print --log=/tmp/pt-kill.log &

----kill掉state Locked

/usr/bin/pt-kill --user=用戶名 --password=密碼  --victims all --match-state='Locked' --victim all --interval 5 --kill --daemonize -S /tmp/mysqld.sock --pid=/tmp/ptkill.pid --print --log=/tmp/pt-kill.log &

---kill掉 a庫姑丑,web為10.0.0.11的鏈接

pt-kill  --user=用戶名 --password=密碼 --victims all  --match-db='a' --match-host='10.0.0.11' --kill --daemonize --interval 10  -S /tmp/mysqld.sock  --pid=/tmp/ptkill.pid --print-log=/tmp/pt-kill.log &

---指定哪個(gè)用戶kill

pt-kill   --user=用戶名 --password=密碼 --victims all --match-user='root' --kill  --daemonize --interval 10 -S /home/zb/data/my6006/socket/mysqld.sock --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log &

---查詢SELECT 超過1分鐘路

pt-kill  --user=用戶名 --password=密碼 --busy-time 60 --match-info "SELECT|select" --victim all  --interval 5 --kill --daemonize -S /tmp/mysqld.sock --pid=/tmp/ptkill.pid --print --log=/tmp/pt-kill.log &


----kill掉 command query | Execute

pt-kill --user=用戶名 --password=密碼 --victims all  --match-command= "query|Execute" --interval 5 --kill --daemonize -S /tmp/mysqld.sock --pid=/tmp/ptkill.pid --print --log=/home/pt-kill.log &

其他

pt-find ---找出幾天之前建立的表
pt-slave-restart -----主從報(bào)錯(cuò)蛤签,跳過報(bào)錯(cuò)
pt-summary ---整個(gè)系統(tǒng)的的概述
pt-mysql-summary ---MySQL的表述,包括配置文件的描述
pt-duplicate-key-checker ---檢查數(shù)據(jù)庫重復(fù)索引
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栅哀,一起剝皮案震驚了整個(gè)濱河市顷啼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昌屉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茵瀑,死亡現(xiàn)場(chǎng)離奇詭異间驮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)马昨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門竞帽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扛施,“玉大人,你說我怎么就攤上這事屹篓「碓” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵堆巧,是天一觀的道長妄荔。 經(jīng)常有香客問我,道長谍肤,這世上最難降的妖魔是什么啦租? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮荒揣,結(jié)果婚禮上篷角,老公的妹妹穿的比我還像新娘。我一直安慰自己系任,他們只是感情好恳蹲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俩滥,像睡著了一般嘉蕾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上举农,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天荆针,我揣著相機(jī)與錄音,去河邊找鬼颁糟。 笑死航背,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棱貌。 我是一名探鬼主播玖媚,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼婚脱!你這毒婦竟也來了今魔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤障贸,失蹤者是張志新(化名)和其女友劉穎错森,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篮洁,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩维,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了袁波。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓦阐。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜗侈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出睡蟋,到底是詐尸還是另有隱情踏幻,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布戳杀,位于F島的核電站该面,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏豺瘤。R本人自食惡果不足惜吆倦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坐求。 院中可真熱鬧蚕泽,春花似錦、人聲如沸桥嗤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泛领。三九已至荒吏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渊鞋,已是汗流浹背绰更。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锡宋,地道東北人儡湾。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像执俩,于是被迫代替她去往敵國和親徐钠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容