現象說明
執行個體基本資料頁執行個體運行狀態為鎖定中。
執行個體為鎖定中時,無法INSERT和UPDATE資料。
說明以RDS MySQL 5.6、5.7、8.0中20190815及之後的小版本為例,執行個體的鎖定狀態有以下三種:
LOCK_WRITE_GROWTH:禁止磁碟增長鎖,一般由於主執行個體磁碟滿,禁止會使磁碟用量上升的操作。DELETE語句會產生大量binlog,會導致磁碟用量上升,如需清理資料,可使用DROP和TRUNCATE語句。
LOCK_READ:禁讀鎖,一般由於唯讀執行個體磁碟滿,禁止執行查詢和寫入。
LOCK_WRITE:禁寫鎖,可能是由於執行個體到期、主機到期(僅MyBase產品有的狀態)、執行個體遷移等產生,除LOCK_WRITE_GROWTH限制外,額外禁止了其他資料寫入,如DROP和TRUNCATE等。
在執行個體鎖定時,執行部分SQL語句會報
ERROR 1290 (HY000): The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statement的錯誤提示。對於RDS MySQL 5.1、5.5所有小版本以及5.6、5.7、8.0中20190815之前的小版本,各種原因導致執行個體一旦被鎖定,鎖定後將無法進行任何操作。
常見原因
執行個體儲存空間已滿。
帳號欠費或執行個體到期。
執行個體儲存空間已滿處理方法
釋放儲存空間
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
單擊左側導覽列的監控與報警,查看執行個體各類資料佔用的磁碟空間資訊。

