事務日志備份有以下3種類型
(1)純日志備份:僅包含相隔一段時間的事務日志記錄,而不包含任何大容量更改
(2)大容量操作日志備份.包括由大容量操作更改的日志和數據頁,不支持時間點恢復
(3)尾日志備份:從可能已破壞的數據庫創建,用於捕獲尚未備份的日志記錄。在失敗后創建尾日志備份可以防止工作損失,
並且,尾日志備份可以包含純日志或大容量日志數據
必須至少有一個完整備份或一個等效文件備份集,才能進行任何日志備份。通常DBA定期(如每周)創建數據庫完整備份,
以更短的間隔(如每天)創建差異備份,並會頻繁(如每10分鍾)創建事務日志備份。
最恰當的備份間隔取決於一系列因素,如數據的重要性、數據庫的大小和服務器的工作負荷
如果事務日志損壞,則將丟失自最新的日志備份后所執行的工作。
為此,建議經常對關鍵數據進行日志備份,並注意將日志文件存儲在容錯存儲設備中
事務日志備份順序獨立於完整備份。可以生成一個事務日志備份順序,然后定期生成用於開始還原操作的完整備份
------------------------------------------------華麗的分割線-----------------------------------------------------
最佳實踐
每15~30分鍾:事務日志備份
每天:差異備份
每周:完整備份
備份日志尾部失敗后執行尾日志備份,以防止丟失所做工作,在失敗之后並且在開始還原數據庫之前,或者在故障轉移到輔助數據庫時,
備份活動日志(尾日志備份)。選擇此選項等效於在TSQL 中backup log 語句中指定norecovery選項
1 BACKUP LOG [GPOSDB] To disk='D:\GPOSDB_logbackup_201207160152.bak' 2 GO
事務日志備份有時會比數據庫備份大。例如,數據庫的事務處理很多,從而導致事務日志迅速增大。
在這種情況下,應該經常地創建日志備份並清理事務日志
----------------------------------------------華麗的分割線----------------------------------------------------------------
清理事務日志
如果從來沒有從事務日志中刪除日志記錄,邏輯日志就會一直增長,直到填滿容納物理日志文件的磁盤上的所有可用空間。
為了減少邏輯日志的大小,應定期截斷事務日志。在SQLSERVER的最早版本中,截斷事務日志意味着將進行數據庫恢復或還原不再需要的日志記錄物理刪除。
但是,在最近的版本中,截斷過程只是做標記,以便重新使用舊日志記錄使用過的空間。此空間中的日志記錄將最終被新的日志記錄覆蓋。
在事務日志已滿的情況下,滿的情況根據你的磁盤的容量大小,用戶不能更新數據。backup log語句有雙重的目的,
不僅可以備份事務日志,並且在事務日志滿的時候,用戶還可以利用他清理事務日志,移去事務日志中不活動的部分
截斷並不減少物理日志文件大小,而是減少邏輯日志文件的大小並釋放磁盤空間以供重新使用。
減少物理日志文件大小需要收縮事務日志文件
DBCC SHRINKFILE適用於當前數據庫中的文件。要收縮的數據庫不必在單用戶模式下,收縮文件時,其他用戶也可使用該數據庫
1 --例如:截斷AdventureWorks數據庫的事務日志,然后將日志文件收縮到10MB 2 USE [AdventureWorks] 3 GO 4 BACKUP LOG [AdventureWorks] WITH no_log 5 GO 6 EXEC [sys].[sp_helpdb] @dbname = 'AdventureWorks' -- sysname 7 GO 8 9 DBCC SHRINKFILE(AdventureWorks_Log,10) 10 GO
注意:清理事務日志的時候,不產生日志備份副本.考慮到數據庫的恢復工作可能需要使用日志備份,應該先做日志備份,再清理事務日志!!
最后附上配圖