pt-archiver使用
pt-archiver工具其實(shí)就是用來(lái)清理,歸檔數(shù)據(jù)用的
一.歸檔前的準(zhǔn)備
需要配置client字符集為utf-8,如果你用了utf-8的編碼,防止歸檔數(shù)據(jù)為亂碼
[client]
default-character-set=utf8
二.使用場(chǎng)景
1、清理線上過(guò)期數(shù)據(jù)
2、清理過(guò)期數(shù)據(jù),并把數(shù)據(jù)歸檔到本地歸檔表中,或者遠(yuǎn)端歸檔服務(wù)器
3、兩張表之間的數(shù)據(jù)不完全相同,希望合并。此時(shí)加上–ignore或–replace選項(xiàng),可以輕松實(shí)現(xiàn)
4、導(dǎo)出線上數(shù)據(jù),到線下數(shù)據(jù)作處理
三.參數(shù)
至少指定–dest, –file 或者 –purge三個(gè)參數(shù)中的一個(gè)
–ignore and –replace 不能同時(shí)指定
–txn-size and –commit-each 不能同時(shí)指定
–low-priority-insert and –delayed-insert 不能同時(shí)指定
–share-lock and –for-update 不能同時(shí)指定
–analyze and –optimize 不能同時(shí)指定
–no-ascend and –no-delete 不能同時(shí)指定
默認(rèn)情況下,–dest從–source中復(fù)制DSN字符串.即,在同一個(gè)MySQL Server上面把數(shù)據(jù)歸檔到另外一個(gè)表.
–analyze
在數(shù)據(jù)歸檔完成后,執(zhí)行ANALYZE TABLE命令.d是在目的端執(zhí)行,s是在源端執(zhí)行.
--analyze=ds
–ascend-first
只使用第一列為升序的索引.
–ask-pass
交互模式輸入密碼
–buffer
指定–file參數(shù)時(shí),提供緩沖功能.性能可能會(huì)提高(5-15)%
風(fēng)險(xiǎn): 在歸檔大事務(wù)的時(shí)候,如果發(fā)生宕機(jī),可能會(huì)造成數(shù)據(jù)丟失.
–bulk-delete
用單獨(dú)的sql語(yǔ)句,每次刪除一個(gè)塊的數(shù)據(jù).可以加快刪除的速度.不推薦使用.
正常情況下,是根據(jù)主鍵,一行一行的刪除.
–[no]bulk-delete-limit
為–bulk-delete參數(shù)添加limit選項(xiàng)
–bulk-insert
使用”LOAD DATA INFILE”方式代替INSERT方式寫(xiě)入.
–charset
指定字符集,例如
--charset 'utf8'
–[no]check-charset
默認(rèn)開(kāi)啟,檢查連接的字符集與表的字符集是否一致.
–[no]check-columns
檢查source和dest是否具有相同的列(不減查列的順序,數(shù)據(jù)類(lèi)型等).如果不同,則報(bào)錯(cuò)退出.
–check-interval
默認(rèn)1s
如果指定了–check-slave-lag 參數(shù),那么每秒都會(huì)檢查從庫(kù)的延遲情況(帳號(hào)要有權(quán)限連接從庫(kù)).
–check-slave-lag
指定一個(gè)從庫(kù)的DSN串,檢查復(fù)制延遲的情況,如果大于–max-lag,就會(huì)暫停歸檔.
–columns
指定歸檔的列(用逗號(hào)分割),寫(xiě)入文件和目的庫(kù)表.
注意: 沒(méi)有指定列,在原表也會(huì)被刪除.也就說(shuō),未選擇列的數(shù)據(jù),就會(huì)丟失.
–commit-each
配合–limit參數(shù),一組一組的歸檔數(shù)據(jù)
–config
參考下面的”如何讀取配置文件”
–delayed-insert
增加DELAYED屬性
–dry-run
不做任何操作,只打印要執(zhí)行的查詢(xún)語(yǔ)句.
–file
歸檔到文件,文件內(nèi)容相當(dāng)于是SELECT INTO OUTFILE語(yǔ)法導(dǎo)出的數(shù)據(jù),文件名可以增加時(shí)間戳和庫(kù)名:
%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語(yǔ)句增加FOR UPDATE屬性
–header
在歸檔文件的第一行加入列名.注意,在LOAD DATA INFILE時(shí),別寫(xiě)入多余的數(shù)據(jù).
–high-priority-select
增加HIGH_PRIORITY 修飾符
Seehttp://dev.mysql.com/doc/en/select.htmlfor details.
–limit
默認(rèn)值1
指定每次歸檔多少行.
–local
執(zhí)行OPTIMZE或者ANALYZE語(yǔ)句時(shí),不寫(xiě)binlog,只在本地執(zhí)行.
–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
默認(rèn)是1s, 從庫(kù)延遲超過(guò)這個(gè)設(shè)置值就會(huì)自動(dòng)暫停.
–no-ascend
不使用順序索引優(yōu)化
–no-delete
不在source上面刪除歸檔數(shù)據(jù)
–optimize
歸檔完成后,執(zhí)行 OPTIMIZE TABLE
–pid
指定pid文件
–progress
每隔多少行,打印一次信息.
–purge
只刪除,不做歸檔.可以省略–file和–dest選項(xiàng)
–quiet
不打印任何輸出
–replace
在dest端,使用REPLACE INSERT語(yǔ)句
–retries
遇到超時(shí)或死鎖時(shí),重試的次數(shù).默認(rèn)是1次
–run-time
運(yùn)行多長(zhǎng)時(shí)間后退出.
可以指定如下后綴,如果沒(méi)有后綴,默認(rèn)是秒
s=seconds, m=minutes, h=hours, d=days
–sentinel
默認(rèn)路徑: /tmp/pt-archiver-sentinel
如果這個(gè)文件存在,則直接退出.
–set-vars
可以設(shè)置mysql的變量,多個(gè)變量用逗號(hào)分割.
--set-vars wait_timeout=500
–skip-foreign-key-checks
禁用外鍵檢查,相當(dāng)于執(zhí)行了 SET FOREIGN_KEY_CHECKS=0
–sleep
指定兩次SELECT語(yǔ)句的sleep時(shí)間.默認(rèn)是沒(méi)有sleep的.
如果指定commit-each參數(shù),commit和flush會(huì)在sleep之前發(fā)生.
–stop
創(chuàng)建一個(gè)哨兵文件,停止正在運(yùn)行的pt-archiver進(jìn)程.例如session1正在執(zhí)行歸檔操作,然后我用session2創(chuàng)建一個(gè)哨兵文件,那么session1的操作會(huì)立刻停止.
–txn-size
指定每個(gè)事務(wù)的行數(shù).
–where (重要)
指定歸檔數(shù)據(jù)的過(guò)濾條件.
–why-quit
打印退出的原因,歸檔數(shù)據(jù)正常完成的除外.
四.示例
1.歸檔到數(shù)據(jù)庫(kù)
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.只清理數(shù)據(jù)
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.只把數(shù)據(jù)導(dǎo)出到外部文件,但是不刪除源表里的數(shù)據(jù)
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"
總結(jié)
以上是生活随笔為你收集整理的pt-archiver使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 你知道require是什么吗?
- 下一篇: PaddlePaddle开源平台的应用