本文內容
適用于:
SQL (所有受支持的版本)
本文介紹備份 SQL 數據庫的優點、基本的備份和還原術語,還介紹 SQL 的備份和還原策略以及 SQL 備份和還原的安全注意事項。
本文介紹了 SQL 備份。 有關備份 SQL 數據庫的特定步驟,請參閱。
SQL 備份和還原組件為保護存儲在 SQL 數據庫中的關鍵數據提供了基本安全保障。 為了盡量降低災難性數據丟失的風險,需備份數據庫,以便定期保存對數據的修改。 計劃良好的備份和還原策略有助于保護數據庫,使之免受各種故障導致的數據丟失的威脅。 測試策略,方法是先還原一組備份,然后恢復數據庫,以便準備好對災難進行有效的響應。
除了用于存儲備份的本地存儲外,SQL 還支持備份到Azure Blob 存儲和從Azure Blob 存儲還原。 有關詳細信息,請參閱使用 Azure Blob 存儲SQL 備份和還原。 對于使用 Azure Blob 存儲 存儲的數據庫文件,SQL 2016 (13.x) 提供了使用 Azure 快照進行幾乎即時備份和更快還原的選項。 有關詳細信息備份數據庫有哪些方法,請參閱 Azure 中數據庫文件的文件快照備份。 Azure 還為 Azure VM 中運行的 SQL 提供企業級備份解決方案。 作為完全托管的備份解決方案,它支持 可用性組、長期保留、時點恢復以及集中管理和監視。 有關詳細信息,請參閱 Azure VM 中 SQL 的 Azure 備份。
為何備份?
此外,數據庫備份對于進行日常管理(如將數據庫從一臺服務器復制到另一臺服務器、設置 On 可用性組 或數據庫鏡像以及進行存檔)非常有用。
備份術語的術語表
備份 [動詞]
通過從SQL 數據庫復制數據記錄或從其事務日志復制日志記錄來創建備份 [名詞] 的過程。
備份 [名詞]
可用于在出現故障后還原或恢復數據的數據副本。 數據庫備份還可用于將數據庫副本還原到新位置。
備份 設備
要寫入 SQL 備份及能從中還原這些備份的磁盤或磁帶設備。 SQL 備份也可以寫入Azure Blob 存儲,URL 格式用于指定備份文件的目標和名稱。 有關詳細信息,請參閱使用 Azure Blob 存儲SQL 備份和還原。
備份介質
已寫入一個或多個備份的一個或多個磁帶或磁盤文件。
數據備份 (data )
完整數據庫的數據備份(數據庫備份)、部分數據庫的數據備份(部分備份)或一組數據文件或文件組的數據備份(文件備份)。
數據庫備份 ( )
數據庫的備份。 完整數據庫備份表示備份完成時的整個數據庫。 差異數據庫備份只包含自最近完整備份以來對數據庫所做的更改。
差異備份 ( )
一種數據備份,基于完整數據庫或部分數據庫或一組數據文件或文件組(差異基準)的最新完整備份,并且僅包含自確定差異基準以來發生更改的數據。
完整備份 (full )
一種數據備份,包含特定數據庫或者一組特定的文件組或文件中的所有數據,以及可以恢復這些數據的足夠的日志。
日志備份 (log )
包括以前日志備份中未備份的所有日志記錄的事務日志備份。 (完整恢復模式)
將數據庫恢復到穩定且一致的狀態。
將數據庫恢復到事務一致狀態的數據庫啟動階段或 With 階段。
恢復模式
用于控制數據庫上的事務日志維護的數據庫屬性。 有三種恢復模式:簡單恢復模式、完整恢復模式和大容量日志恢復模式。 數據庫的恢復模式確定其備份和還原要求。
還原 ()
一種包括多個階段的過程,用于將指定 SQL 備份中的所有數據和日志頁復制到指定數據庫,然后通過應用記錄的更改使該數據在時間上向前移動,以前滾備份中記錄的所有事務。
備份和還原策略
備份和還原數據必須根據特定環境進行自定義,并且必須使用可用資源。 因此,要可靠地使用備份和還原進行恢復,需要制定備份和還原策略。設計完善的備份和還原策略可以平衡業務需求,以實現最大的數據可用性和最小的數據丟失,同時考慮維護和存儲備份的成本。
備份和還原策略包含備份部分和還原部分。 策略的備份部分定義備份的類型和頻率、備份所需硬件的特性和速度、備份的測試方法以及備份介質的存儲位置和方法(包括安全注意事項)。 策略的還原部分定義負責執行還原的人員、如何執行還原以滿足數據庫可用性和最大程度減少數據丟失的目標,以及如何測試還原。
設計有效的備份和還原策略需要仔細計劃、實現和測試。 需要進行測試:直到成功還原了還原策略中包含的所有組合中的備份并且測試了還原的數據庫是否具有物理一致性后,才會生成備份策略。 必須考慮各種因素。 其中包括:
最佳做法建議使用獨立的存儲
重要
確保將數據庫備份放在與數據庫文件不同的物理位置或設備上。 存儲數據庫的物理驅動器出現故障或崩潰時,可恢復性取決于能否訪問存儲備份的獨立驅動器或遠程設備以執行還原。 請記住,你可以在同一個物理磁盤驅動器中創建多個邏輯卷或分區。 在為備份選擇存儲位置之前,請仔細研究磁盤分區和邏輯卷布局。
選擇適當的恢復模式
備份和還原操作發生在恢復模式的上下文中。 恢復模式是一種數據庫屬性,用于控制事務日志的管理方式。 因此,數據庫的恢復模式決定了數據庫支持的備份類型和還原方案,以及事務日志備份的大小。 通常,數據庫使用簡單恢復模式或完整恢復模式。 可以在執行大容量操作之前切換到大容量日志恢復模式,以補充完整恢復模式。 有關這些恢復模式以及它們是如何影響事務日志管理方式的說明,請參閱 事務日志 (SQL )。
數據庫的最佳恢復模式取決于您的業務要求。 若要免去事務日志管理工作并簡化備份和還原,請使用簡單恢復模式。 若要在管理開銷一定的情況下使工作丟失的可能性降到最低,請使用完整恢復模式。 為了在大容量日志操作期間最大程度減少對日志大小的影響,同時允許這些操作的可恢復性,請使用大容量日志恢復模式。 有關恢復模式對備份和還原的影響的信息,請參閱備份概述 (SQL ) 。
設計備份策略
當為特定數據庫選擇了滿足業務要求的恢復模式后,需要計劃并實現相應的備份策略。 最佳備份策略取決于各種因素,以下因素尤其重要:
可能只是更改數據庫的小部分內容,還是需要更改數據庫的大部分內容?
對于更改集中于部分文件或文件組的大型數據庫,部分備份和/或文件備份非常有用。 有關詳細信息,請參閱部分備份 (SQL ) 和完整文件備份 (SQL ) 。
完整數據庫備份需要多少磁盤空間?
你的企業需要維護過去多久的備份?
確保你已根據應用程序需求和業務需求制定了適當的備份計劃。 隨著備份變得陳舊,數據丟失風險會更高,除非你有辦法重新生成故障點之前的所有數據。 由于存儲資源限制而選擇處理舊備份之前,請考慮是否需要以前的可恢復性
估計完整數據庫備份的大小
在實現備份與還原策略之前,應當估計完整數據庫備份將使用的磁盤空間。 備份操作會將數據庫中的數據復制到備份文件。 備份僅包含數據庫中的實際數據,而不包含任何未使用的空間。 因此,備份通常小于數據庫本身。 你可以使用 系統存儲過程估計完整數據庫備份的大小。 有關詳細信息,請參閱 (-SQL) 。
計劃備份
執行備份操作對運行中的事務影響很小,因此可以在正常操作過程中執行備份操作。 您可以在對生產工作負荷的影響很小的情況下執行 SQL 備份。
有關備份期間并發限制的信息,請參閱備份概述 (SQL ) 。
確定所需的備份類型和必須執行每種備份類型的頻率后,建議您將定期備份計劃為數據庫維護計劃的一部分。 有關維護計劃以及如何為數據庫備份和日志備份創建維護計劃的信息,請參閱 Use the Plan 。
測試備份!
直到完成備份測試后,才會生成還原策略。 必須通過將數據庫副本還原到測試系統,針對每個數據庫的備份策略進行全面測試。 您必須對每種要使用的備份類型進行還原測試。 另外建議在還原備份后,通過數據庫的 DBCC 執行數據庫一致性檢查,以驗證備份媒體是否未損壞。
驗證媒體穩定性和一致性
使用備份實用工具提供的驗證選項( T-SQL 命令、SQL 維護計劃、備份軟件或解決方案等)。 有關示例,請參閱 [ ] (../t-sql//----sql.md) 使用 等高級功能來檢測備份媒體本身的問題。 有關詳情,請參閱在備份和還原期間可能的介質錯誤 (SQL )
文檔備份/還原策略
建議您將備份和還原過程記錄下來并在運行手冊中保留記錄文檔的副本。我們還建議你為每個數據庫維護一個操作手冊。 此操作手冊應記錄備份的位置、備份設備名稱(如果有),以及還原測試備份所需的時間。
使用 監視進度
由于數據庫的大小和所涉及操作的復雜性,備份和還原操作可能需要很長時間。 當任一操作出現問題時,可使用 擴展事件來監控實時進度 。 有關擴展事件的詳細信息,請參閱 擴展事件。
警告
使用 擴展事件可能會導致性能問題并使用大量磁盤空間。 請在短時間內謹慎使用備份數據庫有哪些方法,并在生產中實現前進行徹底測試。
-- Create the backup_restore_progress_trace extended event esssion
CREATE EVENT SESSION [BackupRestoreTrace] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace
ADD TARGET package0.event_file(SET filename=N'BackupRestoreTrace')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=5 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO
-- Start the event session
ALTER EVENT SESSION [BackupRestoreTrace]
ON SERVER
STATE = start;
GO
-- Stop the event session
ALTER EVENT SESSION [BackupRestoreTrace]
ON SERVER
STATE = stop;

GO
擴展事件的示例輸出
有關備份任務的詳細信息使用備份設備和備份媒體創建備份
注意
對于部分備份或僅復制備份,必須分別將 - 語句與 或 選項配合使用。
使用 SSMS使用 T-SQL還原數據備份使用 SSMS使用 T-SQL還原事務日志(完整恢復模式)使用 SSMS使用 T-SQL更多信息和資源
(SQL )
還原和恢復概述 (SQL )
(-SQL)
(-SQL)
備份和還原 數據庫
備份和還原全文目錄和索引
備份和還原復制的數據庫
事務日志 (SQL )
恢復模式 (SQL )
介質集、介質簇和備份集 (SQL )