搞懂?一文拆解三種備份模式,選對(duì)方案不踩坑)
開(kāi)篇你真的了解這三種備份模式嗎在上一篇文章中我們正式官宣了松鼠備份數(shù)據(jù)庫(kù)備份功能即將上線的消息也提到了**“全量備份”、“差異備份”、“日志備份”**這三個(gè)關(guān)鍵詞。很多用戶留言問(wèn)我們“全量和差異到底有啥區(qū)別”“日志備份是不是每天做一次就夠了”“三種模式可以同時(shí)開(kāi)嗎會(huì)不會(huì)太占硬盤(pán)”這些問(wèn)題問(wèn)得非常好。說(shuō)實(shí)話很多用了好幾年數(shù)據(jù)庫(kù)的管理員也未必能把這三者的原理和適用場(chǎng)景說(shuō)得清楚。今天這篇文章我們就用最通俗的語(yǔ)言、最直觀的對(duì)比把三種備份模式徹底講透。不管你用的是SQL Server、MySQL還是其他數(shù)據(jù)庫(kù)這些底層邏輯都是相通的。讀完這篇文章你會(huì)清楚地知道三種模式各自是什么、怎么工作的各自的優(yōu)缺點(diǎn)和適用場(chǎng)景如何組合使用才能兼顧安全與成本松鼠備份如何讓這一切變得極其簡(jiǎn)單 一、全量備份Full Backup—— 數(shù)據(jù)庫(kù)的“完整克隆”1.1 是什么全量備份顧名思義就是把數(shù)據(jù)庫(kù)里的所有內(nèi)容——包括數(shù)據(jù)文件、日志文件、表結(jié)構(gòu)、索引、存儲(chǔ)過(guò)程、視圖、約束等——完整地復(fù)制一份生成一個(gè)完整的備份文件。你可以把它理解為給整個(gè)數(shù)據(jù)庫(kù)拍了一張高清全家福。在SQL Server中全量備份生成的是.bak文件在MySQL中對(duì)應(yīng)的是物理備份或邏輯導(dǎo)出文件。無(wú)論格式如何核心邏輯是一樣的一個(gè)文件包含全部數(shù)據(jù)。1.2 工作原理當(dāng)執(zhí)行一次全量備份時(shí)數(shù)據(jù)庫(kù)引擎會(huì)做以下幾件事鎖定數(shù)據(jù)庫(kù)或特定文件組確保備份過(guò)程中數(shù)據(jù)一致。掃描所有數(shù)據(jù)頁(yè)從第一個(gè)數(shù)據(jù)頁(yè)到最后一個(gè)。復(fù)制所有已分配的數(shù)據(jù)頁(yè)到備份介質(zhì)。記錄備份元信息備份時(shí)間、LSN日志序列號(hào)范圍、數(shù)據(jù)庫(kù)狀態(tài)等。釋放鎖定恢復(fù)數(shù)據(jù)庫(kù)正常運(yùn)行。 核心細(xì)節(jié)全量備份復(fù)制的是所有已使用的數(shù)據(jù)頁(yè)不是整個(gè)MDF文件的大小。如果數(shù)據(jù)庫(kù)中有大量空閑空間全量備份文件會(huì)比MDF文件小不少。1.3 優(yōu)缺點(diǎn)分析? 優(yōu)點(diǎn)? 缺點(diǎn)恢復(fù)最簡(jiǎn)單僅需1份備份文件即可完整還原不需要依賴其他任何文件文件體積大數(shù)據(jù)庫(kù)多大全量備份就多大甚至更大因?yàn)榘~外元數(shù)據(jù)操作門(mén)檻低財(cái)務(wù)、行政人員經(jīng)過(guò)簡(jiǎn)單培訓(xùn)也能操作不需要懂SQL備份時(shí)間長(zhǎng)需要掃描整個(gè)數(shù)據(jù)庫(kù)幾百GB的庫(kù)可能耗時(shí)數(shù)小時(shí)恢復(fù)速度快相比差異日志的組合恢復(fù)全量恢復(fù)直接還原一步到位占用資源多備份過(guò)程中消耗大量I/O和CPU資源可能影響業(yè)務(wù)性能獨(dú)立性強(qiáng)不依賴任何歷史備份單文件存檔方便長(zhǎng)期保留頻率受限因?yàn)樯鲜鲈蛉總浞莶豢赡茏龅煤茴l繁通常每天/每周一次1.4 適用場(chǎng)景? 作為所有備份策略的基礎(chǔ)“底座”定期執(zhí)行。? 數(shù)據(jù)庫(kù)體積較小幾十GB以內(nèi)每日全量成本可接受。? 系統(tǒng)升級(jí)、月末結(jié)賬、年度關(guān)賬前的手動(dòng)保險(xiǎn)備份。? 數(shù)據(jù)庫(kù)遷移前的最后一道防線。?不適合超大數(shù)據(jù)庫(kù)TB級(jí)的頻繁備份。 一句話總結(jié)全量備份是地基是所有備份策略的起點(diǎn)。不能沒(méi)有但不能全靠它。 二、差異備份Differential Backup—— 只備份“變化的部分”2.1 是什么差異備份備份的是從上一次全量備份完成之后到當(dāng)前時(shí)間點(diǎn)數(shù)據(jù)庫(kù)發(fā)生的所有變化數(shù)據(jù)。??注意一個(gè)關(guān)鍵點(diǎn)差異備份是累積型的。它不會(huì)因?yàn)槎啻螆?zhí)行而變成“增量備份”。2.2 工作原理為了理解差異備份你需要先了解SQL Server中的一個(gè)核心概念——差異基準(zhǔn)Differential Base。每次執(zhí)行全量備份時(shí)數(shù)據(jù)庫(kù)引擎會(huì)記錄一個(gè)差異基準(zhǔn)LSN。差異備份就是備份從差異基準(zhǔn)LSN之后發(fā)生變化的區(qū)Extent。SQL Server按“區(qū)”8個(gè)連續(xù)數(shù)據(jù)頁(yè)共64KB為單位跟蹤變化。當(dāng)某個(gè)區(qū)的任何數(shù)據(jù)頁(yè)發(fā)生變化整個(gè)區(qū)就會(huì)被標(biāo)記為“已變更”下次差異備份時(shí)就會(huì)包含這個(gè)區(qū)。這就解釋了差異備份為什么會(huì)越往后越大——因?yàn)閺纳洗稳總浞菀詠?lái)變化的區(qū)越來(lái)越多。到下一次全量備份之前差異備份可能已經(jīng)接近全量的大小。2.3 全量備份 vs 差異備份的直觀對(duì)比假設(shè)一個(gè)100GB的數(shù)據(jù)庫(kù)每天變化量約5GB時(shí)間全量備份大小差異備份大小周一全量后100GB—周二—5GB周一到周二的變化周三—10GB周一到周三的累積變化周四—15GB周一到周四的累積變化周日下次全量前—可能超過(guò)50GB這就是為什么差異備份不能無(wú)限期執(zhí)行——需要定期重置差異基準(zhǔn)也就是重新做一次全量備份。2.4 優(yōu)缺點(diǎn)分析? 優(yōu)點(diǎn)? 缺點(diǎn)備份速度快只備份變化的數(shù)據(jù)頁(yè)比全量備份快得多恢復(fù)需要兩份文件必須同時(shí)擁有最近一次全量 最新的差異備份缺一不可文件體積小相比全量備份差異備份通常小很多尤其是在全量周期早期越往后越大差異備份是累積型的越接近下一次全量文件越大節(jié)省存儲(chǔ)空間同樣的備份頻率差異備份比全量備份占用空間小無(wú)法精確到時(shí)間點(diǎn)差異備份只能還原到備份完成的那個(gè)時(shí)間點(diǎn)不能回滾到任意分鐘操作門(mén)檻適中恢復(fù)時(shí)需要兩份文件但操作仍屬簡(jiǎn)單范疇2.5 適用場(chǎng)景? 全量備份之間需要增加恢復(fù)點(diǎn)從每天1個(gè)點(diǎn)變成每天2-4個(gè)點(diǎn)。? 數(shù)據(jù)庫(kù)較大每天做全量成本太高。? 不需要分鐘級(jí)精準(zhǔn)恢復(fù)但對(duì)數(shù)據(jù)空窗期有要求的場(chǎng)景。?不適合需要“任意時(shí)間點(diǎn)恢復(fù)”的核心生產(chǎn)系統(tǒng)那得上日志備份。2.6 ?? 重要概念差異備份 ≠ 增量備份很多人把差異和增量搞混這里特別說(shuō)明對(duì)比維度差異備份增量備份備份內(nèi)容上次全量以來(lái)的所有變化上次備份任意類(lèi)型以來(lái)的變化累積性累積型越往后越大非累積型每次大小相對(duì)固定恢復(fù)所需文件最近全量 最新差異全量 所有增量鏈恢復(fù)復(fù)雜度中等2份文件較復(fù)雜需要完整鏈 松鼠備份的選擇松鼠備份目前支持的是差異備份而不是增量備份。因?yàn)椴町悅浞莼謴?fù)更簡(jiǎn)單、出錯(cuò)概率更低更適合大多數(shù)企業(yè)用戶。 一句話總結(jié)差異是“省空間版的多次克隆”在全量之間增加恢復(fù)點(diǎn)但需要搭配全量使用。 三、日志備份Transaction Log Backup—— 記錄每一筆“操作流水”3.1 是什么日志備份備份的是數(shù)據(jù)庫(kù)的事務(wù)日志。事務(wù)日志Transaction Log是每個(gè)SQL Server數(shù)據(jù)庫(kù)都有的核心組件它記錄了數(shù)據(jù)庫(kù)中每一筆數(shù)據(jù)修改操作的完整信息——誰(shuí)、什么時(shí)候、對(duì)哪個(gè)表哪條記錄、做了什么樣的修改。做日志備份就是把這段時(shí)間產(chǎn)生的所有日志記錄備份下來(lái)形成一個(gè)獨(dú)立的備份文件SQL Server中為.trn文件。3.2 工作原理事務(wù)日志記錄了以下類(lèi)型操作DML操作INSERT、UPDATE、DELETE每一條都有完整記錄。DDL操作CREATE、ALTER、DROP等結(jié)構(gòu)變更。事務(wù)信息BEGIN TRAN、COMMIT、ROLLBACK。LSN日志序列號(hào)每條日志記錄的唯一編號(hào)。日志備份的過(guò)程從上次日志備份結(jié)束的LSN位置開(kāi)始。將所有新的日志記錄寫(xiě)入備份文件。備份完成后截?cái)嘁褌浞莸娜罩究臻g在完整恢復(fù)模式下。釋放日志文件.ldf中的空間防止無(wú)限增長(zhǎng)。?? 關(guān)鍵提醒這就是為什么“完整恢復(fù)模式必須定期備份日志”——如果不備份日志永遠(yuǎn)不會(huì)截?cái)鄷?huì)一直漲到撐滿磁盤(pán)。3.3 日志備份的最大優(yōu)勢(shì)PITR時(shí)間點(diǎn)恢復(fù)PITRPoint-In-Time Recovery是日志備份最核心的價(jià)值。簡(jiǎn)單來(lái)說(shuō)就是可以還原到任意指定的時(shí)間點(diǎn)精確到分鐘。假設(shè)數(shù)據(jù)庫(kù)在下午3:47發(fā)生了故障你可能丟失了最后7分鐘的數(shù)據(jù)。但如果你有日志備份你可以還原最近一次全量備份還原最近一次差異備份逐個(gè)還原故障前的日志備份在最后一個(gè)日志備份中選擇還原到3:45這個(gè)時(shí)間點(diǎn)這樣你只丟失了3:45到3:47之間的2分鐘數(shù)據(jù)而不是一整天的數(shù)據(jù)。對(duì)于核心生產(chǎn)系統(tǒng)來(lái)說(shuō)這2分鐘可能就是幾萬(wàn)條訂單、幾百個(gè)工單、幾車(chē)皮的物流單據(jù)——價(jià)值連城。3.4 優(yōu)缺點(diǎn)分析? 優(yōu)點(diǎn)? 缺點(diǎn)及應(yīng)對(duì)數(shù)據(jù)丟失最少可以還原到故障前的最后一個(gè)日志備份點(diǎn)丟失量按分鐘計(jì)算必須使用“完整”恢復(fù)模式松鼠備份會(huì)自動(dòng)檢測(cè)并提示調(diào)整支持PITR可精確恢復(fù)到任意時(shí)間點(diǎn)、事務(wù)標(biāo)記、LSN必須定期執(zhí)行否則日志文件會(huì)無(wú)限增長(zhǎng)松鼠備份支持自動(dòng)化定時(shí)執(zhí)行文件體積小每次日志備份只包含這段時(shí)間的操作日志非常輕量恢復(fù)相對(duì)復(fù)雜需要按順序還原全量→差異→日志鏈但松鼠備份會(huì)簡(jiǎn)化操作頻率可以很高因?yàn)槲募】梢悦啃r(shí)甚至每10分鐘執(zhí)行一次日志備份本身有大小高頻日志備份會(huì)產(chǎn)生大量小文件需要妥善管理3.5 適用場(chǎng)景? 24小時(shí)不間斷運(yùn)行的核心生產(chǎn)系統(tǒng)MES、WMS、TMS等。? 對(duì)數(shù)據(jù)丟失零容忍的業(yè)務(wù)場(chǎng)景。? 需要滿足合規(guī)審計(jì)要求的數(shù)據(jù)保留場(chǎng)景。?不適合夜間停用的小型辦公系統(tǒng)殺雞用牛刀不劃算。 一句話總結(jié)日志備份是“安全級(jí)別最高的備份”丟數(shù)據(jù)最少但需要完整恢復(fù)模式配合且必須定期執(zhí)行。 四、三張圖秒懂三者區(qū)別圖1備份內(nèi)容的差異全量備份 ┌─────────────────────────────────────────────┐ │ 所有數(shù)據(jù)頁(yè) 所有日志 所有元數(shù)據(jù) │ │ 數(shù)據(jù)庫(kù)的全部 │ └─────────────────────────────────────────────┘ 差異備份 ┌─────────────────────────────────────────────┐ │ 從上一次全量之后所有變化過(guò)的區(qū) │ │ 變化的部分累積 │ └─────────────────────────────────────────────┘ 日志備份 ┌─────────────────────────────────────────────┐ │ 每一筆操作的詳細(xì)記錄 │ │ 操作流水賬 │ └─────────────────────────────────────────────┘圖2恢復(fù)所需文件對(duì)比全量恢復(fù)只需1份文件 [全量.bak] → 恢復(fù)完成 ? 差異恢復(fù)需要2份文件 [全量.bak] [最新差異.bak] → 恢復(fù)完成 ? 日志恢復(fù)需要3份及以上 [全量.bak] [差異.bak] [日志1.trn] [日志2.trn] ... → 恢復(fù)完成 ?圖3執(zhí)行頻率對(duì)比全量備份頻率最低通常每周/每天 差異備份中等頻率每天1-4次 日志備份高頻每小時(shí)甚至更短 五、三種模式如何組合核心重點(diǎn)三種模式不是互斥的而是可以同時(shí)啟用分工合作。組合方式與效果對(duì)比組合方式恢復(fù)點(diǎn)頻率存儲(chǔ)空間占用恢復(fù)復(fù)雜度數(shù)據(jù)安全性適用場(chǎng)景僅全量每天/每周1個(gè)點(diǎn)最高最簡(jiǎn)單 ?最低小型系統(tǒng)、測(cè)試庫(kù)全量差異每天多個(gè)點(diǎn)中等簡(jiǎn)單 ??中等ERP、進(jìn)銷(xiāo)存全量差異日志分鐘級(jí)多個(gè)點(diǎn)差異較大日志小中等 ???最高M(jìn)ES、WMS、TMS為什么說(shuō)“組合”是最佳實(shí)踐單一模式都無(wú)法同時(shí)滿足“安全、經(jīng)濟(jì)、簡(jiǎn)單”三個(gè)目標(biāo)僅全量最安全不恢復(fù)點(diǎn)間隔太長(zhǎng)空窗期數(shù)據(jù)無(wú)法找回。僅差異沒(méi)有全量做基準(zhǔn)差異備份無(wú)從談起。僅日志沒(méi)有全量和差異日志備份沒(méi)有可恢復(fù)的基礎(chǔ)。三者組合各司其職?全量 打地基低頻大包差異 蓋樓層中頻中包?日志 做裝修記錄高頻小包? 六、松鼠備份怎么幫你搞定這一切理論講完了但實(shí)際配置可能讓很多人頭疼。松鼠備份的數(shù)據(jù)庫(kù)備份功能讓這一切變得極其簡(jiǎn)單6.1 一鍵應(yīng)用行業(yè)方案內(nèi)置三套標(biāo)準(zhǔn)化方案選中即生效辦公模式每日全量工廠模式每周全量 每日差異 每小時(shí)日志標(biāo)準(zhǔn)模式每周全量 每日2次差異6.2 ?? 自由靈活的高級(jí)配置如果你有自己的想法也可以手動(dòng)配置每種模式的執(zhí)行頻率全量備份自定義周期每日/每周/每月指定具體時(shí)間差異備份自定義頻率每天1-24次指定時(shí)間點(diǎn)日志備份自定義間隔最短可到分鐘級(jí)6.3 ? 自動(dòng)化定時(shí)執(zhí)行所有配置保存后松鼠備份會(huì)自動(dòng)按計(jì)劃執(zhí)行不需要人工值守不需要手動(dòng)觸發(fā)失敗自動(dòng)重試 告警通知6.4 異地同步容災(zāi)本地備份完成后自動(dòng)同步一份到異地存儲(chǔ)。本地硬盤(pán)壞了服務(wù)器被勒索了機(jī)房著火了異地還有一份。6.5 ? 界面極簡(jiǎn)小白都會(huì)用關(guān)鍵界面簡(jiǎn)單到讓人放心——不需要寫(xiě)任何SQL命令不需要打開(kāi)SSMS不需要看微軟官方文檔。用最省空間的辦法做到最大頻率的備份。 ——這就是松鼠備份的設(shè)計(jì)目標(biāo)。 結(jié)尾 下篇預(yù)告今天這篇文章我們把三種備份模式的原理、優(yōu)缺點(diǎn)、適用場(chǎng)景、組合方式全部拆解了一遍。希望你讀完以后能夠清楚地回答這三個(gè)問(wèn)題? 全量、差異、日志分別備份什么答全部數(shù)據(jù)、變化數(shù)據(jù)、操作流水? 我該選哪種組合答看你的業(yè)務(wù)場(chǎng)景——辦公、工廠還是標(biāo)準(zhǔn)? 松鼠備份能幫我省多少事答從“要懂SQL”到“點(diǎn)幾下鼠標(biāo)” 下一篇預(yù)告道理都懂了但具體到自己的企業(yè)還是不知道怎么選下一篇我們直接上實(shí)戰(zhàn)——財(cái)務(wù)、工廠、商貿(mào)三種典型場(chǎng)景三套直接能抄作業(yè)的方案。對(duì)號(hào)入座照著配就行。