查找和设置维护窗口

本页面介绍如何查找和设置 Cloud SQL 实例的维护期。如需详细了解 Cloud SQL 为何及如何执行维护,请参阅 Cloud SQL 实例维护概览

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 安装并初始化 Cloud SDK
  5. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  6. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  7. 安装并初始化 Cloud SDK

为实例设置首选维护期

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 维护部分,点击修改维护偏好设置
  4. 配置选项部分,打开维护
  5. 配置以下选项:
    • 首选时段。设置此实例可以进行更新的日期和时间范围。
    • 更新顺序。设置此实例相对于其他实例的更新顺序。请将时间安排设置为任意较早晚些时候。使用较早设置的实例要比使用晚些时候设置的实例提前长达一周的时间收到更新,但前提是所比较的实例均位于同一位置。

gcloud

在使用下面的 gcloud 命令之前,请先进行以下替换:

  • instance-id:要重新安排的实例
  • day:所需的维护日期。请设置为 SUNMONTUEWEDTHUFRISAT 之一。
  • hour:以世界协调时间 (UTC) 时区 (0-23) 表示的维护期时间。
gcloud sql instances patch instance-id \
--maintenance-window-day=day \
--maintenance-window-hour=hour
    
如需了解参考信息,请参阅 gcloud sql instances patch

选择接收维护通知

如果您没有为实例设置首选维护期,那么即使您选择了接收通知,也不会收到通知

  1. 转到通信页面。
    转到“通信”
  2. Cloud SQL 维护期所对应的行中,选择电子邮件下方的单选按钮以开启电子邮件功能。

每个需要接收通知的用户必须分别选择接收通知。

在 Google Cloud Console 中查找维护通知

您可以在 Google Cloud Console 的以下几个位置查看维护通知:

  • 活动信息中心内,查找标有 SQL 维护的实例。
    转到“活动”

  • 如果实例已安排维护,则维护日期会列在实例页面的维护列中。维护列通常处于隐藏状态,但会在安排维护后自动显示出来。如果您希望维护列始终处于显示状态,也可以从列显示选项 (“列显示选项”图标为三条线) 中选择维护

  • 或者,您可以选择实例以转到实例详情页面。如果实例已安排维护,您会在维护窗格中看到一条消息。
    转到“Cloud SQL 实例”

使用 API 查找计划维护期

gcloud

在使用下面的 gcloud 命令之前,请先进行以下替换:

  • instance-id:要重新安排的实例
gcloud sql instances describe instance-id
    

在响应中查找 SqlScheduledMaintenance 部分。

REST v1

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "asia-east1-a",
      "kind": "sql#locationPreference"
    },
    "SqlScheduledMaintenance":{
      "startTime": "2021-10-02T15:01:23Z",
      "canDefer": true,
      "canReschedule": true,
      "scheduleDeadlineTime": "2021-10-02T15:01:23Z"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "08:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "13",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "etag-id",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    "kind": "sql#sslCert",
    "certSerialNumber": "0",
    "cert": "certificate-id",
    "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
    "sha1Fingerprint": "sha-id",
    "instance": "instance-id",
    "createTime": "2019-06-28T22:46:35.052Z",
    "expirationTime": "2029-06-25T22:47:35.052Z"
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "asia-east1",
  "gceZone": "asia-east1-a"
}

在响应中查找 SqlScheduledMaintenance 部分。

REST v1beta4

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "asia-east1-a",
      "kind": "sql#locationPreference"
    },
    "SqlScheduledMaintenance":{
      "startTime": "2021-10-02T15:01:23Z",
      "canDefer": true,
      "canReschedule": true,
      "scheduleDeadlineTime": "2021-10-02T15:01:23Z"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "08:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "13",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "etag-id",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    "kind": "sql#sslCert",
    "certSerialNumber": "0",
    "cert": "certificate-id",
    "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
    "sha1Fingerprint": "sha-id",
    "instance": "instance-id",
    "createTime": "2019-06-28T22:46:35.052Z",
    "expirationTime": "2029-06-25T22:47:35.052Z"
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "asia-east1",
  "gceZone": "asia-east1-a"
}

在响应中查找 SqlScheduledMaintenance 部分。

重新安排计划内维护

您可以使用 Google Cloud Console、gcloud 或 Cloud SQL Admin API 重新安排维护。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 针对维护一词进行过滤,以列出所有已安排维护的实例。
  3. 维护列中,点击重新安排
  4. 重新安排对话框中,选择是立即应用维护、将维护重新安排在原计划时间后的一周内特定时间进行,还是将维护时间延迟一周。

gcloud

在使用下面的 gcloud 命令之前,请先进行以下替换:

  • instance-id:要重新安排的实例
  • reschedule-type:使用 IMMEDIATENEXT_AVAILABLE_WINDOWSPECIFIC_TIME 之一。

    如果您选择 NEXT_AVAILABLE_WINDOW,则维护将被重新安排在当前计划日期和时间后的一周内进行。

  • reschedule-time:如果选择 SPECIFIC_TIME 作为 reschedule-type,您还需要设置此标志来指定新的维护日期和时间。该值采用 ISO 8601 格式,例如 2020-01-16T16:56:00.000Z。
