Upgrade an instance to Cloud SQL Enterprise Plus edition by using in-place upgrade Stay organized with collections Save and categorize content based on your preferences.
Note: This page contains features related to Cloud SQL editions. For more information about Cloud SQL editions, seeIntroduction to Cloud SQL editions.
This page shows you how to use the in-place upgrade method to upgrade a Cloud SQL Enterprise editioninstance to Cloud SQL Enterprise Plus edition. Additionally, it also describes the procedure toswitch a Cloud SQL Enterprise Plus edition instance to Cloud SQL Enterprise edition.
Upgrading to Cloud SQL Enterprise Plus edition provides you with several benefits and performance enhancements.For more information, seeIntroduction to Cloud SQL for PostgreSQL editions.
To enable these enhancements for your existing Cloud SQL Enterprise edition instances, you must upgradethem to Cloud SQL Enterprise Plus edition. The upgrade process takes a few minutes to complete andhas near-zero downtime. Switching to Cloud SQL Enterprise edition can takeup to 60 seconds of downtime.
Additionally, this upgrade process doesn't require you to change the endpointsthat your applications connect to.
Before you begin
Ensure that you're running a Cloud SQL Enterprise edition instance on PostgreSQL 12 or later.
If your instance is on an earlier version of PostgreSQL, then you must upgrade your instanceto PostgreSQL 12 or later. For more information, seeUpgrade the database major version in-place.
Check the storage location of the transaction logs used for PITR
All Cloud SQL Enterprise Plus edition instances are automatically enabled with point-in-timerecovery (PITR). If the Cloud SQL Enterprise edition instance that you want to upgrade storesthe write-ahead logs used for PITR on disk, then theupgrade process to Cloud SQL Enterprise Plus edition switches the storage location of thewrite-ahead logs from disk to Cloud Storage.
Before you upgrade to Cloud SQL Enterprise Plus edition, check whether your Cloud SQL Enterprise editioninstance will undergo the storage location switch for the write-ahead logs usedfor PITR. For more information and instructions on how to check your instance, seeCheck the storage location of transaction logs used for PITR.
For more information about switching the transaction log storage location in the upgrade process, seeStorage location of transaction logs used for PITR.
Upgrade an instance to Cloud SQL Enterprise Plus edition
Use the procedure in this section to upgrade a Cloud SQL Enterprise edition instanceto Cloud SQL Enterprise Plus edition.
Console
In the Google Cloud console, go to theCloud SQL Instances page.
- To open theOverview page of an instance, click the instance name.
- ClickEdit.
- In theChoose a Cloud SQL edition section, clickUpgrade.
- In theUpgrade to Enterprise Plus panel, enter your instance ID and then clickUpgrade edition.
Alternatively, you can also upgrade an instance by clickingUpgrade in theConfiguration section of the instanceOverview page.
gcloud
The following code sample shows how to upgrade your instance to Cloud SQL Enterprise Plus edition:
gcloudsqlinstancespatchINSTANCE_ID\--edition=enterprise-plus\--tier=MACHINE_TYPE\--project=PROJECT_ID
Optional: you can also enabledata cache for your instance by adding the--enable-data-cache
flag.
Replace the following:
- PROJECT_ID: the project ID of the instance that you want to upgrade.
- INSTANCE_ID: name of the instance that you want to upgrade.
- MACHINE_TYPE: the machine type of the instance that you want to upgrade to. For more information about machine types for Cloud SQL Enterprise Plus edition, seeMachine types for Cloud SQL Enterprise Plus edition instances.
REST
The following command upgrades your instance to Cloud SQL Enterprise edition and triggers a restart operation.
Before using any of the request data, make the following replacements:
- PROJECT_ID: the project ID of the instance that you want to upgrade.
- INSTANCE_ID: the instance ID of the instance that you want to upgrade.
- MACHINE_TYPE: the machine type of the instance that you want to upgrade to. For more information about machine types for Cloud SQL Enterprise Plus edition, seeMachine types for Cloud SQL Enterprise Plus edition instances.
Optional: you can enabledata cache by setting thedataCacheEnabled
parameter astrue
.
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Request JSON body:
{ "settings": { "tier": "MACHINE_TYPE", "edition": "ENTERPRISE_PLUS", "dataCacheConfig": { "dataCacheEnabled": true }, }}
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/instances/INSTANCE_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
. 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/instances/INSTANCE_ID" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "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", "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
The following command upgrades your instance to Cloud SQL Enterprise edition and triggers a restart operation.
Before using any of the request data, make the following replacements:
- PROJECT_ID: the project ID of the instance that you want to upgrade.
- INSTANCE_ID: the instance ID of the instance that you want to upgrade.
- MACHINE_TYPE: the machine type of the instance that you want to upgrade to. For more information about machine types for Cloud SQL Enterprise Plus edition, seeMachine types for Cloud SQL Enterprise Plus edition instances.
Optional: you can enabledata cache by setting thedataCacheEnabled
parameter astrue
.
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Request JSON body:
{ "settings": { "tier": "MACHINE_TYPE", "edition": "ENTERPRISE_PLUS", "dataCacheConfig": { "dataCacheEnabled": true }, }}
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/v1beta4/projects/PROJECT_ID/instances/INSTANCE_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
. 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/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID"}
Storage location of transaction logs used for PITR
If your Cloud SQL Enterprise edition instance stores transaction logs for PITR ondisk, then starting the upgrade process toCloud SQL Enterprise Plus edition switches the storage location of these logs to Cloud Storage.
The following conditions apply to the location switch process:
- The process takes approximately the duration of the
transactionLogRetentionDays
PITR configuration setting to complete the switch to Cloud Storage. - During the switch to Cloud Storage, we recommend thatyou don't modifythe
transactionLogRetentionDays
PITR configuration setting. Even if you do increasetransactionLogRetentionDays
,write-ahead logs won't be retained on disk any longer than thedefault of 7 days for an Cloud SQL Enterprise edition instance.
Cloud SQL Enterprise Plus edition backup and log storage defaults
After the upgrade to Cloud SQL Enterprise Plus edition completes, the default transaction logretention period for all upgraded instances is increased to 14 days.For this increase, and any other increase that you configure forthe transaction log retention period, it takes up to thenew and increased value to reach the full retention window of PITR.For example, if the old value for transaction log retention days is 7and the new value is increased to 14, then the window for PITRfor the first 7 days after the upgrade is only 7 days. On the 8th day,the window for PITR becomes 8 days, on the 9th day it becomes 9 days,until the retention window is finally increased to 14 days on the14th day.
In addition,the default number of automated backups is increased from 8 to 15.
If you upgrade to Cloud SQL Enterprise Plus edition after doing a major version upgrade,then you won't be able to perform PITR to a point-in-time that occurs priorto the major version upgrade. This limitation applies even if your retentionperiod covers that time period.You can restore your instance to a point-in-time after you startedthe major version upgrade.
Change to Cloud SQL Enterprise edition
Note: Cloud SQL disables the data cache automatically when you change aninstance from Cloud SQL Enterprise Plus edition to Cloud SQL Enterprise edition.Console
In the Google Cloud console, go to theCloud SQL Instances page.
- To open theOverview page of an instance, click the instance name.
- ClickEdit.
- In theChoose a Cloud SQL edition section, clickSwitch to Enterprise.
- In theSwitch to Enterprise panel, enter your instance ID and then clickSwitch edition.
Alternatively, you can also change to Cloud SQL Enterprise edition by clickingSwitch to Enterprise inConfiguration sectionof the instanceOverview page.
gcloud
The following code sample shows how to change your instance to Cloud SQL Enterprise edition:
gcloudsqlinstancespatchINSTANCE_ID\--edition=enterprise\--tier=MACHINE_TYPE\--project=PROJECT_ID
- PROJECT_ID: the project ID of the instance.
- INSTANCE_ID: name of the instance.
- MACHINE_TYPE: the machine type of the instance that you want to switch to. For more information about machine types for Cloud SQL Enterprise edition, seeMachine types for Cloud SQL Enterprise edition instances.
REST
The following command changes your instance to Cloud SQL Enterprise edition and triggers a restart operation.
Before using any of the request data, make the following replacements:
- PROJECT_ID: the project ID of the instance.
- INSTANCE_ID: the instance ID of the instance.
- MACHINE_TYPE: the machine type of the instance that you want to switch to. For more information about machine types for Cloud SQL Enterprise edition, seeMachine types for Cloud SQL Enterprise edition instances.
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Request JSON body:
{ "settings": { "tier": "MACHINE_TYPE", "edition": "ENTERPRISE" }}
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/instances/INSTANCE_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
. 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/instances/INSTANCE_ID" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "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", "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
The following command changes your instance to Cloud SQL Enterprise edition and triggers a restart operation.
Before using any of the request data, make the following replacements:
- PROJECT_ID: the project ID of the instance.
- INSTANCE_ID: the instance ID of the instance.
- MACHINE_TYPE: the machine type of the instance that you want to switch to. For more information about machine types for Cloud SQL Enterprise edition, seeMachine types for Cloud SQL Enterprise edition instances.
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Request JSON body:
{ "settings": { "tier": "MACHINE_TYPE", "edition": "ENTERPRISE" }}
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/v1beta4/projects/PROJECT_ID/instances/INSTANCE_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
. 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/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID"}
Cloud SQL Enterprise edition backup and log storage defaults
Changing to Cloud SQL Enterprise edition doesn't switch the storage locationof the transaction logs used for PITR. If your Cloud SQL Enterprise Plus edition instancestores its transaction logs for PITR in Cloud Storage, then the logs remain inCloud Storage. However, instead of storing 14 days of transaction logs forPITR by default, the default is changed to 7 days. Backup configurationis not changed.
Generate the write endpoint automatically
Awrite endpoint is a global domain name service (DNS) name that resolves tothe IP address of the current primary Cloud SQL instance automatically.This endpoint redirects incoming connections to the new primary instanceautomatically in case of a replicafailover operation.You can use the write endpoint in a SQLconnection string instead of an IP address. By using a write endpoint, you canavoid having to make application connection changes when a region outage occurs.
If you upgrade your instance that has a private IP address on the new networkarchitecture to Cloud SQL Enterprise Plus edition, and youenable the DNS API for yourGoogle Cloud project, then Cloud SQL generates the write endpointautomatically for you. However, theserver certificate that's associated withthe instance won't have the write endpoint (global DNS name) added to it. Therefore, if you want toverify the DNS name, then you mustrotate the certificate. After the rotation of this certificateis complete, Cloud SQL adds the DNS name to the certificate. You canuse the DNS name for server identity verification.
What's next
- Learn more aboutCloud SQL Enterprise Plus edition.
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-07-14 UTC.