| 原因 | 說明 |
| 復原模式為完整,但無記錄檔備份 | 記錄永不截斷,持續增長直到磁碟滿 |
| 長時間執行的交易 | 阻礙 VLF 重用 |
| 大量異動未分批 | 單一交易產生大量記錄 |
| 複寫/鏡像延遲 | 記錄無法截斷直到同步完成 |
維護策略
1. 選擇正確復原模式
- 完整模式:需定期記錄檔備份,支援時間點恢復。生產標準。
- 大量記錄模式:大量作業最小記錄,仍需記錄檔備份。
- 簡單模式:檢查點自動截斷,不支援時間點恢復,適唯讀/測試庫。
2. 定期記錄檔備份(完整/大量記錄模式必須)
BACKUP LOG [DBName] TO DISK = 'path\DBName_log.trn' WITH COMPRESSION
建議頻率:15-60 分鐘視 RPO 而定。
3. 監控與警報
-- 檢查記錄檔使用率
DBCC SQLPERF(LOGSPACE)
-- 檢查 VLF 數量與大小(過多 VLF 影響啟動/備份/恢復速度)
DBCC LOGINFO
4. 壓縮記錄檔(謹慎操作)
-- 僅在確認記錄已截斷(備份完成)且確有釋放空間需求時
DBCC SHRINKFILE (N'DBName_log', target_size_MB)
- 不要 設定自動壓縮(
AUTO_SHRINK),會造成碎片、效能抖動。
- 壓縮後記錄檔會重新增長,預先規劃合理初始大小與成長增量(建議固定 MB,非百分比)。
災難恢復:記錄檔備份還原流程
- 還原完整備份
WITH NORECOVERY。
- 按時間順序還原差異備份(若有)
WITH NORECOVERY。
- 依序還原所有記錄檔備份
WITH NORECOVERY。
- 最後一筆記錄檔可用
WITH RECOVERY 或 STOPAT 指定時間點。
Log Shipping 架構
主伺服器定期備份記錄檔 → 傳送至備援伺服器 → 自動還原(STANDBY 模式可唯讀查詢)。監視伺服器偵測傳送間隔逾時並發出警報。適合異地災備與報表卸載。
總結檢查清單
- [ ] 復原模式符合業務 RPO/RTO
- [ ] 完整備份 + 定期記錄檔備份作業正常
- [ ] 記錄檔初始大小/成長增量預先規劃
- [ ] 監控 VLF 數量(建議 < 1000)與使用率
- [ ] 定期演練時間點恢復
- 上一篇文章: SQL Server 取得客戶端 IP、MAC 位址與 IP 格式化實用腳本
- 下一篇文章: 資料庫攻擊手法解析:SQL 注入、權限提升、後門植入與防禦對策
Copyright ©
程式碼之家 All Rights Reserved