Manage backups for deleted instances

MySQL  |  PostgreSQL  |  SQL Server

You can manage backups after an instance is deleted if you elected toretain backups after instance deletion,ortook a final backupprior to deleting your instance. Retained backups include automated andon-demand backups that were taken when the instance was live. When you deleteyour instance, these backups become independent of your instance and are storedat the project level. For more information about how backups work and whichbackups are retained, seeCloud SQL backups overview.

You can use these backups torestore an instanceafter your instance is deleted.

Before you begin

To manage retained backups in a Google Cloud project, you need the followingpermissions:

Console

TaskRequired permissions
List backupscloudsql.backupRuns.list
Describe a backupcloudsql.backupRuns.get
Update a backupcloudsql.backupRuns.update
Delete a backupcloudsql.backupRuns.delete

gcloud

ActionCommandRequired permissions
List backupsgcloud sql backups listcloudsql.backupRuns.list
Describe a backupgcloud sql backups describecloudsql.backupRuns.get
Update a backupgcloud sql backups patchcloudsql.backupRuns.update
Delete a backupgcloud sql backups deletecloudsql.backupRuns.delete

REST

ActionMethodRequired permissions
List backupsbackups.listBackupcloudsql.backupRuns.list
Describe a backupbackups.getBackupcloudsql.backupRuns.get
Update a backupbackups.updateBackupcloudsql.backupRuns.update
Delete a backupbackups.deleteBackupcloudsql.backupRuns.delete

List all backups for a deleted instance

You can see a list of all retained and final backups for a deleted instancefor your Google Cloud console project. Backups include details such as the name ofthe backup, the instance it belonged to, the type of backup, and the timethe instance was deleted. Since the name of a deleted instance can be reusedafter its been deleted, we recommend using theinstance deletion time field to differentiate which instance a particularbackup belongs to. For a live instance, this field is blank.

Console

  1. In the Google Cloud console, go to theCloud SQL Backups page.

    Go to Cloud SQL Backups

  2. Select your instance'sbackup option:standard tier orenhanced tier.

  3. ClickFilter, thenInstance status, and selectDeleted instance.

    This page lists all deleted instances in yourGoogle Cloud console project.

  4. Click the name of the deleted instance you want to view backups for.

    This page lists all retained automed and on-demand backups, and thefinal backup, if available, for your deleted instance.

gcloud

  1. To get a list of all backups that are associated with a Google Cloud project,use thegcloud sql backups listcommand:

    gcloud sql backups list--project=PROJECT_ID

    Replace the following:

    • PROJECT_ID: the ID of your Google Cloud project.
  2. To view details about a specific retained backup, use thegcloud sql backups describecommand:

    gcloud sql backups describeBACKUP_NAME--project=PROJECT_ID

    Replace the following:

    • BACKUP_NAME: the name of your retained backup.
    • PROJECT_ID: the ID of your Google Cloud project.

REST v1

Get a list of all backups

Use this example to get a list of all retained and final backups associatedwith a Google Cloud project. For a complete list of parameters for this call, seethebackups.listBackupspage.

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

  • PROJECT_ID: the project ID

HTTP method and URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "name": "projects/PROJECT_ID/backups/BACKUP_ID",      "kind": "sql#backup",      "state": "SUCCESSFUL",      "backupInterval": {            "startTime": "2020-01-21T11:25:33.858Z",            "endTime": "2020-01-21T11:26:18.663Z",       }      "type": "FINAL",      "instance": "INSTANCE_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "location": "us"      "description": "This is a final backup.",      "backupKind": "SNAPSHOT",      "dataDiskSizeGB": "10",      "expiryTime": "2020-01-30T11:26:18.663Z",      "backup_run": "projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns/BACKUP_RUN_ID",      "satisfies_pzs": false,      "satisfies_pzi": false}

View details for a backup

Use this example to view the details of a retained or final backup. Fora complete list of parameters for this call, see thebackup.getBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.

HTTP method and URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "name": "projects/PROJECT_ID/backups/BACKUP_ID",      "kind": "sql#backup",      "status": "SUCCESSFUL",      "backupInterval": {            "startTime": "2020-01-21T11:25:33.858Z",            "endTime": "2020-01-21T11:26:18.663Z",         }      "type": "FINAL",      "instance": "INSTANCE_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "location": "us"      "description": "final backup",      "backupKind": "SNAPSHOT",      "dataDiskSizeGB": "10",      "expiryTime": "2020-01-30T11:26:18.663Z",      "backup_run": "projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns/BACKUP_RUN_ID",      "satisfies_pzs": false,      "satisfies_pzi": false    }

