缩减实例存储空间容量

本页面介绍了如何使用存储空间缩减功能管理 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 Editor (roles/cloudsql.editor)

    如需了解详情,请参阅以下资源:

准备实例

在开始之前,请完成以下要求。

这些步骤对于主实例和只读副本都是相同的。

如果更新的是只读副本,请务必先缩小主实例的容量,然后再缩小副本的大小。

  1. 获取要管理的实例所属项目的项目 ID。

  2. 检查实例的当前状态,确保其正在运行。一种检查方法是使用 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 方法和网址:

    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 响应:

问题排查

如需了解问题排查,请参阅更新存储空间时出现的问题

后续步骤