pt-archiver資料歸檔

俠客書生發表於2018-05-11

可以使用percona-toolkit包中的pt-archiver工具來進行歷史資料歸檔

pt-archiver使用的場景:

1、清理線上過期資料。

2、清理過期資料,並把資料歸檔到本地歸檔表中,或者遠端歸檔伺服器。

3、兩張表之間的資料不完全相同,希望合併。此時加上–ignore或–replace選項,可以輕鬆實現。

4、匯出線上資料,到線下資料作處理。

例子:

pt-archiver –source h=127.0.0.1,P=3306,D=database,t=table,u=root,p=123456 –dest h=127.0.0.1,P=3306,D=database,t=new_table,u=root,p=123456 –no-check-charset –where `id>100` –progress 1000 –no-delete –limit=1000 –statistics

引數說明:

–statistics:結束的時候給出統計資訊:開始的時間點,結束的時間點,查詢的行數,歸檔的行數,刪除的行數,以及各個階段消耗的總的時間和比例,便於以此進行優化。
–where:給出表中要處理的資料的查詢條件。
–progress:每處理progress指定的行數後,就列印一次資訊。
–no-delete:表示不刪除原來的資料,注意:如果不指定此引數,所有處理完成後,都會清理原表中的資料。
–limit:表示每次事務刪除多少條資料,預設1條(注意:如果資料比較多時,也可以設定大一些,減少迴圈次數)。
–txn-size:每個事務提交的資料行數(包括讀寫操作),批量提交,增加該值可以提升歸檔效能。
–file:資料存放的檔案,最好指定絕對路徑,檔名可以靈活地組合(另外,我測試過寫檔案與不寫檔案速度幾乎差不多,原本以為不寫檔案速度會快)。
–charset=UTF8 指定字符集為UTF8
–no-check-charset 不指定字符集
–bulk-delete 批量刪除source上的舊資料(例如每次1000行的批量刪除操作)
–bulk-insert 批量插入資料到dest主機 (看dest的general log發現它是通過在dest主機上LOAD DATA LOCAL INFILE插入資料的)
–replace 將insert into 語句改成replace寫入到dest庫
–sleep120 每次歸檔了limit個行記錄後的休眠120秒(單位為秒)
–local 不把optimize或analyze操作寫入到binlog裡面(防止造成主從延遲巨大)
–retries 超時或者出現死鎖的話,pt-archiver進行重試的間隔(預設1s)
–no-version-check 目前為止,發現部分pt工具對阿里雲RDS操作必須加這個引數
–analyze=ds 操作結束後,優化表空間(d表示dest,s表示source)
–purge 刪除source資料庫的相關匹配記錄,不歸檔刪除資料

參考:http://www.ywnds.com/?p=8379http://www.mamicode.com/info-detail-1903758.html

 

相關文章