查找和设置维护窗口

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init

为实例设置首选维护期

控制台

  1. 在 Google Cloud 控制台中,转到 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

如果您在实例正在维护或已安排维护时更改维护窗口设置,则更改不会立即生效。这些更改会反映在未来的维护事件中。

如果您已选择接收维护通知,则 Cloud SQL 会在实例安排维护后向您发送通知,其中包含安排维护的确切日期和时间。Cloud SQL 会根据实例的更新维护窗口顺序设置发送这些通知,如下所示:

  • 如果更新顺序设置设定为 Earlier,则 Cloud SQL 会至少提前一周发送维护通知。
  • 如果更新顺序设置设定为 Later,则 Cloud SQL 会至少提前两周发送维护通知。

选择接收维护通知

在选择接收维护通知之前,您必须为实例设置首选维护窗口

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

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

在 Google Cloud 控制台中查找维护通知

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

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

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

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

使用 API 查找计划维护期

gcloud

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

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

在响应中查找 scheduledMaintenance 部分。

REST v1

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

  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • INSTANCE_NAME:您为实现高可用性而配置的实例的名称

HTTP 方法和网址:

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

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

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0"
}

在响应中查找 scheduledMaintenance 部分。

REST v1beta4

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

  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • INSTANCE_NAME:您为实现高可用性而配置的实例的名称

HTTP 方法和网址:

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

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

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0"
}

在响应中查找 scheduledMaintenance 部分。

重新安排计划内维护

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

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 针对维护一词进行过滤,以列出所有已安排维护的实例。
  3. 维护列中,点击重新安排
  4. 重新安排对话框中,选择是立即应用维护、将维护重新安排在 28 天延迟期内的特定时间,还是推迟到下一个可用维护窗口。

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

如果您要重新安排维护,使其长达 28 天,请检查 gcloud 的版本号。如果版本号低于 390.0.0_RC00,请重新安装 gcloud

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 控制台中,转到 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":
  {
    "denyMaintenancePeriods": [{
      "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":
  {
    "denyMaintenancePeriods": [{
      "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 控制台中,转到 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"
}

拒绝维护期通知

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

如果您更改拒绝维护期设置以阻止在先前计划的时间进行维护,则 Cloud SQL 实例会跳过维护并发送有关取消维护的通知。每当为该实例安排更新时,Cloud SQL 都会发送此取消通知。

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

后续步骤