更新時間:2021-11-02 10:48:01 來源:動力節點 瀏覽802次
要從故障中恢復 SQL Server 數據庫,數據庫管理員必須以邏輯上正確且有意義的恢復順序恢復一組 SQL Server 備份。SQL Server 還原和恢復支持從整個數據庫、數據文件或數據頁的備份中還原數據,如下所示:
數據庫(完整的數據庫恢復)
整個數據庫被還原和恢復,并且數據庫在恢復和恢復操作期間處于脫機狀態。
數據文件(一個文件恢復)
恢復和恢復一個數據文件或一組文件。在文件還原期間,包含文件的文件組在還原期間自動脫機。任何訪問脫機文件組的嘗試都會導致錯誤。
數據頁(一個頁恢復)
在完整恢復模式或大容量日志恢復模式下,您可以還原單個頁面。可以在任何數據庫上執行頁面恢復,而不管文件組的數量。
SQL Server 備份和還原在所有支持的操作系統上工作。有關支持的操作系統的信息,請參閱安裝 SQL Server 2016 的硬件和軟件要求。有關對 SQL Server 早期版本的備份的支持的信息,請參閱RESTORE (Transact-SQL)的“兼容性支持”部分。
一個恢復的情況在SQL Server是從一個或多個備份恢復數據,然后恢復數據庫的過程。支持的還原方案取決于數據庫的恢復模型和 SQL Server 的版本。
下表介紹了不同恢復模型支持的可能還原方案。
還原場景 |
簡單恢復模式下 |
在完整/大容量日志恢復模式下 |
---|---|---|
完成數據庫恢復 |
這是基本的恢復策略。完整的數據庫還原可能只涉及還原和恢復完整的數據庫備份。或者,完整的數據庫還原可能涉及還原完整的數據庫備份,然后還原和恢復差異備份。 |
這是基本的恢復策略。完整的數據庫還原涉及還原完整的數據庫備份和(可選)差異備份(如果有),然后還原所有后續日志備份(按順序)。完整的數據庫還原是通過恢復最后一個日志備份并恢復它來完成的(RESTORE WITH RECOVERY)。 |
文件恢復* |
還原一個或多個損壞的只讀文件,而無需還原整個數據庫。僅當數據庫具有至少一個只讀文件組時,文件恢復才可用。 |
還原一個或多個文件,而不還原整個數據庫。可以在數據庫脫機時執行文件還原,或者對于某些版本的 SQL Server,在數據庫保持聯機時執行文件還原。在文件還原期間,包含正在還原的文件的文件組始終處于脫機狀態。 |
頁面還原 |
不適用 |
恢復一個或多個損壞的頁面。可以在數據庫脫機時執行頁面還原,或者對于某些版本的 SQL Server,在數據庫保持聯機時執行頁面還原。在頁面還原期間,正在還原的頁面始終處于脫機狀態。 一個完整的日志備份鏈必須可用,直到當前日志文件,并且必須全部應用它們以使頁面與當前日志文件保持同步。 |
零碎恢復* |
在文件組級別分階段還原和恢復數據庫,從主文件組和所有讀/寫輔助文件組開始。 |
從主文件組開始,在文件組級別分階段還原和恢復數據庫。 |
*僅企業版支持在線恢復。
要執行文件還原,數據庫引擎執行兩個步驟:
創建任何丟失的數據庫文件。
將數據從備份設備復制到數據庫文件。
要執行數據庫還原,數據庫引擎執行三個步驟:
如果數據庫和事務日志文件尚不存在,則創建它們。
將數據庫備份介質中的所有數據、日志和索引頁復制到數據庫文件中。
在所謂的恢復過程中應用事務日志。
不管數據如何恢復,在恢復數據庫之前,SQL Server 數據庫引擎保證整個數據庫在邏輯上是一致的。例如,如果您還原一個文件,則在它前滾到足以與數據庫保持一致之前,您無法恢復它并使其聯機。
還原和恢復文件或頁面而不是整個數據庫具有以下優點:
還原較少的數據可減少復制和恢復數據所需的時間。
在 SQL Server 上還原文件或頁面可能允許數據庫中的其他數據在還原操作期間保持聯機。
對于大多數還原方案,必須應用事務日志備份并允許 SQL Server 數據庫引擎運行恢復過程以使數據庫聯機。恢復是 SQL Server 用于每個數據庫以事務一致(或干凈)狀態啟動的過程。
在發生故障轉移或其他非干凈關閉的情況下,數據庫可能會處于某些修改從未從緩沖區緩存寫入數據文件的狀態,并且數據文件中的不完整事務可能會有一些修改。當 SQL Server 實例啟動時,它會根據最后一個數據庫檢查點運行每個數據庫的恢復,包括三個階段:
分析階段分析事務日志以確定最后一個檢查點是什么,并創建臟頁表 (DPT) 和活動事務表 (ATT)。DPT 包含數據庫關閉時臟頁的記錄。ATT 包含在數據庫未完全關閉時處于活動狀態的事務記錄。
重做階段會前滾記錄在日志中的每個修改,這些修改在數據庫關閉時可能尚未寫入數據文件。成功的數據庫范圍恢復所需的最小日志序列號(minLSN) 可在 DPT 中找到,并標記所有臟頁所需的重做操作的開始。在此階段,SQL Server 數據庫引擎將屬于已提交事務的所有臟頁寫入磁盤。
撤消階段回滾在 ATT 中發現的不完整事務,以確保保留數據庫的完整性。回滾后,數據庫上線,不能再對數據庫應用事務日志備份。
SQL Server錯誤日志中記錄了每個數據庫恢復階段的進度信息。還可以使用擴展事件跟蹤數據庫恢復進度。
簡單恢復模型對還原操作施加了以下限制:
文件還原和分段還原僅適用于只讀輔助文件組。有關這些還原方案的信息,請參閱文件還原(簡單恢復模型)和零碎還原 (SQL Server)。
不允許頁面還原。
不允許時間點還原。
如果這些限制中的任何一個不適合您的恢復需求,我們建議您考慮使用完整恢復模式。
如果在大容量日志恢復模式下進行的日志備份包含大容量日志更改,則不允許時間點恢復。嘗試對包含批量更改的日志備份執行時間點恢復將導致還原操作失敗。
僅當滿足以下條件時,聯機還原序列才有效:
在恢復序列開始之前,必須已完成所有必需的日志備份。
在開始在線恢復序列之前,必須支持批量更改。
如果數據庫中存在批量更改,則所有文件都必須為 online 或defunct。(這意味著它不再是數據庫的一部分。)
如果不滿足這些條件,聯機恢復序列將失敗。
以上是關于“使SQL數據庫恢復的方案”的介紹,大家若想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容詳細,從入門到精通,對于初學者來說會有很大幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習