聊一聊MySQL的備份和恢復(fù)

一 物理備份(原始備份)與邏輯備份
1.物理備份
物理備份指將數(shù)據(jù)庫(kù)內(nèi)容的目錄和數(shù)據(jù)文件、日志文件及配置文件的原始副本全部備份,適用于大型重要的數(shù)據(jù)庫(kù)在出現(xiàn)問(wèn)題時(shí)需要快速恢復(fù)的場(chǎng)景。
1.1 物理備份方法具有以下特征
-
物理備份包括數(shù)據(jù)庫(kù)目錄和文件的精確副本。通常這是 MySQL數(shù)據(jù)目錄的全部或部分副本。 -
物理備份方法比邏輯備份方法快,因?yàn)樗鼈冎簧婕拔募?fù)制而不設(shè)計(jì)文件轉(zhuǎn)換。 -
物理備份可以在 MySQL服務(wù)器停止時(shí)執(zhí)行備份。如果服務(wù)器正在運(yùn)行,則需要執(zhí)行適當(dāng)?shù)逆i定,以便服務(wù)器在備份期間不更改數(shù)據(jù)庫(kù)內(nèi)容。MySQL Enterprise Backup(MySQL提供企業(yè)級(jí)備份和恢復(fù)。它可以在多種平臺(tái)上提供熱備份、在線備份和非阻塞備份)可以自動(dòng)鎖定需要備份的表。 -
除了數(shù)據(jù)文件之外,備份還可以包括任何相關(guān)文件,如日志或配置文件。 -
物理備份工具包括 mysqlbackup(MySQL Enterprise Backup組件的一部分),或MyISAM表的文件系統(tǒng)命令(如cp、 scp、 tar、 rsync)。
1.2 物理備份恢復(fù)
-
MySQL Enterprise Backup恢復(fù) -
ndb_restore還原恢復(fù) NDB表(NDB引擎) -
使用文件系統(tǒng)命令復(fù)制的文件可以使用文件系統(tǒng)命令復(fù)制回原來(lái)的位置
2.邏輯備份
邏輯備份是指將數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)(CREATE DATABASE、 CREATE TABLE 語(yǔ)句)和內(nèi)容(INSERT 語(yǔ)句或帶分隔符的文本文件)備份。它適用于小量的數(shù)據(jù),我們可以直接編輯備份的數(shù)據(jù),修改表結(jié)構(gòu)或者內(nèi)容,然后在不同的服務(wù)器上面重新構(gòu)建數(shù)據(jù);
2.1 邏輯備份方法具有以下特征
-
邏輯備份是通過(guò)查詢(xún) MySQL服務(wù)器獲取數(shù)據(jù)庫(kù)表結(jié)構(gòu)和表內(nèi)容信息來(lái)完成的。 -
邏輯備份比物理備份方法慢,因?yàn)榉?wù)器必須訪問(wèn)數(shù)據(jù)庫(kù)的信息并將其轉(zhuǎn)換為邏輯格式。如果輸出是在客戶端寫(xiě)的,服務(wù)器還必須將其發(fā)送到客戶端側(cè),網(wǎng)絡(luò)傳輸也是影響的一方面。 -
邏輯備份是在運(yùn)行 MySQL服務(wù)器的情況下執(zhí)行的。服務(wù)器不需要停機(jī)。 -
邏輯備份工具包括 mysqldump程序和SELECT... INTO OUTFILE語(yǔ)句。 -
備份不包括日志或配置文件。 -
要還原邏輯備份,可以使用 mysql客戶端(Navicat)處理sql格式的轉(zhuǎn)儲(chǔ)文件。若要加載帶分隔符的文本文件,請(qǐng)使用loaddata語(yǔ)句或mysqlimport客戶端。
二 在線備份和離線備份
在 MySQL 服務(wù)器運(yùn)行期間進(jìn)行備份,稱(chēng)為在線備份。反之服務(wù)器停止時(shí)進(jìn)行備份。稱(chēng)為離線備份。通常也可以稱(chēng)為“熱備份”和“冷備份” ;
1 在線備份方法具有以下特征
-
在線備份對(duì)其他客戶端的干擾較小,這些客戶端可以在備份期間連接到 MySQL服務(wù)器,并且可以訪問(wèn)數(shù)據(jù)。 -
必須注意施加適當(dāng)?shù)逆i定,防止備份期間數(shù)據(jù)修改導(dǎo)致備份數(shù)據(jù)不完整。 MySQL Enterprise Backup產(chǎn)品會(huì)自動(dòng)執(zhí)行這種鎖定。
2 離線備份方法具有以下特征
-
客戶端可能會(huì)受到負(fù)面影響,因?yàn)榉?wù)器在備份期間不可用。由于這個(gè)原因,這些備份數(shù)據(jù)通常是從從服務(wù)器上(主從復(fù)制)獲取的,當(dāng)然是在不影響可用性的情況下離線執(zhí)行。 -
備份過(guò)程更簡(jiǎn)單,因?yàn)椴淮嬖诳蛻舳嘶顒?dòng)干擾的可能性。
在備份期間,客戶端能夠在備份數(shù)據(jù)時(shí)讀取數(shù)據(jù)?;謴?fù)修改數(shù)據(jù)并且不只是讀取數(shù)據(jù),因此在還原數(shù)據(jù)時(shí)必須阻止客戶端訪問(wèn)數(shù)據(jù)。
三 本地備份與遠(yuǎn)程備份
本地備份指在運(yùn)行 MySQL 服務(wù)器的同一臺(tái)主機(jī)上執(zhí)行備份操作,而遠(yuǎn)程備份是在另一臺(tái)主機(jī)上執(zhí)行備份操作。對(duì)于某些類(lèi)型的備份,即使備份輸出是在服務(wù)器上,但可能是從遠(yuǎn)程主機(jī)啟動(dòng)備份。
-
mysqldump可以連接到本地或遠(yuǎn)程服務(wù)器。 -
SELECT ... INTO OUTFILE可以從本地或遠(yuǎn)程客戶端主機(jī)啟動(dòng)SELECT... INTO OUTFILE,但是輸出文件是在服務(wù)器主機(jī)上創(chuàng)建的。
更多內(nèi)容閱讀:mysqldump :https://dev.mysql.com/doc/refman/5.7/en/mysqldump.htmlSELECT ... INTO OUTFILE :https://dev.mysql.com/doc/refman/5.7/en/select-into.html
四 完全備份與增量備份
完全備份指?jìng)浞?MySQL 服務(wù)器在給定時(shí)間點(diǎn)管理的所有數(shù)據(jù)。增量備份指?jìng)浞萁o定時(shí)間范圍內(nèi)(從一個(gè)時(shí)間點(diǎn)到另一個(gè)時(shí)間點(diǎn))對(duì)數(shù)據(jù)所做的更改。Mysql 有不同的方法來(lái)執(zhí)行完全備份,如前面所述。通過(guò)啟用 MySQL 服務(wù)器的binlog二進(jìn)制日志(服務(wù)器用于記錄數(shù)據(jù)更改) ,可以進(jìn)行增量備份。
五 完全恢復(fù)與時(shí)間點(diǎn)(增量)恢復(fù)
完全恢復(fù)還原備份的所有數(shù)據(jù)。這會(huì)將服務(wù)器的數(shù)據(jù)恢復(fù)到備份時(shí)的狀態(tài)。如果該狀態(tài)不是當(dāng)前的,可以在完全恢復(fù)之后進(jìn)行增量恢復(fù),從而使服務(wù)器達(dá)到更新的狀態(tài)。
增量恢復(fù)是對(duì)給定時(shí)間跨度內(nèi)所做的更改進(jìn)行恢復(fù)。這也稱(chēng)為時(shí)間點(diǎn)恢復(fù)。時(shí)點(diǎn)恢復(fù)基于binlog二進(jìn)制日志,通常在完全恢復(fù)備份文件之后進(jìn)行,然后將寫(xiě)入二進(jìn)制日志文件中的數(shù)據(jù)更改作為增量恢復(fù)應(yīng)用于重做數(shù)據(jù)修改,并將服務(wù)器帶到所需的時(shí)間點(diǎn)。
百小僧:擁抱.NET 5,從這個(gè)極速開(kāi)發(fā)Web應(yīng)用框架開(kāi)始,F(xiàn)ur開(kāi)源了!
提升效率,必須推薦這12款谷歌插件!