REST v1beta4

Get a list of all retained backs

Use this example to get a list of all retained and final backups associatedGoogle Cloud project. For a complete list of parameters for this call, seethebackups.listBackupspage.

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

  • PROJECT_ID: the project ID

HTTP method and URL:

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

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "name": "projects/PROJECT_ID/backups/BACKUP_ID",      "kind": "sql#backup",      "state": "SUCCESSFUL",      "backupInterval": {            "startTime": "2020-01-21T11:25:33.858Z",            "endTime": "2020-01-21T11:26:18.663Z",       }      "type": "FINAL",      "instance": "INSTANCE_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "location": "us"      "description": "This is a final backup.",      "backupKind": "SNAPSHOT",      "dataDiskSizeGB": "10",      "expiryTime": "2020-01-30T11:26:18.663Z",      "backup_run": "projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns/BACKUP_RUN_ID",      "satisfies_pzs": false,      "satisfies_pzi": false}

View details for a retained backup

Use this example to view the details of a retained or final backup. Fora complete list of parameters for this call, see thebackups.getBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.

HTTP method and URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "name": "projects/PROJECT_ID/backups/BACKUP_ID",      "kind": "sql#backup",      "status": "SUCCESSFUL",      "backupInterval": {            "startTime": "2020-01-21T11:25:33.858Z",            "endTime": "2020-01-21T11:26:18.663Z",         }      "type": "FINAL",      "instance": "INSTANCE_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "location": "us"      "description": "final backup",      "backupKind": "SNAPSHOT",      "dataDiskSizeGB": "10",      "expiryTime": "2020-01-30T11:26:18.663Z",      "backup_run": "projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns/BACKUP_RUN_ID",      "satisfies_pzs": false,      "satisfies_pzi": false    }

Update a retained or final backup after instance deletion

After you delete an instance, you can update the settings for any retained or final backupsassociated with that instance that are stored at the project level. Dependingon the type of backup, the details you can update might be different.

You can update the description and the retention settings of a final backuptaken prior to deleting your instance. However, for on-demand or automatedbackups that are retained after instance deletion, you can only update thedescription of for these backups. For retained backups, the retention settingsare set based on the retention settings of the backups when the instancewas live. For more information, seeRetain backups after instance deletion.

Update a final backup

You can update the retention settings and the description of a final backuptaken before an instance is deleted. To update the backup, do the following:

Console

  1. In the Google Cloud console, go to theCloud SQL Backups page.

    Go to Cloud SQL Backups

  2. Click the name of the deleted instance you want to view backups for.

    You will see a list of all retained and final backups, and theirdetails for the deleted instance.

  3. For the final backup you want to update, click more actionsMore actions icon., and then do the following:

    • If you want to edit the description of the final backup, clickEdit description.

      Enter the description in theDescribe this backup field, thenclickUpdate.

    • If you want to edit the retention period for the final backup,clickEdit retention period.

      Select the date in theRetain backup until field. The retentionperiod can range from 1 to 365 days after instance deletion. Onceyou select the date to retain the backup until, clickUpdate.

gcloud

You'll need thebackup-name of the final backup you want to update.To get thebackup-name, seeList backups for a deleted instance.

To update the retention period or the description of a final backup, usethegcloud sql backups patchcommand and specify either theexpiry-time or thettl-days forthe backup:

gcloud sql backups patchBACKUP_NAME--description=BACKUP_DESCRIPTION--expiry-time=EXPIRY_TIME | --ttl-days=TTL_DAYS

Replace the following:

  • BACKUP_NAME: the name of the final backup.
  • BACKUP_DESCRIPTION: the new description you want toadd to final backup.
  • One of the following:

    • EXPIRY_TIME: the new date and time for when youwant the final backup to be deleted. The maximum time is 365 daysfrom instance deletion.
    • TTL_DAYS: the number of days you want to retain yourfinal backup. This can range from 1 to 365 days, where the default is30 days.

REST v1

You'll need thebackup-name of the final backup you want to update.To get thebackup-name, seeList backups for a deleted instance.

You can update the description and the retention settings for the finalbackup. The retention setting can be updated using one of the followingmethods:

  • Update the retention days for the final backup
  • Update the expiration time for the final backup