gcloud sql reschedule-maintenance instance-id \
--reschedule-type=reschedule-type \
[--schedule-time=reschedule-time]
  
如需了解参考信息,请参阅 gcloud sql reschedule-maintenance

REST v1

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID
  • reschedule-type:使用 IMMEDIATENEXT_AVAILABLE_WINDOWSPECIFIC_TIME 之一。

    如果您选择 NEXT_AVAILABLE_WINDOW,则维护将被重新安排在原计划日期和时间后的一周内进行。

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rescheduleMaintenance

请求 JSON 正文:

{
  "reschedule": {
    "reschedule_type": "reschedule-type"
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": RESCHEDULE_MAINTENANCE,
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID
  • reschedule-type:使用 IMMEDIATENEXT_AVAILABLE_WINDOWSPECIFIC_TIME 之一。

    如果您选择 NEXT_AVAILABLE_WINDOW,则维护将被重新安排在原计划日期和时间后的一周内进行。

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rescheduleMaintenance

请求 JSON 正文:

{
  "reschedule": {
    "reschedule_type": "reschedule-type"
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": RESCHEDULE_MAINTENANCE,
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
如需了解如何为此任务构建底层 REST API 请求,请参阅 instances:post 页面上的 APIs Explorer

配置拒绝维护期

在任何给定时间,您最多可以在一个 Cloud SQL 实例上配置一个拒绝维护期。拒绝维护期优先于任何计划的维护期。如果某维护期时间与拒绝维护期之间存在冲突,则拒绝维护期会覆盖该维护期。

您可以手动移除拒绝维护期,无论它是否已经出现。

如要配置拒绝维护期,请设置开始日期、结束日期以及间隔的开始和结束时间。拒绝维护期可能从 1 天到 90 天不等。

开始日期和结束日期有两种格式:

  • yyyy-mm-dd:表示特定日期
  • mm-dd:表示每年重复的日期

开始日期和结束日期均为世界协调时间 (UTC)。如需设置时区,请使用时间字段来调整开始时间。例如,开始日期 = 2020-10-10,时间 = 07:00:00 表示开始时间是世界协调时间 (UTC) 2020-10-10 07:00:00 (2020-10-10 00:00:00 PST)。

对于时间,格式为 HH:mm:SS

  • 小时介于 0 和 23 之间(含 0 和 23)。
  • 分钟和秒介于 0 到 59(包含 0 到 59)之间。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 维护部分,点击修改维护偏好设置
  4. 拒绝维护期部分中,设置开始日期和结束日期。
  5. 高级选项部分中,选择每年重复
  6. 点击保存

gcloud

在使用下面的 gcloud 命令之前,请先进行以下替换:

  • instance-id:Cloud SQL 实例 ID
  • start-date:间隔开始的日期。例如:2021-11-29
  • end-date:间隔结束的日期。例如:2021-12-02
  • time:间隔开始和结束的具体时间。例如:00:00:00
gcloud sql instances patch instance-id\
 --deny-maintenance-period-start-date=start-date \
 --deny-maintenance-period-end-date=end-date \
 --deny-maintenance-period-time=time

REST v1

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID
  • start-date:开始日期 (yyyy-mm-dd) 或 (mm-dd)(对于每年定期重复的情况)
  • end-date:结束日期 (yyyy-mm-dd) 或 (mm-dd)(对于每年定期重复的情况)
  • time:开始时间和结束时间 (HH:mm:SS)

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "denyMaintenancePeriod": {
      "start_date": "start-date",
      "end_date": "end-date"
      "time": "time"
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": MAINTENANCE_DENY_PERIOD,
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID
  • start-date:开始日期 (yyyy-mm-dd) 或 (mm-dd)(对于每年定期重复的情况)
  • end-date:结束日期 (yyyy-mm-dd) 或 (mm-dd)(对于每年定期重复的情况)
  • time:开始时间和结束时间 (HH:mm:SS)

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "denyMaintenancePeriod": {
      "start_date": "start-date",
      "end_date": "end-date"
      "time": "time"
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": MAINTENANCE_DENY_PERIOD,
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

移除拒绝维护期

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 维护部分,点击修改维护偏好设置
  4. 拒绝维护期部分,点击清除
  5. 点击保存

gcloud

在使用下面的 gcloud 命令之前,请先进行以下替换:

  • instance-id:Cloud SQL 实例 ID
gcloud sql instances patch instance-id \
--remove-deny-maintenance-period

REST v1

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "denyMaintenancePeriods": []
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": MAINTENANCE_DENY_PERIOD,
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "denyMaintenancePeriods": []
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": MAINTENANCE_DENY_PERIOD,
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

拒绝维护期通知

当计划的维护时间在拒绝维护期内且维护拒绝期设置禁止该维护期通知,则不会发送维护期通知。

当实例拒绝维护期限设置更改为禁止在先前计划的时间进行维护时,将跳过维护并发送维护取消通知。此取消通知在实例先前计划进行更新时发送。

计划性维护通知将在拒绝维护期间发送,前提是将维护安排在该时间段之外。

后续步骤