查找和设置维护窗口

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

如果您已选择接收维护通知,则当有适合您的 Cloud SQL 实例的维护更新可用时,Cloud SQL 会向您发送电子邮件通知。Cloud SQL 会在维护发布之前发送通知,然后按照每周时间表继续将更新应用于实例组。通过为实例选择维护时间,您可以控制实例在接收维护更新之前多久收到提前通知。

您可以通过以下方式安排维护更新时间:

  • 如果您选择 Any 或未配置此设置,则维护更新可能会随时进行,但通常会在发布后的第一周内进行。
  • 如果您选择 Week 1(也称为 previewcanary),则维护更新会在发出维护通知后的 7 到 14 天之间进行。
  • 如果您选择 Week 2(也称为 productionstable),则维护更新会在发出维护通知后的 15 到 21 天之间进行。
  • 如果您选择 Week 5,则维护更新会在发出维护通知后的 35 到 42 天之间进行。

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

准备工作

  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. 配置以下选项:
    • 维护时间。选择要应用自动维护更新的一周。您可以采取以下做法:
      • 任意:维护更新可能会随时进行,但通常会在第 1 周内进行。
      • 第 1 周:维护更新在发出通知后的 7 到 14 天内进行。
      • 第 2 周:维护更新在发出通知后的 15 到 21 天内进行。
      • 第 5 周:维护更新在发出通知后的 35 到 42 天内进行。
    • 维护窗口。选择您首选的每周时间和时长。包括以下选项:
      • 任何窗口:默认维护窗口。维护更新不限于一周中的星期几或一天中的特定时间。
      • 星期几:为维护窗口选择日期,可以是星期六星期日星期一星期二星期三星期四星期五
      • 时间:如果您选择了星期几,则还可以选择时间。选择您所在时区的一个小时间隔。

gcloud

如需在 Cloud SQL 实例上配置维护窗口和维护时间安排,请运行以下命令:

gcloud sql instances patch INSTANCE_ID \
  --maintenance-window-day=DAY \
  --maintenance-window-hour=HOUR \
  --maintenance-release-channel=MAINTENANCE_TIMING
    

执行以下变量替换操作:

  • INSTANCE_ID:实例 ID,实例可以是读取副本实例。
  • DAY:您希望在星期几进行维护。设置为 MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY。 采用世界协调时间 (UTC) 时区指定。
  • HOUR:维护窗口的时段,介于 023 之间。采用世界协调时间 (UTC) 时区指定。
  • MAINTENANCE_TIMING:您希望应用维护更新的维护发布周期的周。选项包括:
    • preview:这将转换为发出维护通知后的第 1 周。维护更新安排在发出通知后的 7 到 14 天之间。
    • production:这将转换为发出维护通知后的第 2 周。维护更新安排在发出通知后的 15 到 21 天之间。
    • week5:维护更新安排在发出通知后的 35 到 42 天之间。

如需了解参考信息,请参阅 gcloud sql instances patch

REST v1

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

  • PROJECT_ID:Google Cloud 项目的 ID 或项目编号。
  • INSTANCE_ID:实例 ID,实例不能是读取副本实例。
  • HOUR:维护窗口的时段,介于 023 之间。采用世界协调时间 (UTC) 时区指定。
  • DAY:要在星期几进行维护更新。 指定 MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY。 采用世界协调时间 (UTC) 时区指定。
  • MAINTENANCE_TIMING:您希望应用维护更新的维护发布周期的周。选项包括:
    • canary:这将转换为发出维护通知后的第 1 周。维护更新安排在发出通知后的 7 到 14 天之间。
    • stable:这将转换为发出维护通知后的第 2 周。维护更新安排在发出通知后的 15 到 21 天之间。
    • week5:维护更新安排在发出通知后的 35 到 42 天之间。

HTTP 方法和网址:

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

请求 JSON 正文:

