pt archiver資料歸檔使用大全

2021-08-18 20:54:24 字數 3687 閱讀 5117

-where 'id<3000' 設定操作條件

--limit 10000 每次取1000行資料給pt-archive處理

--txn-size 1000 設定1000行為乙個事務提交一次

--progress 5000 每處理5000行輸出一次處理資訊

--statistics 結束的時候給出統計資訊:開始的時間點,結束的時間點,查詢的行數,歸檔的行數,刪除的行數,以及各個階段消耗的總的時間和比例,便於以此進行優化。只要不加上--quiet,預設情況下pt-archive都會輸出執行過程的

--charset=utf8 指定字符集為utf8,字符集需要對應當前庫的字符集來操作

--no-delete 表示不刪除原來的資料,注意:如果不指定此引數,所有處理完成後,都會清理原表中的資料

--bulk-delete 批量刪除source上的舊資料

--bulk-insert 批量插入資料到dest主機 (看dest的general log發現它是通過在dest主機上load data local infile插入資料的)

--purge 刪除source資料庫的相關匹配記錄

--local 不把optimize或analyze操作寫入到binlog裡面(防止造成主從延遲巨大)

--analyze=ds 操作結束後,優化表空間(d表示dest,s表示source)

預設情況下,pt-archiver操作結束後,不會對source、dest表執行analyze或optimize操作,因為這種操作費時間,並且需要你提前預估有足夠的磁碟空間用於拷貝表。一般建議也是pt-archiver操作結束後,在業務低谷手動執行analyze table用以**表空間。

1)注意--source後的dsn之間不能空格出現,否則會出錯。 --where條件的值,有字串的,要用引號括起來。 

2) --limit表示,每組一次刪除多少條資料(注意:如果資料比較多時,也可以設定大一些,減少迴圈次數),最終的清理操作,還是通過where pk=xx來處理的;

批量插入與非批量插入

刪除採用delete from table where ... ,每次刪除一行資料

插入採用insert into table values('...'),每次插入一行資料

批量刪除採用delete from table where ... limit 10000

批量插入採用load data local infile 'file' into table ...

1、全表歸檔,不刪除原表資料,非批量插入----批量插入

pt-archiver --source h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --dest h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --charset=utf8 --where '1=1' --progress 10000 --limit=10000 --txn-size 10000 --statistics --no-delete ##

pt-archiver --source h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --dest h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --charset=utf8 --where '1=1' --progress 10000 --limit=10000 --txn-size 10000 --bulk-insert --bulk-delete --statistics --no-delete

2、資料歸檔,刪除原表資料,非批量插入、非批量刪除--批量插入、批量刪除

pt-archiver --source h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --dest h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --charset=utf8 --where '1=1' --progress 10000 --limit=10000 --txn-size 10000 --statistics --purge

pt-archiver --source h=172.16.1.10,p=3306,u=backup_user,p='***',,d=test123,t=c1 --dest h=172.16.1.10,p=3306,u=backup_user,p='***',d=test123,t=c1 --charset=utf8 --where '1=1' --progress 10000 --limit=10000 --txn-size 10000 --bulk-insert --bulk-delete --statistics --purge

3、用於把資料匯出檔案,不用刪除原表中資料

pt-archiver --source h=127.0.1.1,p=3306,d=test,t=test --charset=utf8 --where 'itemid>100' --progress 1000 --file "/tmp/aa.txt" --limit=10000 --no-delete

4、強制指定索引,通過引數i來指定索引名字,預設按primary走,資料大的時候非常慢

pt-archiver --source h='xx',p='3306',u='xx',p='xx',d='db_order',t='xx',i=index_createtime --dest h='xx',p='3306',u='xx',p='xx',d='xx',t='xx' --charset=utf8mb4  --where 'createtime<20180201000000' --progress 10000 --limit 10000 --statistics

5、主鍵衝突資料歸檔,通過replace來解決

pt-archiver --source h='xx',p='3306',u='xx',p='xx',d='db_order',t='xx' --dest h='xx',p='3306',u='xx',p='xx',d='xx',t='xx' --charset=utf8mb4  --replace  --where 'createtime<20180201000000' --progress 10000 --limit 10000 --statistics

6、通過dry-run來檢視pt的執行計畫,資料查詢使用的索引

pt-archiver --source h='xx',p='3306',u='xx',p='xx',d='db_order',t='xx' --dest h='xx',p='3306',u='xx',p='xx',d='xx',t='xx' --charset=utf8mb4,i=index_createtime--replace  --where 'createtime<20180201000000' --progress 10000 --limit 10000 --statistics --dry-run

7、source 與dest的字符集不統解決方式

pt-archiver --source h='xx',p='3306',u='xx',p='xx',d='db_order',t='xx',a=utf8mb4 --dest h='xx',p='3306',u='xx',p='xx',d='xx',t='xx' --charset=utf8 --where 'createtime<20180201000000' --progress 10000 --limit 10000 --statistics

pt archiver資料歸檔

可以使用percona toolkit包中的pt archiver工具來進行歷史資料歸檔 pt archiver使用的場景 1 清理線上過期資料。2 清理過期資料,並把資料歸檔到本地歸檔表中,或者遠端歸檔伺服器。3 兩張表之間的資料不完全相同,希望合併。此時加上 ignore或 replace選項,...

資料持久化,歸檔,反歸檔

資料持久化的本質 將資料讀成檔案儲存在本地 沙盒機制 就是系統針對每個應用程式在本地生成的資料夾 名字隨機生成 對於不同的應用程式 不能訪問其他應用程式沙盒的內容 起到保護作用 1 documents 用來儲存長久儲存的資料 b perferences 儲存使用者的偏好設定 比如程式是否是第一次啟動...

資料儲存之(四) 歸檔 反歸檔

nskeyedarchiver 如果物件是 nsstring nsdictionary nsarray nsdata nsnumber 等型別,可以直接用 nskeyedarchiver 進行歸檔和恢復 不是所有的物件都可以直接用這種方法進行歸檔,只有遵守了 nscoding 協議的物件才可以 ns...