pt-archiver使用

pt-archiver使用

pt-archiver工具其實就是用來清理,歸檔數據用的

一.歸檔前的準備
需要配置client字符集爲utf-8,如果你用了utf-8的編碼,防止歸檔數據爲亂碼
[client]
default-character-set=utf8

二.使用場景
1、清理線上過期數據
2、清理過期數據,並把數據歸檔到本地歸檔表中,或者遠端歸檔服務器
3、兩張表之間的數據不完全相同,希望合併。此時加上–ignore或–replace選項,可以輕鬆實現
4、導出線上數據,到線下數據作處理

 

三.參數

  1. 至少指定–dest, –file 或者 –purge三個參數中的一個
  2. –ignore and –replace 不能同時指定
  3. –txn-size and –commit-each 不能同時指定
  4. –low-priority-insert and –delayed-insert 不能同時指定
  5. –share-lock and –for-update 不能同時指定
  6. –analyze and –optimize 不能同時指定
  7. –no-ascend and –no-delete 不能同時指定

默認情況下,–dest從–source中複製DSN字符串.即,在同一個MySQL Server上面把數據歸檔到另外一個表.

  • –analyze
    在數據歸檔完成後,執行ANALYZE TABLE命令.d是在目的端執行,s是在源端執行.

     

    --analyze=ds
    
  • –ascend-first
    只使用第一列爲升序的索引.
  • –ask-pass
    交互模式輸入密碼
  • –buffer
    指定–file參數時,提供緩衝功能.性能可能會提高(5-15)%
    風險: 在歸檔大事務的時候,如果發生宕機,可能會造成數據丟失.
  • –bulk-delete
    用單獨的sql語句,每次刪除一個塊的數據.可以加快刪除的速度.不推薦使用.
    正常情況下,是根據主鍵,一行一行的刪除.
  • –[no]bulk-delete-limit
    爲–bulk-delete參數添加limit選項
  • –bulk-insert
    使用”LOAD DATA INFILE”方式代替INSERT方式寫入.
  • –charset
    指定字符集,例如

     

    --charset 'utf8'
    
  • –[no]check-charset
    默認開啓,檢查連接的字符集與表的字符集是否一致.
  • –[no]check-columns
    檢查source和dest是否具有相同的列(不減查列的順序,數據類型等).如果不同,則報錯退出.
  • –check-interval
    默認1s
    如果指定了–check-slave-lag 參數,那麼每秒都會檢查從庫的延遲情況(帳號要有權限連接從庫).
  • –check-slave-lag
    指定一個從庫的DSN串,檢查複製延遲的情況,如果大於–max-lag,就會暫停歸檔.
  • –columns
    指定歸檔的列(用逗號分割),寫入文件和目的庫表.
    注意: 沒有指定列,在原表也會被刪除.也就說,未選擇列的數據,就會丟失.
  • –commit-each
    配合–limit參數,一組一組的歸檔數據
  • –config
    參考下面的”如何讀取配置文件”
  • –delayed-insert
    增加DELAYED屬性
  • –dry-run
    不做任何操作,只打印要執行的查詢語句.
  • –file
    歸檔到文件,文件內容相當於是SELECT INTO OUTFILE語法導出的數據,文件名可以增加時間戳和庫名:

     

    %d    Day of the month, numeric (01..31)
    %H    Hour (00..23)
    %i    Minutes, numeric (00..59)
    %m    Month, numeric (01..12)
    %s    Seconds (00..59)
    %Y    Year, numeric, four digits
    
    %D    Database name
    %t    Table name
    

    例如

    --file '/var/log/archive/%Y-%m-%d-%D.%t'
    
  • –for-update
    爲SELECT語句增加FOR UPDATE屬性
  • –header
    在歸檔文件的第一行加入列名.注意,在LOAD DATA INFILE時,別寫入多餘的數據.
  • –high-priority-select
    增加HIGH_PRIORITY 修飾符
    See http://dev.mysql.com/doc/en/select.html for details.
  • –limit
    默認值1
    指定每次歸檔多少行.
  • –local
    執行OPTIMZE或者ANALYZE語句時,不寫binlog,只在本地執行.
  • –low-priority-delete
    Adds the LOW_PRIORITY modifier to DELETE statements.
    See http://dev.mysql.com/doc/en/delete.html for details.
  • –low-priority-insert
    Adds the LOW_PRIORITY modifier to INSERT or REPLACE statements.
    See http://dev.mysql.com/doc/en/insert.html for details.
  • –max-lag
    默認是1s, 從庫延遲超過這個設置值就會自動暫停.
  • –no-ascend
    不使用順序索引優化
  • –no-delete
    不在source上面刪除歸檔數據
  • –optimize
    歸檔完成後,執行 OPTIMIZE TABLE
  • –pid
    指定pid文件
  • –progress
    每隔多少行,打印一次信息.
  • –purge
    只刪除,不做歸檔.可以省略–file和–dest選項
  • –quiet
    不打印任何輸出
  • –replace
    在dest端,使用REPLACE INSERT語句
  • –retries
    遇到超時或死鎖時,重試的次數.默認是1次
  • –run-time
    運行多長時間後退出.
    可以指定如下後綴,如果沒有後綴,默認是秒

     

    s=seconds, m=minutes, h=hours, d=days
    
  • –sentinel
    默認路徑: /tmp/pt-archiver-sentinel
    如果這個文件存在,則直接退出.
  • –set-vars
    可以設置mysql的變量,多個變量用逗號分割.

     

    --set-vars wait_timeout=500
    
  • –skip-foreign-key-checks
    禁用外鍵檢查,相當於執行了 SET FOREIGN_KEY_CHECKS=0
  • –sleep
    指定兩次SELECT語句的sleep時間.默認是沒有sleep的.
    如果指定commit-each參數,commit和flush會在sleep之前發生.
  • –stop
    創建一個哨兵文件,停止正在運行的pt-archiver進程.例如session1正在執行歸檔操作,然後我用session2創建一個哨兵文件,那麼session1的操作會立刻停止.
  • –txn-size
    指定每個事務的行數.
  • –where (重要)
    指定歸檔數據的過濾條件.
  • –why-quit
    打印退出的原因,歸檔數據正常完成的除外.

     

四.示例

1.歸檔到數據庫

pt-archiver --source h=127.0.0.1,D=test,t=table1,u=root,p=123456 --dest h=127.0.0.1,D=test,t=table2,u=root,p=123456 --where 'id<10000' --no-check-charset --no-delete --limit=1000 --commit-each --progress 2000 --statistics

2.只清理數據

pt-archiver --source h=127.0.0.1,D=test,t=table1,u=root,p=123456 --where 'id<10000' --purge --limit=1 --no-check-charset

3.只把數據導出到外部文件,但是不刪除源表裏的數據
pt-archiver --source h=127.0.0.1,D=test,t=table1,u=root,p=123456 --where '1=1' --no-check-charset --no-delete --file="/tmp/archiver.dat"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章