如何縮短SQL Server 2008停機時間
要使系統(tǒng)避免產(chǎn)生意外停機很困難,因為對于企業(yè)而言,意外的硬件或網(wǎng)絡(luò)故障、人為失誤、自然災(zāi)害或盜竊都可能會帶來災(zāi)難性后果。SQL Server Always On 提供了可從計劃外停機狀態(tài)中迅速恢復(fù)的技術(shù)。此外,通過適當(dāng)?shù)貙嵤?Always On 技術(shù),任務(wù)關(guān)鍵型應(yīng)用程序平穩(wěn)運行所需的系統(tǒng)維護和操作流程將使停機時間降至最低。
快速數(shù)據(jù)庫恢復(fù)
SQL Server 2008 Enterprise Edition Database Engine 能夠在崩潰恢復(fù)和數(shù)據(jù)庫鏡像故障轉(zhuǎn)移期間提供快速恢復(fù)。快速恢復(fù)功能使數(shù)據(jù)庫在恢復(fù)流程的還原階段即可使用,它在還原操作期間、數(shù)據(jù)庫頁校驗以及備份媒體鏡像期間均可提供部分可用性。通過支持快速恢復(fù),SQL Server 2008 將在最短的時間內(nèi)使數(shù)據(jù)庫處于在線狀態(tài),因此用戶很快就能使用數(shù)據(jù)庫,這要快于如下方法:等整個恢復(fù)流程全部完成后,用戶和應(yīng)用程序才可以執(zhí)行連接。
備份和還原
在高可用性解決方案中,備份至關(guān)重要,它要定期提供數(shù)據(jù)快照,并在出現(xiàn)大范圍故障或缺少其他高可用性解決方案時,作為數(shù)據(jù)源用以還原數(shù)據(jù)。
SQL Server 的備份媒體鏡像功能使用戶能夠?qū)?shù)據(jù)庫通過鏡像備份復(fù)制到多個備份設(shè)備上,當(dāng)媒體出現(xiàn)故障或備份設(shè)備丟失時,這將極大提高備份的可靠性。SQL Server 2008 支持在磁盤和磁帶上執(zhí)行鏡像備份,但所用的設(shè)備必須類似,以避免產(chǎn)生設(shè)備不匹配錯誤的風(fēng)險。備份鏡像集中的所有設(shè)備在備份過程中都必須可用,但數(shù)據(jù)庫可從鏡像集中的任何單獨備份中還原。要利用 Transact-SQL 執(zhí)行鏡像備份,必須使用 BACKUP 命令的 MIRROR TO 子句,如下例所示。
BACKUP DATABASE AdventureWorks TO TAPE = '\\.\tape0', TAPE = '\\.\tape1' MIRROR TO TAPE = '\\.\tape2', TAPE = '\\.\tape3' WITH FORMAT, MEDIANAME = 'AdventureWorksSet1'; GO |
SQL Server 的另一個備份可靠性特性是,在備份操作期間可以生成校驗和,然后校驗和可用于驗證還原后的數(shù)據(jù)庫。
SQL Server 2008 支持備份壓縮,最多可使備份大小減小50%。容量的減小使用戶能夠更頻繁地備份數(shù)據(jù),同時也會縮短還原時間。在 BACKUP 命令中,備份壓縮可設(shè)為 ON 或 OFF,并且可以利用 sp_configure 定義默認的壓縮值(on 或 off),以確定在執(zhí)行 BACKUP 命令時,是否需要制定壓縮選項。
數(shù)據(jù)頁上的校驗和
“校驗和”可比較寫入磁盤的值與后續(xù)讀取的值。如果這些值不一致,則該頁將被標(biāo)記為 suspect(可疑),然后要么手動還原,要么利用 SQL Server 2008 自動從伙伴服務(wù)器中還原。
在線索引操作
可用性會受到標(biāo)準(zhǔn)維護操作以及故障的影響。在早期 SQL Server 版本中,索引維護會使受影響的數(shù)據(jù)變?yōu)椴豢捎?,但從SQL Server 2005 開始,數(shù)據(jù)在“在線索引操作”期間均可保持可用性,這些可用的操作包括創(chuàng)建、放置或重建索引。
在執(zhí)行索引維護時,“在線索引操作”可提高所有系統(tǒng)的可用性,因此也能提高職員的工作效率,并改善客戶使用系統(tǒng)時的體驗。
在線、段落和頁級還原
SQL Server 2008 Enterprise Edition 支持“在線還原”,使用戶能夠訪問數(shù)據(jù)庫被還原的部分,即使數(shù)據(jù)庫的其他部分還不可用,因此這會提高恢復(fù)速度、縮短停機時間和提高可用性。此外,可以利用“段落還原”策略還原各階段的數(shù)據(jù)庫。例如,可以還原包含當(dāng)前活動數(shù)據(jù)的文件組,并且可先使數(shù)據(jù)庫處于在線狀態(tài),然后還原包含較舊的歸檔數(shù)據(jù)的文件組。在災(zāi)難恢復(fù)應(yīng)用場景下,段落還原策略可縮短任務(wù)關(guān)鍵型應(yīng)用程序處于離線狀態(tài)的時間。
由于少量數(shù)據(jù)頁發(fā)生損壞而需要恢復(fù)數(shù)據(jù)庫時,SQL Server 2008 支持頁級還原操作。用戶可從許多源數(shù)據(jù)庫的可疑頁中識別頁 ID,包括 msdb 數(shù)據(jù)庫中的 suspect_pages 表、SQL Server 錯誤日志以及 DBCC CHECKDB 命令。識別出任何有可能損壞的數(shù)據(jù)頁之后,就可以在 RESTORE 語句的 PAGE 從句中指定頁 ID,從而還原數(shù)據(jù)頁。從備份中還原單張頁的能力極大地縮短由于數(shù)據(jù)庫損壞導(dǎo)致的停機時間。
部分數(shù)據(jù)可用性
有了“部分數(shù)據(jù)可用性”功能,即使數(shù)據(jù)庫的一部分由于隔離硬件或磁盤故障而遭破壞,數(shù)據(jù)庫也能維持在線狀態(tài)和可用性。如果輔助的非主要數(shù)據(jù)文件損壞,則數(shù)據(jù)庫未損壞的部分仍將保持在線狀態(tài)和可用性。因此,即使整個系統(tǒng)不可用,但有些客戶和職員仍可訪問數(shù)據(jù),這會減輕由問題導(dǎo)致的后果,同時另一個可用性解決方案將進入在線狀態(tài)。
快照隔離
在SQL Server的早期版本中修改數(shù)據(jù)時,被修改的數(shù)據(jù)將處于鎖定狀態(tài),因此其他應(yīng)用程序和用戶就無法使用這些數(shù)據(jù)。替代方法是讀取數(shù)據(jù)的當(dāng)前狀態(tài)(即使這些值尚未被提交)或者當(dāng)交易未成功完成時回滾數(shù)據(jù)。
“快照隔離”功能擴展了 SQL Server 2008 中的鎖定框架,它使應(yīng)用程序能夠在發(fā)生任何數(shù)據(jù)修改之前查看值。這可防止應(yīng)用程序被鎖定,同時仍將提供真正已提交的數(shù)據(jù)。例如,在本文開頭介紹的玩具制造商案例中,“快照隔離”功能使報告能夠運行,并提供精確的交易結(jié)果。“快照隔離”使報告更及時、更精確。
動態(tài)配置
“動態(tài)配置”是 SQL Server Always On 技術(shù)之一,利用該技術(shù)可以更好地訪問硬件特性,如執(zhí)行熱升級,同時系統(tǒng)仍可運行。如果硬件支持“熱添加內(nèi)存”,則在增加系統(tǒng)內(nèi)存時就不會產(chǎn)生中斷,而且 SQL Server 將通過動態(tài)內(nèi)存或者故障移動群集的動態(tài)“地址窗口化擴展插件(AWE)”自動使用這些內(nèi)存。
SQL Server 2008 還支持“熱添加CPU”,因此可為受支持的硬件添加處理器,而且不會使操作中斷。
對于任何需要增加處理器或內(nèi)存資源的系統(tǒng)而言,“動態(tài)配置”功能可縮短停機時間,并提高職員工作效率和客戶滿意度。
【編輯推薦】