交易記錄檔角色
- 記錄資料庫所有變更,獨立檔案儲存
- 每筆交易從開始到 COMMIT/ROLLBACK 全程記錄
- 每資料庫至少一個記錄檔 + 一個資料檔
運作機制
- 資料修改先寫入緩衝區,立即寫入記錄檔,資料檔延後寫入(效能考量)
- 檢查點標記哪些交易已寫入資料檔
- 服務重啟時,從最新檢查點向前重做、向後回滾未完成交易,保證 ACID
常見問題:記錄檔失控膨脹
- 預設「不限大小」→ 佔滿磁碟 → 資料庫停擺
- 疏於備份 → 非作用記錄無法覆寫 → 持續增長
維護三部曲
- 定期記錄檔備份:標記舊記錄為非作用 → 新記錄覆寫舊位置,防止膨脹
- 簡單復原模式:無法定期備份時啟用,每檢查點自動截斷非作用記錄
- 壓縮記錄檔:
DBCC SHRINKDATABASE 壓縮當前資料庫記錄檔
DBCC SHRINKFILE 壓縮指定記錄檔
- 啟用
AUTO_SHRINK(生產環境慎用,易造成碎片)
壓縮流程:標記非作用 → 物理刪除 → 釋放磁碟空間。建議離峰時段執行避免影響效能。
資料庫還原流程
- 先還原資料檔(勿設為完成狀態)
- 依序套用記錄檔備份(按建立時間順序)
- 達到目標時間點 → 設為完成,資料庫上線
進階:Log Shipping 熱備份
- 自動將記錄檔備份傳送至備援伺服器並還原(STANDBY 模式)
- 監視伺服器定期檢查傳送訊號,逾時寫入事件記錄 → 觸發告警
- 常作為災難恢復方案核心組件
總結
「備份 → 截斷 → 壓縮」三步走,搭配適當復原模式與 Log Shipping,讓交易記錄檔從隱形炸彈變成可控資產。