一、mysql備份類型詳解
對于現(xiàn)代互聯(lián)網(wǎng)公司而言,存儲在服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù),逐步成為企業(yè)和公司的命脈,對企業(yè)和公司的生存發(fā)展具有十分重大的影響。為了保證數(shù)據(jù)庫數(shù)據(jù)存儲安全,確保不會因為誤操作和不可抗力而破壞,通常我們都會對數(shù)據(jù)庫中的數(shù)據(jù)進行備份。對mysql數(shù)據(jù)庫的備份,可以有很多種方式,我們接下來按照不同的分類標準,來講解一下這些備份方式:
(一)按照備份對數(shù)據(jù)庫的影響分類
1、熱備份(hot backup)。 指在數(shù)據(jù)庫運行過程中進行備份,并且對數(shù)據(jù)庫正常運行沒有任何影響。
2、冷備份(cold backup)。 指在數(shù)據(jù)庫停止運行后開始進行的備份。
3、溫備份(warm backup)。 指在數(shù)據(jù)庫運行過程中進行備份,但是會造成數(shù)據(jù)庫性能下降,對數(shù)據(jù)庫提供服務(wù)造成影響的備份方式。
(二)按照備份的文件進行分類
1、邏輯備份。 采用邏輯備份的方式,備份出的數(shù)據(jù)通常是.sql類型的文件。備份后的內(nèi)容可讀且為文本文件。該方法一般用于數(shù)據(jù)庫的升級、遷移或者對數(shù)據(jù)庫表的批量修改等場景。該方法恢復(fù)時間較長。
2、裸文件備份。 指拷貝數(shù)據(jù)庫的物理文件,采用這種方式,數(shù)據(jù)庫恢復(fù)時間較短。
(三)按照備份的方式進行分類
1、完全備份。 指的是對數(shù)據(jù)庫進行完整的備份。
2、增量備份。 指的是在上一次備份的基礎(chǔ)上,對更新的數(shù)據(jù)進行備份,而不是備份所有數(shù)據(jù)。
3、日志備份。 指的是對數(shù)據(jù)庫的日志進行備份,mysql主從同步架構(gòu)中就是采用這種備份方式。
二、mysql數(shù)據(jù)庫導(dǎo)出
(一)mysqldump導(dǎo)出數(shù)據(jù)
mysqldump是mysql數(shù)據(jù)庫自帶的數(shù)據(jù)備份導(dǎo)出的工具,該工具支持myisam和innodb引擎的數(shù)據(jù)表。mysqldump備份使用參數(shù)如下:
-u:表示指定登錄數(shù)據(jù)庫使用的用戶。
-p:表示指定登錄數(shù)據(jù)庫使用的用戶密碼。
-d:表示導(dǎo)出時只導(dǎo)出數(shù)據(jù)庫的表結(jié)構(gòu)。
-t:表示導(dǎo)出時只導(dǎo)出數(shù)據(jù)庫的具體數(shù)據(jù)而不包括表結(jié)構(gòu)。
-a:表示導(dǎo)出所有的數(shù)據(jù)庫。
使用mysqldump示例如下:
1
2
3
4
5
|
mysqldump -uroot -proot -a >all_database.sql mysqldump -uroot -proot pzz > pzz.sql mysqldump -uroot -proot pzz student > student.sql mysqldump -uroot -proot -d pzz > pzz_table.sql mysqldump -uroot -proot -t pzz > pzz_data.sql |
上述五條命令,分別表示導(dǎo)出數(shù)據(jù)庫中的所有數(shù)據(jù),導(dǎo)出pzz數(shù)據(jù)庫中的數(shù)據(jù),導(dǎo)出pzz數(shù)據(jù)庫中student表中的所有數(shù)據(jù),導(dǎo)出pzz數(shù)據(jù)庫中表結(jié)構(gòu)相關(guān)數(shù)據(jù)以及導(dǎo)出pzz數(shù)據(jù)庫中除了表結(jié)構(gòu)之外的實際數(shù)據(jù)。
使用mysqldump導(dǎo)出的文件,結(jié)果如下所示:
(二)mysqlhotcopy裸文件備份
在mysql5.5及以下版本的數(shù)據(jù)庫中(mysql5.7版本的數(shù)據(jù)庫中已經(jīng)刪去mysqlhotcopy命令),可以進行快速備份。mysqlhotcopy所進行的備份,本質(zhì)上就是對數(shù)據(jù)庫庫表文件的直接物理復(fù)制,只不過在復(fù)制時使用了鎖對數(shù)據(jù)庫的內(nèi)容進行了鎖定。并且,mysqlhotcopy命令只能備份myisam引擎的數(shù)據(jù)表。mysqlhotcopy命令使用示例如下:
1
2
|
mysqlhotcopy -u root -p root pzz /root mysqlhotcopy -u root -p root pzz./student/root |
上面兩條命令,第一條是對pzz數(shù)據(jù)庫進行備份,第二條是對pzz數(shù)據(jù)庫中的student數(shù)據(jù)表進行備份。備份過程如下:
(三)mysqldump與mysqlhotcopy比較
1、mysqldump會備份成.sql文件,而mysqlhotcopy采用的是裸文件備份。
2、mysqldump備份和恢復(fù)比mysqlhotcopy速度慢,因此不適合大文件備份。
3、mysqldump支持myisam和innodb引擎,而mysqlhotcopy只支持myisam引擎。
4、mysqlhotcopy在mysql5.5(不含)以上的版本中不自帶。
5、mysqlhotcopy只能運行在數(shù)據(jù)庫所在的設(shè)備上,而mysqldump可以運行在本地設(shè)備上,也可以運行在遠程客戶端。
6、mysqldump和mysqlhotcopy在運行時,都會對數(shù)據(jù)庫進行上鎖操作。
7、mysqldump備份的恢復(fù)本質(zhì)上是對.sql文件中sql語句的執(zhí)行,而mysqlhotcopy備份的回復(fù)本質(zhì)上是直接覆蓋。
三、mysql數(shù)據(jù)庫導(dǎo)入
如果我們采用mysqlhotcopy對數(shù)據(jù)庫進行備份,那么在恢復(fù)時只需要將備份的數(shù)據(jù)覆蓋原有的數(shù)據(jù)即可。而如果對mysqldump導(dǎo)出的.sql文件進行恢復(fù),則需要進行mysql的數(shù)據(jù)導(dǎo)入。mysql數(shù)據(jù)庫的導(dǎo)入,有兩種方式,一種是使用“<”符號,直接將.sql文件中的信息導(dǎo)入mysql數(shù)據(jù)庫,第二種是在登入數(shù)據(jù)庫后,使用source命令導(dǎo)入數(shù)據(jù)。
例如,要導(dǎo)入exp.sql的備份數(shù)據(jù),則可以執(zhí)行命令:
1
|
mysql -uroot -proot < exp.sql |
或者是登錄進入數(shù)據(jù)庫后,執(zhí)行:
1
|
source /root/exp.sql |
總結(jié)
到此這篇關(guān)于mysql導(dǎo)入與導(dǎo)出備份詳解的文章就介紹到這了,更多相關(guān)mysql備份內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/weixin_40228200/article/details/122097266