可以使用percona-toolkit包中的pt-archiver工具來進行歷史數據歸檔 1、清理線上過期數據。 2、清理過期數據,並把數據歸檔到本地歸檔表中,或者遠端歸檔伺服器。 3、兩張表之間的數據不完全相同,希望合併。此時加上–ignore或–replace選項,可以輕鬆實現。 4、導出線上數 ...
可以使用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=8379 ,http://www.mamicode.com/info-detail-1903758.html