您好,登錄后才能下訂單哦!
小編給大家分享一下從MySQL DB轉儲文件中提取表備份的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
mysqldump是mysql/mariadb為備份數據庫和表提供的實用程序。一般來說,我們會定期對數據庫進行完整的轉儲并保存。但有時我們需要從備份中恢復單個或兩個表。問題是如何從完整備份文件中恢復特定表?本篇文章將介紹從完整的數據庫備份文件中提取表備份。此外,我們還可以在每個表中提取單個文件中的所有表備份。
第1步:下載MySQL dump拆分腳本
在單獨的表特定文件備份中拆分完整的mysqldump數據庫備份文件。創建一個名為splitdb.sh的文件,并在其中復制下面的腳本。
#!/bin/bash #### # Split MySQL dump SQL file into one file per table # based on http://blog.tty.nl/2011/12/28/splitting-a-database-dump #### if [ $# -lt 1 ] ; then echo "USAGE $0 DUMP_FILE [TABLE]" exit fi if [ $# -ge 2 ] ; then csplit -s -ftable $1 "/-- Table structure for table/" "%-- Table structure for table `$2`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1" else csplit -s -ftable $1 "/-- Table structure for table/" {*} fi [ $? -eq 0 ] || exit mv table00 head FILE=`ls -1 table* | tail -n 1` if [ $# -ge 2 ] ; then mv $FILE foot else csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*} mv ${FILE}1 foot fi for FILE in `ls -1 table*`; do NAME=`head -n1 $FILE | cut -d$'x60' -f2` cat head $FILE foot > "$NAME.sql" done rm head foot table*
第2步:從dump中提取所有表
對于這個例子,有一個名為mydb.sql的轉儲文件,要想在每個表的小備份中拆分。為此,需要創建了一個新目錄/ opt / splitdb,并在此目錄中復制了名為splitDB.sh的腳本。現在使用以下命令提取單個備份文件中的所有表。
#cd / opt / splitdb #sh splitDB.sh mydb.sql
第3步:從dump中提取單個表
如果我們只想提取一個表,我們可以使用如下命令。例如,要想只拆分名為my_tbl1和my_tbl2的表。它將在當前目錄中提取名為my_tbl1.sql和my_tbl2.sql的備份。
#cd / opt / splitdb #sh splitDB.sh mydb.sql my_tbl1 #sh splitDB.sh mydb.sql my_tbl2
看完了這篇文章,相信你對從MySQL DB轉儲文件中提取表備份的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。