本文主要從以下兩種情況介紹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磁碟空間佔滿。