日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

pt-archiver使用

發布時間:2023/12/13 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 pt-archiver使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

三.參數

至少指定–dest, –file 或者 –purge三個參數中的一個
–ignore and –replace 不能同時指定
–txn-size and –commit-each 不能同時指定
–low-priority-insert and –delayed-insert 不能同時指定
–share-lock and –for-update 不能同時指定
–analyze and –optimize 不能同時指定
–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 修飾符
Seehttp://dev.mysql.com/doc/en/select.htmlfor details.

–limit
默認值1
指定每次歸檔多少行.

–local
執行OPTIMZE或者ANALYZE語句時,不寫binlog,只在本地執行.

–low-priority-delete
Adds the LOW_PRIORITY modifier to DELETE statements.
Seehttp://dev.mysql.com/doc/en/delete.htmlfor details.

–low-priority-insert
Adds the LOW_PRIORITY modifier to INSERT or REPLACE statements.
Seehttp://dev.mysql.com/doc/en/insert.htmlfor 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"

總結

以上是生活随笔為你收集整理的pt-archiver使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。