跳至內容

為什麼我的 Amazon RDS 資料庫執行個體在開啟儲存體自動擴展後,會進入儲存體已滿狀態或出現可用儲存空間偏低的情況?

2 分的閱讀內容
0

我已為 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體啟用儲存體自動擴展功能,但可用儲存空間仍低於 10%。或者,執行個體處於儲存體已滿狀態。

簡短說明

當您變更資料庫執行個體的儲存體時,資料庫執行個體會進入 storage-optimization 狀態。Storage-optimization 通常需要幾分鐘才能完成,但也可能超過 24 小時。若要監控程序,請使用 Amazon Elastic Compute Cloud (Amazon EC2) 主控台。

**注意:**自上次儲存體修改後的六小時內,或直到 storage-optimization 完成之前 (以較長者為準),您都無法再進行其他儲存體修改。

在 storage-optimization 期間,即使可用儲存空間少於 10%,自動擴展也無法增加資料庫執行個體的儲存體。

當您使用自動擴展來增加資料庫執行個體的儲存體時,額外儲存體會依照以下增量增加 (以較大者為準):

  • 10 GiB
  • 目前已配置空間的 10%
  • 根據過去一小時的 FreeStorageSpace 指標預測未來七小時的儲存體成長

如果您想在不到一小時內載入 50 GB 的資料,則 10% 的儲存體增量並不足夠。由於先前的自動擴展操作處於 storage-optimization 狀態,因此在程序完成之前,您無法修改資料庫執行個體的儲存體。因此,您的資料庫執行個體可能會處於 storage-full 狀態長達數小時。

解決方法

如果您無法修改 RDS 資料庫執行個體的儲存體,請檢查執行個體的狀態。如果您的資料庫執行個體處於 storage-full 或 available (可用) 狀態,請檢查過去六小時內是否發生過儲存體修改。若要確認最近是否執行過儲存體增加作業,請檢查資料庫執行個體的事件中是否有以下訊息:

「Finished applying modification to allocated storage.」

-或-

「Finished applying autoscaling-initiated modification to allocated storage.」

如果您的資料庫執行個體處於 storage-optimization 狀態,請將資料庫還原至具有更多 Amazon Elastic Block Store (Amazon EBS) 儲存體的資料庫執行個體。

**注意:**如果您的資料庫執行個體處於 storage-full 狀態,您必須先停止載入至資料庫執行個體的所有資料。此程序可能需要幾分鐘到數小時,執行個體才會脫離 storage-full 狀態。

當您的資料庫執行個體不處於 storage-full 狀態時,請使用以下其中一個選項來修改資料庫執行個體的儲存體大小:

  • 選項 1: 建立並提升資料庫執行個體的讀取複寫。
  • 選項 2: 建立手動資料庫快照,並將資料庫執行個體還原至指定的時間點。
  • 選項 3: 由於 FreeStorageSpace 較低,請關閉自動擴展功能。

**注意:**選項 1 和選項 2 都會導致資料庫停機。但是,選項 1 的停機時間比選項 2 短。MariaDB、Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL 資料庫引擎支援讀取複寫。

建立並提升 RDS 資料庫執行個體的讀取複寫

請完成以下步驟:

  1. 建立資料庫執行個體的讀取複寫。
  2. 增加讀取複寫的儲存體容量。預設情況下,讀取複寫上的 Amazon RDS 儲存體自動擴展已停用。
  3. 將作用中的資料庫執行個體重新命名為不同名稱。這會停止傳入流量。
  4. 將讀取複寫重新命名為您用於作用中資料庫執行個體的名稱。這會將讀取複寫端點變更為與作用中資料庫執行個體相同,因此您不必重新設定應用程式。
  5. 提升讀取複寫。

**注意:**對應用程式或用戶端而言,資料庫停機會發生在步驟 3-5 期間。

建立手動資料庫快照,並將 RDS 資料庫執行個體還原至指定的時間點

請完成以下步驟:

  1. 重新命名作用中的資料庫執行個體,以停止傳入流量並防止出現 storage-full 狀態。如果您的資料庫執行個體處於 storage-full,則您無法繼續執行下一個步驟。
  2. 建立資料庫執行個體的資料庫快照。
    **注意:**此快照可避免已還原的資料庫執行個體發生 storage-optimization 儲存體修改事件。
  3. 若要將資料庫執行個體還原至某個時間點,請選擇最新的可還原時間。對於執行個體識別碼,請輸入作用中資料庫執行個體使用的名稱。
    **注意:**若要避免因自動擴展增加而導致 storage-optimization,請勿啟用自動擴展。
  4. (選用) 修改已還原的資料庫執行個體以包含自訂安全群組。預設資料庫安全群組會套用至新的資料庫執行個體。
  5. 增加新資料庫執行個體的儲存體容量。

**注意:**對應用程式或用戶端而言,資料庫停機會發生在步驟 1-4 期間。

由於 FreeStorageSpace 較低,請關閉自動擴展功能

如果您關閉自動擴展,系統就不會自動配置額外儲存體,而且您可以手動控制儲存體配置。例如,自動擴展即將增加 10% 的儲存體,但您想在自動擴展事件啟動前增加超過 10%。在此情況下,請關閉自動擴展。

若要關閉自動擴展,請完成以下步驟:

  1. 開啟 Amazon Aurora and RDS console (Amazon Aurora 和 RDS 主控台)。
  2. 在導覽窗格中,選擇 Databases (資料庫),然後選取您的資料庫。
  3. 選擇 Modify (修改)。
  4. 在 Storage (儲存體) 中的 Additional storage configuration (其他儲存體組態) 下,清除 Enable storage autoscaling (啟用儲存體自動擴展)。
  5. 選擇 Continue (繼續)。
  6. 選擇 Apply immediately (立即套用) 或 Apply during the next scheduled maintenance window (在下一個排定的維護時段套用)。
  7. 選擇 Modify DB Instance (修改資料庫執行個體)。

**注意:**當 FreeStorageSpace 指標低於 10% 至少五分鐘時,自動擴展就會啟動。當上次 storage-modification 已過去至少六個小時,或執行個體上的 storage-optimization 已完成 (以較長者為準) 時,自動擴展也會啟動。

相關資訊

為什麼我在 Amazon RDS for PostgreSQL 上收到「No space left on device」或「DiskFull」錯誤?

為什麼我的 Amazon RDS for Oracle 資料庫執行個體使用的儲存體比預期多?

為什麼我的 Amazon RDS for MySQL 資料庫執行個體使用的儲存體比預期多?

如何最佳化 Amazon RDS for SQL Server 資料庫執行個體中的儲存體用量?