課時7-備份與恢復----從dump檔案中找出單個表的資訊
原文地址
https://blog.tsheets.com/2008/tips-tricks/extract-a-single-table-from-a-mysqldump-file
法1:perl extract_sql.pl -t mytable -r mydumpfile > mytable.sql
法2:cat test1db.sql | sed -n '/Table structure for table .test1./,/Table structure for table .test2./p'>/tmp/xxx.sql ----列印test1與test2之間的內容
法3:awk '/Table structure for table .test1./,/Table structure for table .test2./{print}' test1db.sql ----列印test1與test2之間的內容
獲取多表:
-
這裡介紹一個最近用得很多的一個小工具:。
主要有兩個功能:
(1) 儘可能快的從一個非常大的mysqldump檔案的分離出某個單表的備份檔案
(2) 可以幫你把一個大的mysqldump檔案,切割成非常小的單表備份檔案(可繼續做並行恢復)
1. 什麼時候需要這麼做(1) 如果把MySQL中某一個表資料弄丟了,需要從很大的mysqldump備份檔案中恢復這個表
(2) 如果你想並行恢復整個mysqldump備份檔案時,這個指令碼可以幫你把大檔案切割成多個小的單表備份檔案,然後就可以方便並行恢復多個檔案了
2. 如何使用這個指令碼這裡以例項的方式介紹如何使用該指令碼:
(1) 從backup.sql檔案中獲取表process的備份:
tbdba-restore-mysqldump.pl -t process -f backup.sql(2) 從backup.sql檔案中獲取資料庫monitor中的表process的備份:
tbdba-restore-mysqldump.pl -t process -s monitor -f backup.sql(3) 從backup.sql檔案中獲取多個表的備份檔案(例如表process、users):
tbdba-restore-mysqldump.pl -t process,user -s monitor -f backup.sql(4) 直接接收來自管道的輸出(如果你的mysqldump備份是壓縮後,則可以使用):
gunzip -c backup.sql.gz|tbdba-restore-mysqldump.pl -t process,user -s monitor(5) 從backup.sql檔案中獲取資料庫monitor下所有表的備份檔案:
gunzip -c backup.sql.gz|tbdba-restore-mysqldump.pl -s monitor(6) 從backup.sql檔案中獲取所有資料庫下所有表的備份檔案:
gunzip -c backup.sql.gz|tbdba-restore-mysqldump.pl --all-tables(7) 使用-d引數,則可以看到切割的過程中的更多資訊:
date && gunzip -c /backdir/backup.sql.gz|tbdba-restore-mysqldump.pl -d -a && date3. tbdba-restore-mysqldump.pl有什麼優勢(1) 如果指定了-s(獲取某個資料庫中的備份)引數,則指令碼在成功擷取需要恢復的表後就會立刻退出,所以如果你要恢復的表恰好在備份檔案的比較靠前的位置時,該指令碼的速度會非常快。
一個實際工作例子:
$ls -lh backup.sql.gz
-rw-r--r-- 1 mysql dba 14G Nov 21 04:49 backup.sql.gz
$date && gunzip -c backup.sql.gz|./tbdba-restore-mysqldump.pl -s monitor_general -t monitor_host_info && date
Fri Nov 25 14:35:06 CST 2011
Fri Nov 25 14:46:49 CST 2011
(the unzip of backup.sql.gz is 88G)如果要全量恢復的話,根據經驗值:88GB的sql檔案完全恢復約需要400分鐘()。
(2) 為了讓每個獨立的單表備份檔案能夠準確恢復,指令碼做了兩個額外的處理工作:在每個單表備份前加上'use db',讓該表能夠恢復到正確的資料庫;為了讓單表恢復時字符集不出錯誤,指令碼在某個單表備份前加上了對應的SET NAMES utf8、SET TIME_ZONE等命令。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1845115/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 課時7-備份與恢復----資料庫備份策略指令碼資料庫指令碼
- 如何從MySQL全庫備份的dump檔案中恢復某張表和表結構MySql
- 備份與恢復--從備份的歸檔日誌中恢復資料
- 備份與恢復--利用備份的控制檔案恢復
- 備份與恢復系列 十一 控制檔案的備份與恢復
- 備份與恢復(Parameter 檔案恢復篇)
- 備份與恢復系列 十 引數檔案spfile的備份與恢復
- 如何從Active Backup for Business備份中恢復檔案
- 【實驗】從RMAN備份中恢復spfile檔案
- 【備份與恢復】恢復受損的口令檔案
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- 備份與恢復--重建控制檔案
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- 備份&恢復之十二:損壞單個控制檔案
- controlfile檔案的備份與恢復
- 控制檔案恢復—從自動或二進位制備份中恢復
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- 【備份與恢復】archivelog模式中資料檔案的恢復Hive模式
- 【備份與恢復】noarchivelog模式中資料檔案的恢復Hive模式
- 【備份與恢復】恢復受損的複用控制檔案
- Oracle rman 備份與恢復 臨時表空間的檔案問題解決Oracle
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復
- 【Mysql】從binlog中找出單個表的binlog資訊MySql
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- 備份與恢復系列 九 丟失表空間資料檔案的還原與恢復
- 備份&恢復之四:非歸檔模式下的備份與恢復模式
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- 【實驗】從RMAN備份中恢復controlfile控制檔案
- 利用備份的控制檔案恢復
- 控制檔案的備份和恢復
- 【rman 備份與恢復】恢復丟失所有的控制檔案
- oralce備份與恢復1 控制檔案(轉)
- 【備份恢復】 丟失一個控制檔案 之恢復操作
- 【備份恢復】從備份恢復資料庫資料庫
- 從備份片中恢復某個指定得歸檔或者資料檔案
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)