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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2648119/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- pt-archiver 歸檔資料Hive
- pt-archiver資料歸檔Hive
- 非歸檔模式恢復資料庫模式資料庫
- MySQL使用pt-archiver歸檔歷史資料MySqlHive
- 無歸檔日誌恢復rman資料
- oracle RMAN 非歸檔資料庫恢復Oracle資料庫
- 資料恢復-電腦管家檔案恢復工具資料恢復
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- 在歸檔下恢復系統資料檔案
- 利用歸檔來做資料檔案的恢復
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 歸檔資料庫中的不可恢復操作資料庫
- mysql資料庫恢復一例MySql資料庫
- 優雅地使用pt-archiver進行資料歸檔Hive
- rman 恢復---歸檔丟失and資料檔案損壞
- 歸檔模式下資料檔案丟失的恢復模式
- 【備份恢復】非歸檔模式下丟失任意資料檔案 恢復操作模式
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 只有冷備和歸檔,能否恢復?
- DM7使用dmrestore工具利用不同資料庫的歸檔恢復資料庫REST資料庫
- dbms_logmnr 線上挖歸檔 恢復資料
- 非歸檔模式下恢復資料庫兩例模式資料庫
- 歸檔模式有備份丟失控制檔案和資料檔案後恢復模式
- 歸檔模式下丟失普通資料檔案並恢復模式
- 歸檔模式,恢復沒有備份的資料檔案模式
- pt-archiver結合crontab定時自動歸檔資料Hive
- 備份與恢復--從備份的歸檔日誌中恢復資料
- 歸檔模式下資料庫全恢復的過程模式資料庫
- Oracle叢集資料庫中恢復歸檔日誌Oracle資料庫
- 資料庫備份與恢復(使用歸檔後滾)資料庫
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- 無備份恢復(歸檔模式)已刪除資料檔案模式
- REDO日誌損壞,非歸檔模式資料檔案恢復模式
- 歸檔模式下,線上刪除資料檔案的完全恢復模式
- 歸檔模式無備份丟失資料檔案後恢復模式
- 歸檔模式有備份丟失資料檔案後恢復模式
- 硬碟資料恢復工具硬碟資料恢復