您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關mysql中如何使用percona的pt-archiver工具的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
DBA或者運維人員經常需定期對數據進行歸檔和清除,我們可以使用percona的pt-archiver工具能完成這一功能,使得數據歸檔變得方便簡單。
歸檔數據一例:
原表結構為:
mysql>desc test.t1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| a | int(11) | YES | MUL | NULL | |
| b | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql>show create table test.t1 \G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `a` (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)
歸檔到文件:
# pt-archiver --source h=192.168.140.51,u=root,p=123456,P=3306,D=test,t=t1 --file '/tmp/test.txt' --progress 500 --no-delete --statistics --where '1=1' --txn-size 1000 --no-check-charset
TIME ELAPSED COUNT
2019-06-19T16:14:48 0 0
2019-06-19T16:14:48 0 500
2019-06-19T16:14:49 0 1000
2019-06-19T16:14:49 0 1000
Started at 2019-06-19T16:14:48, ended at 2019-06-19T16:14:49
Source: D=test,P=3306,h=192.168.140.51,p=...,t=t1,u=root
SELECT 1000
INSERT 0
DELETE 0
Action Count Time Pct
select 1001 0.6883 72.33
print_file 1000 0.0149 1.57
commit 2 0.0004 0.04
other 0 0.2480 26.06
注意:
pt-archiver操作的表必須有主鍵。
--where '1=1'條件是導出全部數據,如果想導出部分數據,可以設置where條件,例如--where 'b>500'
--no-check-charset 設置不校驗字符集,否則會報錯:
Character set mismatch: --source DSN uses latin1, table uses utf8mb4. You can disable this check by specifying --no-check-charset.
常用的參數有:
--limit 10000 每次取1000行數據用pt-archive處理,Number of rows to fetch and archive per statement.
--txn-size 1000 設置1000行為一個事務提交一次,Number of rows pertransaction.
--where 'id<3000' 設置操作條件
--progress 1000 每處理1000行輸出一次處理信息
--statistics 輸出執行過程及最后的操作統計。(只要不加上--quiet,默認情況下pt-archive都會輸出執行過程的)
--charset=UTF8 指定字符集為UTF8
--bulk-delete 批量刪除source上的舊數據(例如每次1000行的批量刪除操作)
--bulk-insert 批量插入數據到dest主機 (看dest的general log發現它是通過在dest主機上LOAD DATA LOCAL INFILE插入數據的)
--replace 將insert into 語句改成replace寫入到dest庫
--sleep 80 每次歸檔了limit個行記錄后的休眠80秒(單位為秒)
恢復數據例子:
恢復數據應使用load data命令
mysql>use peihy
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>CREATE TABLE `t1` (
-> `id` int(11) NOT NULL,
-> `a` int(11) DEFAULT NULL,
-> `b` int(11) DEFAULT NULL,
-> PRIMARY KEY (`id`),
-> KEY `a` (`a`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.18 sec)
mysql>load data infile '/tmp/test.txt' into table t1;
Query OK, 1000 rows affected (0.61 sec)
Records: 1000 Deleted: 0 Skipped: 0 Warnings: 0
感謝各位的閱讀!關于“mysql中如何使用percona的pt-archiver工具”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。