全部產品
Search
文件中心

ApsaraDB RDS:RDS MySQL資料檔案佔滿磁碟空間導致出現“鎖定中”狀態

更新時間:Jun 19, 2024

RDS MySQL執行個體可能會由於資料檔案長時間未整理導致執行個體空間被佔滿,為避免資料丟失,RDS MySQL會對執行個體進行自動鎖定,磁碟鎖定之後,將無法進行寫入操作。

問題描述

雲資料庫RDS MySQL執行個體由於寫入的資料太多,導致資料檔案佔滿磁碟空間,從而導致執行個體的運行狀態為鎖定中

基本資料

問題原因

RDS MySQL執行個體可能會由於資料檔案長時間未整理導致執行個體空間滿,為避免資料丟失,RDS MySQL會對執行個體進行自動鎖定,鎖定之後將無法進行寫入操作。

解決方案

前提條件

RDS MySQL 5.6、5.7、8.0版本的執行個體,確認核心小版本大於等於20190815。如果核心小版本小於20190815,需要在升級後才能執行清理資料的操作,如何升級小版本請參見升級核心小版本小版本

注意事項

  • 刪除表前請確保有資料備份,以免造成損失。
  • RDS MySQL中delete命令是無法釋放空間,推薦使用droptruncate命令釋放空間。
  • optimize操作將會鎖表,建議在業務低峰期操作。
  • 清理資料檔案有延遲,請耐心等待執行個體已使用空間的下降。
  • 清理後需要耐心等待一段時間(5分鐘左右),RDS MySQL執行個體才會解鎖。

操作步驟

根據實際情況選擇相應的方法處理。

  • 擴容執行個體
    您可以擴容磁碟空間,詳情請參見變更配置
    說明 變更配置任務結束後,等待約5分鐘,RDS MySQL執行個體會進行解鎖。
  • 刪除無用資料
    1. 通過DMS串連執行個體,詳情請參見通過DMS登入RDS MySQL
    2. SQL Console頁,執行如下命令查看資料庫的檔案大小,確認其中可以刪除的歷史資料或無用資料。
      SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size' FROM INFORMATION_SCHEMA.FILES order by TOTAL_EXTENTS DESC
    3. 使用droptruncate命令清理資料。
      說明 清理後需要耐心等待一段時間(5分鐘左右),RDS MySQL執行個體才會解鎖。
      • drop:使用drop table <資料庫名>.<表名>刪除不需要的表。
      • truncate:使用truncate table <資料庫名>.<表名>刪除不需要的表。

後續維護

若鎖定問題已解決,請參考以下步驟,預防再次出現鎖定問題: