-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...