SQL Server 提供了一個(gè)用于托管關(guān)系數(shù)據(jù)庫的平臺(tái)。制定不會(huì)中斷任務(wù)關(guān)鍵型 SQL Server 工作負(fù)載的災(zāi)難恢復(fù)計(jì)劃至關(guān)重要。Microsoft SQL Server是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),它可以支持廣泛的應(yīng)用程序,但數(shù)據(jù)必須隨時(shí)供這些應(yīng)用程序使用。
數(shù)據(jù)庫服務(wù)的任何中斷--無論是自然災(zāi)害、設(shè)備故障、網(wǎng)絡(luò)攻擊還是其他原因--都可能妨礙組織執(zhí)行日常操作和開展日常業(yè)務(wù)。這可能導(dǎo)致用戶不滿、收入損失和聲譽(yù)受損。組織必須制定有效的災(zāi)難恢復(fù)策略,以幫助最大限度地減少對數(shù)據(jù)庫服務(wù)的中斷SQL Server 服務(wù),尤其是在支持任務(wù)關(guān)鍵型工作負(fù)載時(shí)。各種類型和規(guī)模的組織都使用SQL Server來支持事務(wù)處理、商業(yè)智能和分析應(yīng)用程序。
做最壞的打算
與類似的數(shù)據(jù)庫產(chǎn)品(如Oracle數(shù)據(jù)庫或IBM的Db2)一樣,SQL Server是基于結(jié)構(gòu)化查詢語言(SQL)構(gòu)建的,這是一種標(biāo)準(zhǔn)化編程語言,為管理關(guān)系數(shù)據(jù)庫和查詢其數(shù)據(jù)提供了基礎(chǔ)。SQL Server使用SQL的修改后的實(shí)現(xiàn)(稱為Transact-SQL),它為標(biāo)準(zhǔn)語言添加了一組專有的編程擴(kuò)展。
依賴SQL Server的應(yīng)用程序必須能夠訪問數(shù)據(jù)以滿足工作負(fù)載要求,但意外事件可能導(dǎo)致數(shù)據(jù)庫不可用或數(shù)據(jù)丟失。數(shù)據(jù)服務(wù)中斷的原因有很多,包括:
- 用戶無意中刪除關(guān)鍵數(shù)據(jù);
- 一種惡意軟件攻擊 加密或銷毀數(shù)據(jù);
- 員工將咖啡灑在存儲(chǔ)系統(tǒng)上;
- 電源故障導(dǎo)致數(shù)據(jù)損壞;
- 地震會(huì)破壞物理存儲(chǔ)基礎(chǔ)設(shè)施;
- 硬盤驅(qū)動(dòng)器(HDD)發(fā)生故障并且該驅(qū)動(dòng)器上的所有數(shù)據(jù)丟失;
- 管理員無意中格式化包含活動(dòng)數(shù)據(jù)的HDD;
- 軟件損壞導(dǎo)致數(shù)據(jù)丟失或缺乏可用性;
- 流氓雇員竊取物理存儲(chǔ)設(shè)備。
這些絕不是數(shù)據(jù)可能變得不可用的唯一原因,而是說明了隨時(shí)可能襲擊任何組織的各種危機(jī)。無論原因是什么,防止數(shù)據(jù)丟失和服務(wù)中斷的唯一方法是實(shí)施災(zāi)難恢復(fù)策略 幸運(yùn)的是,SQL Server具有可幫助抵御災(zāi)難的功能,其中許多功能是該平臺(tái)高可用性功能的一部分。
災(zāi)難恢復(fù)計(jì)劃的主要目標(biāo)是在發(fā)生災(zāi)難時(shí)確保業(yè)務(wù)連續(xù)性。但是,并非所有計(jì)劃都是相同的,也不應(yīng)該是相同的。應(yīng)根據(jù)組織的特定數(shù)據(jù)保護(hù)要求定制災(zāi)難恢復(fù)計(jì)劃。例如,驅(qū)動(dòng)任務(wù)關(guān)鍵型財(cái)務(wù)應(yīng)用程序的數(shù)據(jù)可能需要立即恢復(fù),但用于生成月度銷售報(bào)告的數(shù)據(jù)可能會(huì)容忍更長的延遲。在規(guī)劃災(zāi)難恢復(fù)策略時(shí),組織應(yīng)確定以下三個(gè)指標(biāo):
- 恢復(fù)時(shí)間目標(biāo)(RTO)。 這是應(yīng)用程序因數(shù)據(jù)不可用而可處于脫機(jī)狀態(tài)的最長時(shí)間。此度量確定數(shù)據(jù)在事件發(fā)生后需要以多快的速度恢復(fù)聯(lián)機(jī)。
- 恢復(fù)點(diǎn)目標(biāo)(RPO)。 這是發(fā)生事件時(shí)可以容忍的可接受數(shù)據(jù)丟失量。通常根據(jù)時(shí)間來考慮此度量。例如,如果數(shù)據(jù)庫每兩小時(shí)備份一次,并且在下一次計(jì)劃備份之前發(fā)生災(zāi)難,則自上次備份以來發(fā)生的所有數(shù)據(jù)更改都將丟失。
- 恢復(fù)水平目標(biāo)(RLO)。 這是恢復(fù)數(shù)據(jù)的粒度級別,例如實(shí)例、數(shù)據(jù)庫或表級別。
組織最終必須在數(shù)據(jù)丟失風(fēng)險(xiǎn)與實(shí)施災(zāi)難恢復(fù)策略的成本之間進(jìn)行平衡。RTO和RPO (in時(shí)間越長,RLO粒度,成本就越大。
SQL Server的災(zāi)難恢復(fù)策略
在組織確定所需的保護(hù)級別后,他們可以利用以下SQL Server功能來幫助減輕意外服務(wù)中斷的影響:
- 備份和恢復(fù)。 經(jīng)過充分測試的備份和恢復(fù)策略可以幫助保護(hù)數(shù)據(jù)庫免受各種問題的影響,包括勒索軟件、用戶錯(cuò)誤、硬件故障和自然災(zāi)害。將數(shù)據(jù)備份到單獨(dú)的位置可以恢復(fù)數(shù)據(jù)庫 保持一致的狀態(tài),避免災(zāi)難性的數(shù)據(jù)丟失;然而,恢復(fù)數(shù)據(jù)庫可能是一個(gè)耗時(shí)的過程,并且在上次備份后所做的數(shù)據(jù)更改會(huì)丟失。隨著勒索軟件攻擊的增加,備份變得尤為重要。
- Always On可用性組。 與備份一樣,可用性組提供數(shù)據(jù)庫級保護(hù)。可用性組由一組數(shù)據(jù)庫組成,這些數(shù)據(jù)庫一起故障切換到輔助實(shí)例。SQL Server最多可支持八套 可用性組中相應(yīng)輔助數(shù)據(jù)庫的數(shù)量。在可用性組中,數(shù)據(jù)庫的事務(wù)將應(yīng)用于另一個(gè)SQL Server實(shí)例上的復(fù)制副本數(shù)據(jù)庫。可用性組用作數(shù)據(jù)庫鏡像的替代品,數(shù)據(jù)庫鏡像仍受支持,但在SQL Server 2012中已棄用。
- Always On故障轉(zhuǎn)移群集實(shí)例。 故障轉(zhuǎn)移群集使用Windows Server故障轉(zhuǎn)移群集(WSFC) 節(jié)點(diǎn)框架,以提供實(shí)例級保護(hù),其中包括數(shù)據(jù)庫、鏈接服務(wù)器、SQL Server代理作業(yè)以及其他實(shí)例和數(shù)據(jù)庫對象。故障轉(zhuǎn)移群集由冗余節(jié)點(diǎn)組成,但一次只能有一個(gè)節(jié)點(diǎn)擁有WSFC資源組。群集還需要共享存儲(chǔ)系統(tǒng),如存儲(chǔ)區(qū)域網(wǎng)絡(luò)。故障轉(zhuǎn)移是自動(dòng)的,并且對連接的應(yīng)用程序透明。
- SQL Server復(fù)制。 通過復(fù)制,可以將數(shù)據(jù)和數(shù)據(jù)庫對象從一個(gè)數(shù)據(jù)庫復(fù)制和分發(fā)到另一個(gè)數(shù)據(jù)庫,然后使這些數(shù)據(jù)庫保持同步。SQL Server支持三種類型的復(fù)制:事務(wù)、快照和合并。組織可以使用復(fù)制將數(shù)據(jù)分布到局域網(wǎng)、廣域網(wǎng)、無線連接和Internet上的不同位置。SQL Server復(fù)制使用SQL Server代理同步數(shù)據(jù)庫及其數(shù)據(jù)。
- 日志傳送。 日志傳送使管理員能夠?qū)⒁粋€(gè)SQL Server實(shí)例上的數(shù)據(jù)庫事務(wù)日志自動(dòng)應(yīng)用于不同實(shí)例上的一個(gè)或多個(gè)輔助數(shù)據(jù)庫。監(jiān)視服務(wù)器維護(hù)備份和還原操作的歷史記錄和狀態(tài),并在操作失敗時(shí)發(fā)出警報(bào)。日志傳送使用SQL Server的備份和還原功能將事務(wù)日志從主實(shí)例復(fù)制到輔助實(shí)例。雖然日志傳送很容易實(shí)現(xiàn),但是切換到輔助數(shù)據(jù)庫是一個(gè)手動(dòng)操作,可能需要花費(fèi)大量時(shí)間。
許多組織將這些功能組合部署,以幫助最大限度地保護(hù)數(shù)據(jù)并最大限度地減少停機(jī)時(shí)間。例如,數(shù)據(jù)庫團(tuán)隊(duì)可能會(huì)使用日志傳送沿著可用性組來保護(hù)其數(shù)據(jù)庫。此外,大多數(shù)組織都會(huì)維護(hù)備份,而不管他們部署的是什么其他策略。許多組織還將SQL Server災(zāi)難恢復(fù)作為更大的災(zāi)難恢復(fù)策略的一部分來實(shí)施,該策略包含多個(gè)級別的保護(hù)。例如配置RAID 6存儲(chǔ) 或備份運(yùn)行SQL Server實(shí)例的虛擬機(jī)。
無論組織實(shí)施何種災(zāi)難恢復(fù)策略,都首先需要進(jìn)行仔細(xì)規(guī)劃,考慮RTO、RPO和RLO要求以及安全性和合規(guī)性等因素。災(zāi)難恢復(fù)還與組織的高可用性策略密切相關(guān),后者依賴于許多相同的SQL Server工具。無論組織的類型或規(guī)模如何,災(zāi)難恢復(fù)都應(yīng)是重中之重。組織在處理災(zāi)難時(shí)準(zhǔn)備得越充分,就越有可能在災(zāi)難發(fā)生時(shí)度過難關(guān)。