縮減執行個體儲存空間容量

本頁說明如何使用儲存空間縮減功能,管理 Cloud SQL 執行個體的儲存空間容量。

事前準備

  1. 查看這項功能的限制

  2. 如果您使用 gcloud CLI,請務必使用最新版本的 Google Cloud SDK 和 gcloud CLI。

    • 安裝最新版 gcloud CLI
    • 如要取得目前的 gcloud CLI 版本,請執行 gcloud --version
    • 如要更新 gcloud CLI 版本,請執行 gcloud components update
  3. 取得下列 IAM 權限:

    • cloudsql.instances.getDiskShrinkConfig
    • cloudsql.instances.performDiskShrink

    下列任一角色都具備這些權限。指派角色時,建議您採用最低權限原則:

    • Cloud SQL 管理員 (roles/cloudsql.admin)
    • Cloud SQL 編輯者 (roles/cloudsql.editor)

    詳情請參閱下列資源:

準備執行個體

開始前,請先完成下列要求。

主要執行個體和唯讀備用資源的步驟相同。

如要更新唯讀副本,請務必先縮減主要執行個體的容量,再縮減副本的大小。

  1. 取得專案 ID:找出要管理的執行個體所屬專案,並取得該專案的 ID。

  2. 檢查執行個體的目前狀態,確認執行個體正在執行。如要檢查,請使用 describe 指令:

      gcloud sql instances describe
    

    傳回下列狀態:

      RUNNABLE
    

    如果沒有,請啟動執行個體

  3. 建立目前執行個體的備份。這樣一來,如果設定期間發生問題,您稍後就能還原執行個體

  4. 如果您執行的是 PostgreSQL 執行個體,請將 max_wal_size 旗標值設為小於 5128 MB。如果 max_wal_size 值過大,執行個體啟動速度可能會變慢,作業也可能失敗。

  5. 停用所有啟用輸出連線 (或需要輸出資料傳輸) 的擴充功能或功能。 舉例來說,您可能會使用下列其中一個擴充功能或功能建立對外連線,因此在執行儲存空間縮減作業前,請務必停用這些連線:

    • dblink 項擴充功能
    • PL/proxy 項擴充功能
    • pglogical 項擴充功能
    • 外部資料包裝函式 (例如 postgres_fdworacle_fdwtds_fdw)
    • PostgreSQL 10 以上版本中的邏輯複製

縮減執行個體的儲存空間容量

主要執行個體和唯讀複本的步驟相同。

  1. 檢查執行個體的目標最低儲存空間容量和預估作業時間。這項資訊有助於規劃儲存空間縮減作業。

    gcloud

    執行 gcloud sql instances get-storage-shrink-config 指令:

    gcloud sql instances get-storage-shrink-config INSTANCE_NAME
    

    更改下列內容:

    • INSTANCE_NAME:主要執行個體的名稱。

    回應包含 minimalTargetSizeGb 的值。執行儲存空間縮減作業時,您可以使用這個值來判斷要用於 --storage-size 參數的值。

    回應也會傳回訊息,其中包含預估作業時間,類似於下列訊息:

    ...
    "The estimated operation time is 20 minutes".
    

    REST v1

    使用 GET 方法查看執行個體的目標最低儲存空間容量。

    使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:主要執行個體所在的專案名稱。
    • INSTANCE_ID:主要執行個體的執行個體 ID。

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/getDiskShrinkConfig

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    回應包含 min_target_size_gb 的值。執行儲存空間縮減作業時,您可以使用這個值來判斷要用於 --storage-size 參數的值。

    回應也會傳回訊息,其中包含預估作業時間,類似於下列訊息:

    ...
    "The estimated operation time is 20 minutes".
    

    REST v1beta4

    使用 GET 方法查看執行個體的目標最低儲存空間容量。

    使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:主要執行個體所在的專案名稱。
    • INSTANCE_ID:主要執行個體的執行個體 ID。

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/getDiskShrinkConfig

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    回應包含 min_target_size_gb 的值。執行儲存空間縮減作業時,您可以使用這個值來判斷要用於 --storage-size 參數的值。

    回應也會傳回訊息,其中包含預估作業時間,類似於下列訊息:

    ...
    "The estimated operation time is 20 minutes".
    
  2. 縮減執行個體的儲存空間容量。

    gcloud

    執行下列指令,縮減執行個體上的儲存空間:

    gcloud sql instances perform-storage-shrink INSTANCE_NAME \
      --storage-size=TARGET_STORAGE_SIZE --async
    

    更改下列內容:

    • INSTANCE_NAME:執行個體的名稱。
    • TARGET_STORAGE_SIZE:目標儲存空間容量 (以 GB 為單位)。例如 100 GB。

    建議使用 --async 旗標,以非同步方式等待作業完成。

    REST v1

    使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:執行個體所在的專案 ID。
    • INSTANCE_ID:執行個體的 ID。
    • TARGET_STORAGE_SIZE:目標儲存空間大小 (GB)。

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/performDiskShrink

    JSON 要求主體:

    {
      "targetSizeGb": TARGET_STORAGE_SIZE
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    REST v1beta4

    使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:執行個體所在的專案 ID。
    • INSTANCE_ID:執行個體的 ID。
    • TARGET_STORAGE_SIZE:執行個體的目標儲存空間大小。

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/performDiskShrink

    JSON 要求主體:

    {
      "targetSizeGb": TARGET_STORAGE_SIZE
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

  3. 如要查看儲存空間縮減作業的狀態,請參閱「查看作業狀態」。

取消縮減儲存空間作業

  1. 取得儲存空間縮減作業 ID。

    您可以執行下列 list 指令來擷取作業 ID:

    gcloud sql operations list
    
  2. 傳送取消要求。

    gcloud

    執行下列指令來取消要求:

    gcloud sql operations cancel OPERATION_ID
    

    更改下列內容:

    OPERATION_ID:要取消的儲存空間縮減作業 ID。

    REST v1

    使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:執行個體所在的專案 ID。
    • OPERATION_ID:要取消的儲存空間縮減作業 ID。

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel

    請展開以下其中一個選項,以傳送要求:

    您應該會收到執行成功的狀態碼 (2xx) 和空白回應。

    REST v1beta4

    使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:執行個體所在的專案 ID。
    • OPERATION_ID:要取消的儲存空間縮減作業 ID。

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID/cancel

    請展開以下其中一個選項,以傳送要求:

    您應該會收到執行成功的狀態碼 (2xx) 和空白回應。

查看取消要求或其他作業的狀態

如要檢查要求狀態,請執行下列指令:

gcloud

  1. 取得取消要求的作業 ID:

    gcloud sql operations list
    
  2. 檢查作業狀態:

    gcloud sql operations describe OPERATION_ID
    

    更改下列內容:

    OPERATION_ID:要檢查的作業 ID。

REST v1

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:執行個體所在的專案名稱。
  • OPERATION_ID:儲存空間縮減作業的 ID。

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

REST v1beta4

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:執行個體所在的專案名稱。
  • OPERATION_ID:儲存空間縮減作業的 ID。

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

疑難排解

如需疑難排解資訊,請參閱「更新儲存空間容量時發生問題」。

後續步驟