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 MySQL 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 MySQL version 8.0.31 or later.
If your instance is on an earlier version of MySQL, then you must upgrade your instanceto MySQL 8.0.31 or later. For more information, seeUpgrade the database major version in-placeandUpgrade the database minor version.
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 binary logs used for PITR on disk, then theupgrade process to Cloud SQL Enterprise Plus edition switches the storage location of thebinary 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 binary 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
--no-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.
dataCacheEnabled parameter asfalse.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.
dataCacheEnabled parameter asfalse.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
transactionLogRetentionDaysPITR configuration setting to complete the switch to Cloud Storage. - If you have values set for the
expire_logs_daysorbinlog_expire_logs_secondsflag on your instance, then thosevalues are preserved. - During the switch to Cloud Storage, you can't modify the valuesfor the
expire_logs_daysorbinlog_expire_logs_secondsflags on your instance. - During the switch to Cloud Storage, we recommend thatyou don't modifythe
transactionLogRetentionDaysPITR configuration setting. Even if you do increasetransactionLogRetentionDays,binary logs won't be retained on disk any longer than thedefault of 7 days for an Cloud SQL Enterprise edition instance. - While the switch isin progress, Cloud SQL only retainslogs on disk for the minimum value of one of the following:
- the
transactionLogRetentionDaysPITR configuration setting from beforethe switch, 7 days by default - the
expire_logs_daysorbinlog_expire_logs_secondsflags manually set on your instance
- the
- After the switch, Cloud SQL retains the same amount ofbinary logson disk that you had before the switchunless you have set the
expire_logs_daysorbinlog_expire_logs_secondsflags on your instance. If you have set these flags, thenCloud SQL retains binarylogs on disk based on the minimum value of thetransactionLogRetentionDaysconfiguration setting or the value of the flags.
Cloud SQL Enterprise Plus edition backup and log storage defaults
After the switch to Cloud Storage completes for an instance,Cloud SQL still retains copies ofbinary logs on disk for replication purposes.Storing binary logs on disk can be usefulif you want to browse binary logs with themysqlbinlog utility.If you configured theexpire_logs_days andbinlog_expire_logs_seconds flags on your instance before the upgrade,then the configured values remain intact.
After the switch, since the binary logs that are used to perform PITRare now stored in Cloud Storage, ensure that the values of the flagsreflect the retention of transaction logs on disk that you expect.Cloud SQL only retainslogs on disk for the minimum value of one of the following:
- the
transactionLogRetentionDaysPITR configuration setting before switch, 7 days by default - the
expire_logs_daysorbinlog_expire_logs_secondsflags manually set on your instance
If you want to save disk space, then after the upgrade has completed,configure the value of theexpire_logs_days orbinlog_expire_logs_secondsflag to the equivalent of 1 day so you can reduce your allocated disk size and diskstorage costs. For more information about transaction log storage and PITR,seeLog storage for PITR.
expire_logs_days orbinlog_expire_logs_secondsflag slowly. For example, reduce the value by the equivalentof 1 day each day over several days to avoid purging the binary logsall at once, to prevent any performance impacts.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 youenable the DNS API for yourGoogle Cloud project and upgrade your instance that has a private IP address on the new networkarchitecture to Cloud SQL Enterprise Plus edition, then Cloud SQL generates the write endpointautomatically for you, and adds the DNS name to theserver certificateassociated with the instance. You can use the DNS name for server identityverification.
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-12-17 UTC.