本文實例講述了mysql數(shù)據(jù)備份與恢復(fù)實現(xiàn)方法。分享給大家供大家參考,具體如下:
本文內(nèi)容:
- 復(fù)制文件法
- 利用mysqldump
- 利用select into outfile
- 其它(列舉但不介紹)
首發(fā)日期:2018-04-19
有些時候,在備份之前要先做flush tables ,確保所有數(shù)據(jù)都被寫入到磁盤中。
復(fù)制文件法:
- 對于myisam存儲引擎的數(shù)據(jù)庫,它的表結(jié)構(gòu)(.frm)、數(shù)據(jù)(.myd)和索引(.myi)都單獨成文件,可以直接復(fù)制這三個文件到備份空間就可以成功備份了。
- 至于還原,只需要把三個文件復(fù)制回某個數(shù)據(jù)庫目錄下即可。
利用mysqldump:
適用情況:本質(zhì)上是把表結(jié)構(gòu)和數(shù)據(jù)還原成sql語句,所以可以備份表結(jié)構(gòu)
備份:
- 單表備份:mysqldump -u用戶名 -p 數(shù)據(jù)庫名 表名 > 備份文件路徑
- 多表備份:mysqldump -u用戶名 -p 數(shù)據(jù)庫名 表名1 [其他表名] > 備份文件路徑
- 單個數(shù)據(jù)庫備份:mysqldump -u用戶名 -p 數(shù)據(jù)庫名 > 備份文件路徑
- 多個數(shù)據(jù)庫備份:mysqldump -u用戶名 -p --databases 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 [其他數(shù)據(jù)庫] > 備份文件路徑
- 備份所有數(shù)據(jù)庫:mysqldump -u用戶名 -p --all --databases > 備份文件路徑
還原:
- mysqldump -u用戶名 -p密碼 [數(shù)據(jù)庫名] 備份文件路徑 【指定數(shù)據(jù)庫時代表只恢復(fù)指定數(shù)據(jù)庫的備份,不指定為恢復(fù)備份文件中所有內(nèi)容】
補(bǔ)充:
- mysqldump還可以僅僅導(dǎo)出表數(shù)據(jù)【不過考慮到有select into outfile了,這里就不介紹了】
利用select into outfile:
適用情況:單表數(shù)據(jù)備份,只能復(fù)制表數(shù)據(jù),不能復(fù)制表結(jié)構(gòu)。
備份:
- 語法:select *\字段列表 from 數(shù)據(jù)源 into outfile 備份文件目標(biāo)路徑 [fields 字段處理] [lines 行處理]; 【備份文件目標(biāo)路徑中文件必須不存在】
- fields 字段處理是可選的,是每個字段的數(shù)據(jù)如何存儲,有以下即可小選項
- enclosed by:以什么字符來包裹數(shù)據(jù),默認(rèn)是空字符
- terminated by :以什么字符作為字段數(shù)據(jù)結(jié)尾,默認(rèn)是\t,退格符
- escaped by: 特殊符號用什么方法處理,默認(rèn)是"\\"
- optionally enclosed by:以什么字符來包裹數(shù)據(jù)類型為字符串的數(shù)據(jù)。
- 語法:
select * from class into outfile "d:\c1.txt" fields enclosed by '-';
select * from class into outfile "d:\c1.txt" fields enclosed by '-' optionally enclosed by "'";
- lines 行處理是可選的
- starting by :每行以什么開始,默認(rèn)是空字符串
- terminated by :每行記錄以什么結(jié)束,默認(rèn)是“\n”
- 語法:
select * from class into outfile "d:\c.txt" lines starting by 'start:';
select * from class into outfile "d:\c1.txt" lines starting by 'start:' terminated by ' \n';
注意:在5.7新增了一個特性,secure_file_priv,它會限制數(shù)據(jù)的導(dǎo)出,secure-file-priv參數(shù)是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。
![](/d/20211018/147584bc4f130ed991fa0428cf9fca54.gif)
需要在my.ini中設(shè)置
才能正常導(dǎo)出數(shù)據(jù)。
還原:
- 語法:load date infile 備份文件路徑 into table 表名 [fields 字段處理] [lines 行處理];【要把之前的字段處理和行處理都寫下來,不然無法正確區(qū)分?jǐn)?shù)據(jù)】
其它
- 備份:
- 使用mysql命令備份
- 利用mysqlhotcopy備份
- 利用backup table
- 還原:
- 使用mysqlimport導(dǎo)入數(shù)據(jù)文件。
- 使用restore還原
- 使用source還原
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
您可能感興趣的文章:- mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法
- MySQL通過binlog恢復(fù)數(shù)據(jù)
- MySQL 利用frm文件和ibd文件恢復(fù)表數(shù)據(jù)
- MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實現(xiàn)
- mysql利用mysqlbinlog命令恢復(fù)誤刪除數(shù)據(jù)的實現(xiàn)
- MySQL 兩種恢復(fù)數(shù)據(jù)的方法
- MySQL數(shù)據(jù)庫備份恢復(fù)實現(xiàn)代碼
- MySQL使用mysqldump+binlog完整恢復(fù)被刪除的數(shù)據(jù)庫原理解析
- Mysql的Binlog數(shù)據(jù)恢復(fù):不小心刪除數(shù)據(jù)庫詳解
- MySQL 數(shù)據(jù)恢復(fù)的多種方法匯總