インスタンスのストレージ容量を縮小する

このページでは、ストレージ縮小機能を使用して Cloud SQL インスタンスのストレージ容量を管理する方法について説明します。

始める前に

  1. 機能の制限事項を確認します。

  2. gcloud CLI を使用している場合は、Google Cloud SDK と gcloud CLI の最新バージョンを使用していることを確認してください。

  3. 次の IAM 権限を取得します。

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

    これらの権限は、次のいずれかのロールで使用できます。ロールを割り当てる際は、最小権限の原則を適用することをおすすめします。

    • Cloud SQL 管理者(roles/cloudsql.admin
    • Cloud SQL 編集者(roles/cloudsql.editor

    詳しくは、次のリソースをご覧ください。

インスタンスを準備する

始める前に、次の要件を満たしてください。

これらの手順は、プライマリ インスタンスとリードレプリカで同じです。

リードレプリカを更新する場合は、まずプライマリ インスタンスの容量を縮小してから、レプリカのサイズを縮小してください。

  1. 管理するインスタンスを含むプロジェクトのプロジェクト ID を取得します。

  2. インスタンスの現在の状態を確認して、実行されていることを確認します。確認方法の 1 つは、describe コマンドを使用することです。

      gcloud sql instances describe
    

    次のステータスを返します。

      RUNNABLE
    

    実行されていない場合は、インスタンスを起動します。

  3. 現在のインスタンスのバックアップを作成します。これにより、構成中に問題が発生した場合に、後でインスタンスを復元できます。

  4. アウトバウンド接続を有効にする(またはアウトバウンド データ転送を必要とする)拡張機能や機能をすべて無効にします。

インスタンスのストレージ容量を縮小する

次の手順は、プライマリ インスタンスとリードレプリカで同じです。

  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 メソッドと URL:

    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 メソッドと URL:

    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 メソッドと URL:

    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 メソッドと URL:

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

    リクエストの本文(JSON):

    {
      "targetSizeGb": TARGET_STORAGE_SIZE
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  3. ストレージ縮小オペレーションのステータスを確認するには、オペレーションのステータスを確認するをご覧ください。

ストレージの縮小オペレーションをキャンセルする

  1. ストレージ縮小オペレーション ID を取得します。

    オペレーション ID は、次の list コマンドを実行して取得できます。

    gcloud sql operations list
    
  2. キャンセル リクエストを送信します。

    gcloud

    次のコマンドを実行して、リクエストをキャンセルします。

    gcloud sql operations cancel OPERATION_ID
    

    次のように置き換えます。

    OPERATION_ID: キャンセルするストレージ縮小オペレーションの ID。

    REST v1

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: インスタンスが存在するプロジェクトの ID。
    • OPERATION_ID: キャンセルするストレージ縮小オペレーションの ID。

    HTTP メソッドと URL:

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

    リクエストを送信するには、次のいずれかのオプションを展開します。

    成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

    REST v1beta4

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: インスタンスが存在するプロジェクトの ID。
    • OPERATION_ID: キャンセルするストレージ縮小オペレーションの ID。

    HTTP メソッドと URL:

    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 メソッドと URL:

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

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが存在するプロジェクトの名前。
  • OPERATION_ID: ストレージ縮小オペレーションの ID。

HTTP メソッドと URL:

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

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

トラブルシューティング

トラブルシューティングについては、ストレージ容量の更新に関する問題をご覧ください。

次のステップ