本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文主要從以下兩種情況介紹RDS SQL Server收縮事務日志的具體操作。
阿里云提醒您:
如果您對實例或數據有修改、變更等風險操作,請務必注意實例的容災、容錯能力,確保數據安全。
如果您對實例(包括但不限于ECS、RDS)等進行配置與數據修改,建議提前創建快照或開啟RDS日志備份等功能。
如果您在阿里云平臺授權或者提交過登錄賬號、密碼等安全信息,建議您及時修改。
日志空間充足
如果日志空間充足,可以通過RDS控制臺備份并收縮事務日志功能來處理,該功能是指系統將自動通過執行日志備份和日志收縮操作來管理和優化事務日志文件的大小。
- 訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄單擊備份恢復。
單擊備份并收縮事務日志,單擊確定。
重要在進行收縮事務日志操作時,系統會自動執行一次日志備份。備份的目的是為了歸檔事務日志以便本地日志有更高的概率清理成功。
建議在進行收縮事務日志操作前,先檢查數據庫的日志重用等待狀態。
當狀態為NOTHING時,可以嘗試進行收縮,但收縮的大小取決于事務日志尾部可重用的VLF大小。如果存在活動事務導致尾部VLF狀態無法設置為可重用,可能需要再次進行日志備份,并等待當前活動事務完成后,重新檢查重用等待狀態,直到狀態為NOTHING為止。
當狀態為LOG_BACKUP時,可能會由于存在活動事務,并不一定收縮成功,收縮操作可能需要多次執行才能成功。
您可前往數據庫管理 > 查看詳情頁面查看日志文件重用狀態(log_reuse_wait_desc)。具體操作,請參見查看數據庫屬性。
日志空間不足
以下操作僅適用于緊急狀態下進行,一般建議您先擴容磁盤。
如果您的數據庫服務器提示“事務日志已滿”,此時無法通過控制臺收縮事務日志,需要您手動執行SQL語句進行處理。收縮事務日志需要占用部分日志空間,所以當日志處于已滿狀態時只能按命令截斷收縮。在數據庫服務器上執行如執行以下SQL語句,數據庫名稱需要進行替換,具體SQL處理步驟如下:
如果日志已滿只能截斷日志鏈進行收縮。原則上不允許將數據庫修改為SIMPLE簡單模式,這種方式會影響RDS的備份鏈,導致經過當前時間點的所有恢復任務失敗。如果緊急情況下您需要通過修改數據庫恢復模式為SIMPLE簡單模式并需要截斷數據庫日志鏈,表示您已經理解并愿意承擔上述風險。此時您可忽略執行如下命令后顯示的錯誤信息,數據庫日志鏈依然會斷開。
執行如下將數據庫的恢復模式設置為SIMPLE模式的命令:
ALTER DATABASE [TestDb] //[TestDb]為數據庫名稱。
SET RECOVERY SIMPLE
系統會將恢復模式重置為FULL,不會實際修改數據庫恢復模式為SIMPLE,但數據庫日志鏈會斷開,并返回如下報錯信息:
Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.
相關文檔
如何擴容存儲空間,請參見變更配置。
如何通過SQL命令管理數據庫,請參見SQL命令管理數據庫。
如需解決數據庫的磁盤空間被占滿的情況,請參見SQL Server磁盤空間占滿。
適用于
云數據庫RDS SQL Server版