根據不同資料庫類型,清理對應磁碟空間。
警告資料無價,請您謹慎清理,如非必要,不推薦清理資料,請採用擴容儲存空間方式解除鎖定;如果必須清理,請在清理前對資料庫進行備份,避免資料丟失。
臨時檔案(標準監控中對應temp_file_size)
產生原因:MySQL執行個體可能會由於查詢語句的排序、分組、關聯表產生的暫存資料表檔案,或者大事務未提交前產生的binlog cache檔案,導致執行個體磁碟空間滿。
解決方案:請參見RDS MySQL臨時檔案導致執行個體磁碟空間滿且出現“鎖定中”狀態。
記錄檔(標準監控中對應binlog_size和general_log_size)
產生原因:資料庫管理系統會產生查詢日誌、慢查詢日誌、錯誤記錄檔等,協助管理員監控資料庫的效能和健康情況。
引擎
處理辦法
MySQL
根據監控與報警中,磁碟空間的佔用資訊,清理對應的記錄檔。
PostgreSQL
RDS PostgreSQL記錄檔不支援手動刪除。
您可以通過手動刪除非活躍的Replication Slot來讓RDS PostgreSQL核心自動清理WAL日誌。具體方法,請參見WAL日誌管理。
SQL Server
RDS SQL Server記錄檔不支援手動刪除,但可以通過控制台收縮交易記錄。
資料檔案(標準監控中對應user_data_size)
資料庫引擎
處理方法
MySQL
執行以下SQL語句,查看資料庫的表大小,確認其中可以刪除的歷史資料或無用資料。
SELECT TABLE_NAME, concat(round((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,2),'MB') AS DATA FROM information_schema. TABLES WHERE TABLE_SCHEMA = '<資料庫名>' ORDER BY DATA + 0 DESC;在對應資料庫下使用
DROP TABLE <表名>;命令清理資料。清理後需要耐心等待一段時間(5分鐘左右),RDS執行個體才會解鎖。
PostgreSQL
通過DMS串連執行個體,詳情請參見通過DMS登入RDS資料庫。
執行以下SQL語句,查看資料庫的表大小,確認其中可以刪除的歷史資料或無用資料。
SELECT table_schema || '.' || table_name AS table_full_name, pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') AS size FROM information_schema.tables ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;在對應資料庫下使用
DROP TABLE <表名>;命令清理資料。清理後需要耐心等待一段時間(5分鐘左右),RDS執行個體才會解鎖。
SQL Server
請參見RDS SQL Server空間不足問題處理。
系統檔案(標準監控中對應undolog_size)
產生原因:當存在對InnoDB表長時間不結束的查詢語句,而且在查詢過程中表有大量的資料變化時,系統會產生大量的undo資訊,佔用大量儲存空間,導致儲存空間耗盡。
解決方案:請參見系統檔案堆積導致空間不足。
擴容儲存空間
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在基本資料頁面的配置資訊地區單擊變更設定,擴容執行個體儲存空間。
完成支付後,您可在進入工作中樞查看變更配置進度。
擴容時間長度與儲存類型相關,具體如下。您可以訪問RDS控制台首頁,在左側導覽列的工作中樞中查看擴容進度。
儲存類型
擴容時間長度
說明
高效能本地碟
以實際情況為準。
本地無資源可用的情況下會觸發跨機遷移,擴容時間長度受較多因素影響,推薦在業務低峰期進行擴容。
變更配置會出現約30秒的閃斷,請在業務低峰期進行變更配置,並確保您的應用有自動重連機制。閃斷期間,與資料庫、帳號、網路等相關的大部分操作都無法執行。
雲端硬碟
5分鐘左右。
MySQL、PostgreSQL雲端硬碟執行個體擴容期間不會發生業務閃斷。
SQL Server雲端硬碟執行個體擴容期間可能會出現一次約30秒的閃斷,與資料庫、帳號、網路等相關的大部分操作都無法執行,請盡量在業務低峰期執行變更配置操作,或確保您的應用有自動重連機制。目前部分執行個體已支援無損擴容能力,不會造成資料庫訪問中斷。
帳號欠費或執行個體到期處理方法
更多營運建議
建議您配置如下內容,避免執行個體被鎖定。
設定執行個體到期欠費預警提醒通知。
訪問RDS管理主控台。
單擊頁面右上方的
表徵圖,進入訊息中心頁面。在左側導覽列,單擊基本接收管理。
在基本接收管理頁面的訊息類型中勾選產品的欠費、停服、即將釋放相關語音總機,單擊修改。
在修改訊息接收人對話方塊, 勾選需通知的連絡人,單擊儲存,即可完成設定。
設定執行個體儲存空間警示,建議設定儲存空間大於90%時警示。
開啟SQL洞察與審計,當儲存空間突增時,結合監控與警示,查詢儲存空間增長期間的歷史SQL語句,對SQL進行最佳化。
設定自動擴容儲存空間,當資源不足時,系統將自動擴容。詳情請參見設定RDS MySQL儲存空間自動擴容、設定RDS PostgreSQL儲存空間自動擴容和設定RDS SQL Server儲存空間自動擴容。
對於臨時檔案較大的情境,應最佳化SQL語句,避免頻繁使用ORDER BY、GROUP BY操作。
執行個體已刪除大量資料,為什麼還是LOCK_WRITE_GROWTH?
使用 DELETE 語句刪除資料時,資料庫僅將記錄或資料頁標記為可複用,而不會直接減少磁碟檔案的大小,即資料表空間不會自動回收。若需釋放資料表空間,可使用OPTIMIZE TABLE命令釋放MySQL執行個體的資料表空間。
執行個體已經有充足空間或者已續約,為什麼執行個體仍然被鎖定?
因為執行個體當前有任務(如變更配置)在運行,需要等待任務結束後才會自動解鎖。您可以在執行個體基本資料頁右上方單擊
按鈕頁面跳轉至任务列表頁面查看任務進度。
執行個體顯示“鎖定中”,此時是否可以升降配?
只有執行個體因磁碟滿導致的鎖定可以升降配,欠費導致的鎖定只能先續約後再升降配。
待解鎖的執行個體是歷史規格,如何通過擴容儲存空間的方式解鎖?
先將執行個體規格變更為在售執行個體規格,然後再擴容執行個體的儲存空間。在售執行個體規格,請參見主執行個體規格列表。
執行個體處於“鎖定中”,為何儲存空間會有所增加?
在“鎖定中”狀態下,無法執行INSERT和UPDATE操作。然而,執行個體仍然可能因查詢操作組建記錄檔檔案或其他臨時資料,從而導致儲存空間進一步增加。