{
  "settings": {
    "maintenanceWindow": {
        "hour": "HOUR",
        "day": "DAY",
        "updateTrack": "MAINTENANCE_TIMING"
    }
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-04-01T21:30:35.667Z",
  "operationType": "UPDATE",
  "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:Google Cloud 项目的 ID 或项目编号。
  • INSTANCE_ID:实例 ID,实例不能是读取副本实例。
  • HOUR:维护窗口的时段,介于 023 之间。采用世界协调时间 (UTC) 时区指定。
  • DAY:您希望在星期几进行维护更新。 指定 MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY。 采用世界协调时间 (UTC) 时区指定。
  • MAINTENANCE_TIMING:您希望应用维护更新的维护发布周期的周。选项包括:
    • canary:这将转换为发出维护通知后的第 1 周。维护更新安排在发出通知后的 7 到 14 天之间。
    • stable:这将转换为发出维护通知后的第 2 周。维护更新安排在发出通知后的 15 到 21 天之间。
    • week5:维护更新安排在发出通知后的 35 到 42 天之间。

HTTP 方法和网址:

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

请求 JSON 正文:

{
  "settings": {
    "maintenanceWindow": {
        "hour": "HOUR",
        "day": "DAY",
        "updateTrack": "MAINTENANCE_TIMING"
    }
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-04-01T21:30:35.667Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

选择接收维护通知

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

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

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

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

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

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

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

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

使用 API 查找计划内维护

gcloud

如需检查即将进行的计划内维护,请使用以下命令:

gcloud sql instances describe INSTANCE_ID
    

执行以下变量替换操作:

  • 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": "POSTGRES_13"
}

在响应中,查找 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": "POSTGRES_13"
}

在响应中,查找 scheduledMaintenance 部分。

重新安排计划内维护

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

如果您将实例的维护时间设置为第 1 周或第 2 周,则重新安排维护的时间最长可达 28 天。

如果您将实例的维护时间设置为第 5 周,则重新安排维护的时间最长可达 7 天。您必须在此时间段内重新安排维护,以确保实例在下一个季度维护发布开始之前收到维护更新。

控制台

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

    转到“Cloud SQL 实例”

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

gcloud

如需重新安排 Cloud SQL 实例的维护时间,请运行以下命令:

gcloud sql reschedule-maintenance INSTANCE_ID \
  --reschedule-type=RESCHEDULE_TYPE \
  [--schedule-time=RESCHEDULE_TIME]
  

执行以下变量替换操作:

  • INSTANCE_ID:要重新安排的实例。
  • RESCHEDULE_TYPE:使用 IMMEDIATENEXT_AVAILABLE_WINDOWSPECIFIC_TIME 之一。

    如果您选择 NEXT_AVAILABLE_WINDOW,则维护将被重新安排到当前计划时间之后的下一个可用维护窗口。

  • RESCHEDULE_TIME:如果您为 RESCHEDULE_TYPE 指定了 SPECIFIC_TIME,则还需要设置 --schedule-time 标志,以指定进行维护的新日期和时间。该值采用 ISO 8601 格式,例如 2020-01-16T16:56:00.000Z。

如需了解参考信息,请参阅 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 页面上的 API 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

如需为 Cloud SQL 实例配置拒绝维护期,请运行以下命令:

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

执行以下变量替换操作:

  • INSTANCE_ID:Cloud SQL 实例 ID
  • START_DATE:间隔开始的日期。例如:2021-11-29
  • END_DATE:间隔结束的日期。例如:2021-12-02
  • TIME:间隔开始和结束的具体时间。例如:00:00:00

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

如需从 Cloud SQL 实例中移除拒绝维护期,请运行以下命令:

gcloud sql instances patch INSTANCE_ID \
--remove-deny-maintenance-period

执行以下变量替换操作:

  • INSTANCE_ID:Cloud SQL 实例 ID

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 都会发送此取消通知。

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

后续步骤