Finding and setting maintenance windows

This page has procedures for finding and setting maintenance windows for Cloud SQL instances. To learn more about how and why Cloud SQL performs maintenance, see the Overview of maintenance on Cloud SQL instances.

Before you begin

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud Console, on the project selector page, select or create a Google Cloud project.

    Go to the project selector page

  3. Make sure that billing is enabled for your Cloud project. Learn how to confirm that billing is enabled for your project.

  4. Install and initialize the Cloud SDK.

Setting a preferred window for maintenance on an instance

To set a preferred maintenance window:

Console

  1. Go to the Instances page.

    GO TO THE INSTANCES PAGE

  2. Click an Instance name.
  3. On the Cloud SQL instance Overview page, click Edit maintenance preferences.
  4. Under Configuration options, open Maintenance.
  5. Configure the following options:
    • Preferred window. Set the day and hour range when updates can occur on this instance.
    • Order of update. Set the order for updating this instance, in relation to updates to other instances. Set timing to Any, Earlier, or Later. Instances using the Earlier setting receive updates up to a week before instances using the Later setting, when comparing instances that reside in the same location.

gcloud

Before using the gcloud command below, make the following replacements:
  • instance-id: Instance to reschedule
  • day: Day when you want maintenance to occur. Set to one of SUN, MON, TUE, WED, THU, FRI, SAT.
  • hour: Hour of day for maintenance window, in UTC time zone (1-24).
    gcloud sql instances patch instance-id
        --maintenance-window-day=day
        --maintenance-window-hour=hour
    
For reference information, see gcloud sql instances patch.

Opting in to maintenance notifications

Even when you opt in to notifications, you do not receive them unless you set a preferred window for maintenance on an instance

  1. Go to the Communication page.
    GO TO THE COMMUNICATION PAGE
  2. In the row for Cloud SQL, Maintenance window, select the radio button under Email to turn it ON.

Each user that needs to receive notifications must opt in separately.

Finding maintenance notifications in the Cloud Console

You can view maintenance notifications in a few places in the Cloud Console:

  • On the ACTIVITY dashboard, look for instances marked with SQL Maintenance.
    GO TO THE ACTIVITY PAGE

  • When an instance is scheduled for maintenance, the date for maintenance is listed on the Instances page in the Maintenance column. The Maintenance column is usually hidden, but it displays automatically when maintenance is scheduled. You can also select Maintenance from the Column display options (Column display options icon is three lines) if you want the Maintenance column to always show up.

  • Alternatively, you can select an instance to go to the Instance details page. If the instance is scheduled for maintenance, you will see a message in the Maintenance pane.
    GO TO THE INSTANCES PAGE

Rescheduling planned maintenance

To reschedule planned maintenance:

Console

  1. Go to the Instances page.

    GO TO THE INSTANCES PAGE

  2. Filter for the term Maintenance to list all instances scheduled for maintenance.
  3. Under the Maintenance column, click Reschedule.
  4. In the Reschedule dialog, choose whether to apply maintenance immediately, reschedule it to happen within one week from the originally scheduled time, or create another scheduled time.

gcloud

Before using the gcloud command below, make the following replacements:
  • instance-id: The instance to reschedule
  • reschedule-type: Use one of IMMEDIATE, NEXT_AVAILABLE_WINDOW, or SPECIFIC_TIME
  • . If you choose NEXT_AVAILABLE_WINDOW, maintenance is rescheduled to happen within one week from the originally scheduled day and time
  • reschedule-time: If you select SPECIFIC_TIME for reschedule-type, you also need to set this flag to specify the new day and time for maintenance to occur. Uses ISO 8601 format. For example, 2020-01-16T16:56:00.000Z
  gcloud sql reschedule-maintenance instance-id
      --reschedule-type=reschedule-type
      [--schedule-time=reschedule-time]
  
For reference information, see gcloud sql reschedule-maintenance.

REST v1beta4

Before using any of the request data below, make the following replacements:

  • project-id: The project ID
  • instance-id: The instance ID
  • reschedule-type: Use one of IMMEDIATE, NEXT_AVAILABLE_WINDOW, or SPECIFIC_TIME. If you choose NEXT_AVAILABLE_WINDOW, maintenance is rescheduled to happen within one week from the originally scheduled day and time

HTTP method and URL:

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

Request JSON body:

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

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

{
  "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"
}
To see how the underlying REST API request is constructed for this task, see the APIs Explorer on the instances:post page.

Configure a deny maintenance period

You can configure a maximum of one deny maintenance period on a Cloud SQL instance at any given time. The deny maintenance period takes precedence over any scheduled maintenance window. If there is a conflict between the timing of a maintenance window and the deny maintenance period, the deny maintenance period overrides the maintenance window.

You can manually remove a deny maintenance period, whether it has already occurred or not.

To configure a deny maintenance period, set its start date, end date, and the time of day the interval begins and ends. A deny maintenance period can span from one to 90 days.

For start date and end date, there are two formats:

  • yyyy-mm-dd: indicates a specific date
  • mm-dd: indicates a date recurring every year

The start date and end date are UTC. To set the timezone, use the time field to adjust start time. For example, start date = 2020-10-10 and time = 07:00:00 indicate the start time 2020-10-10 07:00:00 UTC (2020-10-10 00:00:00 PST)

For time, the format is: HH:mm:SS.

  • Hours are from 0 and 23 (inclusive).
  • Minutes and seconds are between 0 and 59 (inclusive).

Configure a deny maintenance period using gcloud or the REST API.

gcloud

Before using the gcloud command below, make the following replacements:
  • instance-id: Cloud SQL instance id
  • start-date: Date when the interval begins. For example, 2021-11-29
  • end-date: Date when the interval ends. For example, 2021-12-02
  • time: Time of day for interval to start and end. For example, 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 v1beta4

Before using any of the request data below, make the following replacements:

  • project-id: The project ID
  • instance-id: The instance ID
  • start-date: The start date (yyyy-mm-dd) or (mm-dd) for annual recurrence
  • end-date: The end date (yyyy-mm-dd) or (mm-dd) for annual recurrence
  • time: The start and end time (HH:mm:SS)

HTTP method and URL:

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

Request JSON body:

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

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

{
  "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"
}

Remove a deny maintenance period

You can remove a deny maintenance period using gcloud or the REST API.

gcloud

Before using the gcloud command below, make the following replacements:
  • instance-id: Cloud SQL instance id
gcloud sql instances patch instance-id \
 --remove-deny-maintenance-period

REST v1beta4

Before using any of the request data below, make the following replacements:

  • project-id: The project ID
  • instance-id: The instance ID

HTTP method and URL:

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

Request JSON body:

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

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

{
  "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"
}

Deny maintenance period notifications

Maintenance Window notifications are not sent when the planned maintenance time falls within the deny maintenance period and are forbidden by maintenance deny period settings.

Maintenance is skipped and notification of maintenance cancellation is sent, when instance deny maintenance period settings are changed to forbid maintenance at the previously scheduled time. This cancellation notification is sent when the instance was previously scheduled for update.

Notifications of planned maintenance are sent during the deny maintenance period, as long as such maintenance is scheduled to occur outside of that period.

What's next