Update the retention period using retention days

Use this example to update the retention setting of the final backupusing the retention days parameter:

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • TTL_DAYS: the retention period of the final backup (from 1 to 365 days). This is known astime to live (TTL). The retention period starts from the current date and time, and the maximum retention period that Cloud SQL allows is 1 year (or 365 days).

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=ttl_days

Request JSON body:

{        "backup": {            expiration: {            "ttl_days":TTL_DAYS,            }         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=ttl_days"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=ttl_days" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

Update the retention period using expiration time

Use this example to update the retention setting of the final backupusing the expiration time parameter:

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • DATE_AND_TIME_STAMP: a date-and-time stamp of when Cloud SQL deletes the final backup automatically.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=expiry_time

Request JSON body:

{        "backup": {            expiration: {            "expiry_time":DATE_AND_TIME_STAMP,            }         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=expiry_time"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=expiry_time" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

Update the description

Use this example to update the description of the final backup. For acomplete list of parameters for this call, see thebackups.updateBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • DESCRIPTION: the updated description for the final backup.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description

Request JSON body:

{        "backup": {            "description":DESCRIPTION,         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

REST v1beta4

You'll need thebackup-name of the final backup you want to update.To get thebackup-name, seeList backups for a deleted instance.

You can update the description and the retention settings for the finalbackup. The retention setting can be updated using one of the followingmethods:

  • Update the retention days for the final backup
  • Update the expiration time for the final backup

Update the retention period using retention days

Use this example to update the retention setting of the final backupusing the retention days parameter:

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • TTL_DAYS: the retention period of the final backup (from 1 to 365 days). This is known astime to live (TTL). The retention period starts from the current date and time, and the maximum retention period that Cloud SQL allows is 1 year (or 365 days).

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=ttl_days

Request JSON body:

{        "backup": {            expiration: {            "ttl_days":TTL_DAYS,            }         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=ttl_days"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=ttl_days" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

Update the retention period using expiration time

Use this example to update the retention setting of the final backupusing the expiration time parameter:

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • DATE_AND_TIME_STAMP: a date-and-time stamp of when Cloud SQL deletes the final backup automatically.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=expiry_time

Request JSON body:

{        "backup": {            expiration: {            "expiry_time":DATE_AND_TIME_STAMP,            }         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=expiry_time"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=expiry_time" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

Update the description

Use this example to update the description of the final backup. For acomplete list of parameters for this call, see thebackups.updateBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • DESCRIPTION: the updated description for the final backup.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description

Request JSON body:

{        "backup": {            "description":DESCRIPTION,         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

Update a retained backup

You can update the description of retained on-demand and automated backups.To update the backup, do the following:

Console

  1. In the Google Cloud console, go to theCloud SQL Backups page.

    Go to Cloud SQL Backups

  2. Click the name of the deleted instance you want to view backups for.

    You will see a list of all retained and final backups, and theirdetails for the deleted instance.

  3. For the retained backup you want to update, click more actionsMore actions icon., and then selectEdit description.

  4. In theEdit Backup Description window, update the description foryour backup.

  5. ClickUpdate.

gcloud

To update the description of your retained backup, use thegcloud sql backups patch command:

gcloud sql backups patchBACKUP_NAME--description=BACKUP_DESCRIPTION

Replace the following:

  • BACKUP_NAME: the name of your retained backup.
  • BACKUP_DESCRIPTION: the new description you want toadd to your retained backup.

REST v1

Get a list of all retained backs

Use this example to get a list of all retained backups associated with aGoogle Cloud project. For a complete list of parameters for this call, seethebackups.listBackupspage.

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

  • PROJECT_ID: the project ID

HTTP method and URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "name": "projects/PROJECT_ID/backups/BACKUP_ID",      "kind": "sql#backup",      "state": "SUCCESSFUL",      "backupInterval": {            "startTime": "2020-01-21T11:25:33.858Z",            "endTime": "2020-01-21T11:26:18.663Z",       }      "type": "FINAL",      "instance": "INSTANCE_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "location": "us"      "description": "This is a final backup.",      "backupKind": "SNAPSHOT",      "dataDiskSizeGB": "10",      "expiryTime": "2020-01-30T11:26:18.663Z",      "backup_run": "projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns/BACKUP_RUN_ID",      "satisfies_pzs": false,      "satisfies_pzi": false}

Update the description

Use this example to update the description of the retained backup. For acomplete list of parameters for this call, see thebackups.updateBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • DESCRIPTION: the updated description for the final backup.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description

Request JSON body:

{        "backup": {            "description":DESCRIPTION,         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

REST v1beta4

Get a list of all retained backs

Use this example to get a list of all retained backups associated with aGoogle Cloud project. For a complete list of parameters for this call, seethebackups.listBackupspage.

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

  • PROJECT_ID: the project ID

HTTP method and URL:

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

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "name": "projects/PROJECT_ID/backups/BACKUP_ID",      "kind": "sql#backup",      "state": "SUCCESSFUL",      "backupInterval": {            "startTime": "2020-01-21T11:25:33.858Z",            "endTime": "2020-01-21T11:26:18.663Z",       }      "type": "FINAL",      "instance": "INSTANCE_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "location": "us"      "description": "This is a final backup.",      "backupKind": "SNAPSHOT",      "dataDiskSizeGB": "10",      "expiryTime": "2020-01-30T11:26:18.663Z",      "backup_run": "projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns/BACKUP_RUN_ID",      "satisfies_pzs": false,      "satisfies_pzi": false}

Update the description

Use this example to update the description of the retained backup. For acomplete list of parameters for this call, see thebackups.updateBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.
  • DESCRIPTION: the updated description for the final backup.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description

Request JSON body:

{        "backup": {            "description":DESCRIPTION,         },}

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Save the request body in a file namedrequest.json, and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID?update_mask=description" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{      "kind": "sql#operation",      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",      "status": "DONE",      "user": "user@example.com",      "insertTime": "2024-02-15T00:10:22.078Z",      "operationType": "UPDATE_BACKUP",      "name": "OPERATION_ID",      "targetId": "BACKUP_ID",      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",      "targetProject": "PROJECT_ID"}

Delete a backup associated with a deleted instance

You can delete a final or retained on-demand and automated backup for a deletedinstance at any time.

Note: Once you manually delete a retained or final backup, it can't berecovered.

Console

  1. In the Google Cloud console, go to theCloud SQL Backups page.

    Go to Cloud SQL Backups

  2. Click the name of the deleted instance you want to view backups for.

    You will see a list of all retained and final backups, and theirdetails for the deleted instance.

  3. For the backup you want to delete, click more actionsMore actions icon., and then selectDelete.

  4. In theDelete backup window, enter the name of deleted instance,and then clickDelete.

gcloud

To delete a retained backup, use thegcloud sql backups deletecommand:

gcloud sql backups deleteBACKUP_NAME

Replace the following:

  • BACKUP_NAME: the name of your retained backup.

REST v1

Use this example to delete a final or retained backup. For acomplete list of parameters for this call, see thebackups.deleteBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.

HTTP method and URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{  "kind": "sql#operation",  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/backups/BACKUP_ID",  "status": "PENDING",  "user": "user@example.com",  "insertTime": "2020-01-21T22:43:37.981Z",  "operationType": "DELETE_BACKUP",  "name": "OPERATION_ID",  "targetId": "BACKUP_ID",  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",  "targetProject": "PROJECT_ID"}

REST v1beta4

Use this example to delete a final or retained backup. For acomplete list of parameters for this call, see thebackups.deleteBackuppage.

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

  • PROJECT_ID: the project ID.
  • BACKUP_ID: the backup ID. You obtain this ID from the output of running the previous call.

HTTP method and URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID

To send your request, expand one of these options:

curl (Linux, macOS, or Cloud Shell)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login , or by usingCloud Shell, which automatically logs you into thegcloud CLI . You can check the currently active account by runninggcloud auth list.

Execute the following command:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID"

PowerShell (Windows)

Note: The following command assumes that you have logged in to thegcloud CLI with your user account by runninggcloud init orgcloud auth login . You can check the currently active account by runninggcloud auth list.

Execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID" | Select-Object -Expand Content

You should receive a JSON response similar to the following:

Response

{  "kind": "sql#operation",  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/backups/BACKUP_ID",  "status": "PENDING",  "user": "user@example.com",  "insertTime": "2020-01-21T22:43:37.981Z",  "operationType": "DELETE_BACKUP",  "name": "OPERATION_ID",  "targetId": "BACKUP_ID",  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",  "targetProject": "PROJECT_ID"}

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-17 UTC.