Stay organized with collections Save and categorize content based on your preferences.
This page describes how to configure database flags for Cloud SQL, and lists the flags that you can set for your instance. You use database flags for many operations, including adjusting MySQL parameters, adjusting options, and configuring and tuning an instance.
Note: Some database flag settings can affect instance availability or stability, and remove the instance from the Cloud SQL SLA. For information about these flags, see Operational Guidelines.In some cases, setting one flag may require that you set another flag to fully enable the functionality you want to use. For example, to enable slow query logging, you must set both the slow_query_log
flag to on
and the log_output
flag to FILE
to make your logs available using the Google Cloud console Logs Explorer.
When you set, remove, or modify a flag for a database instance, the database might be restarted. The flag value is then persisted for the instance until you remove it. If the instance is the source of a replica, and the instance is restarted, the replica is also restarted to align with the current configuration of the instance.
Configure database flagsThe following sections cover common flag management tasks.
Set a database flag ConsoleEdit the instance:
gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2
This command will overwrite all database flags previously set. To keep those and add new ones, include the values for all flags you want set on the instance; any flag not specifically included is set to its default value. For flags that don't take a value, specify the flag name followed by an equals sign ("=").
For example, to set the general_log
, skip_show_database
, and wait_timeout
flags, you can use the following command:
gcloud sql instances patch INSTANCE_NAME \ --database-flags=general_log=on,skip_show_database=on,wait_timeout=200000Terraform
To add database flags, use a Terraform resource.
Apply the changesTo apply your Terraform configuration in a Google Cloud project, complete the steps in the following sections.
Prepare Cloud ShellSet the default Google Cloud project where you want to apply your Terraform configurations.
You only need to run this command once per project, and you can run it in any directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Environment variables are overridden if you set explicit values in the Terraform configuration file.
Each Terraform configuration file must have its own directory (also called a root module).
.tf
extension—for example main.tf
. In this tutorial, the file is referred to as main.tf
.
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
If you are following a tutorial, you can copy the sample code in each section or step.
Copy the sample code into the newly created main.tf
.
Optionally, copy the code from GitHub. This is recommended when the Terraform snippet is part of an end-to-end solution.
terraform init
Optionally, to use the latest Google provider version, include the -upgrade
option:
terraform init -upgrade
terraform plan
Make corrections to the configuration as necessary.
yes
at the prompt:
terraform apply
Wait until Terraform displays the "Apply complete!" message.
To delete your changes, do the following:
deletion_protection
argument to false
.
deletion_protection = "false"
yes
at the prompt:
terraform apply
Remove resources previously applied with your Terraform configuration by running the following command and entering yes
at the prompt:
terraform destroy
To set a flag for an existing database:
Before using any of the request data, make the following replacements:
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Request JSON body:
{ "settings": { "databaseFlags": [ { "name": "flag_name", "value": "flag_value" } ] } }
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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X PATCH \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-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"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.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:
Response{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
For example, to set the general_log
flag for an existing database use:
Before using any of the request data, make the following replacements:
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Request JSON body:
{ "settings": { "databaseFlags": [ { "name": "general_log", "value": "on" } ] } }
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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X PATCH \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-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"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.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:
Response{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
If there are existing flags configured for the database, modify the previous command to include them. The PATCH
command overwrites the existing flags with the ones specified in the request.
To set a flag for an existing database:
Before using any of the request data, make the following replacements:
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Request JSON body:
{ "settings": { "databaseFlags": [ { "name": "flag_name", "value": "flag_value" } ] } }
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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X PATCH \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-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/instances/instance-id"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.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/instances/instance-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/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
For example, to set the general_log
flag for an existing database use:
Before using any of the request data, make the following replacements:
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Request JSON body:
{ "settings": { "databaseFlags": [ { "name": "general_log", "value": "on" } ] } }
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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X PATCH \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-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/instances/instance-id"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.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/instances/instance-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/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
If there are existing flags configured for the database, modify the previous command to include them. The PATCH
command overwrites the existing flags with the ones specified in the request.
Clear all flags to their default values on an instance:
gcloud sql instances patch INSTANCE_NAME \ --clear-database-flags
You are prompted to confirm that the instance will be restarted.
REST v1To clear all flags for an existing instance:
Before using any of the request data, make the following replacements:
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Request JSON body:
{ "settings": { "databaseFlags": [] } }
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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X PATCH \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-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"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.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:
Response{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "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
To clear all flags for an existing instance:
Before using any of the request data, make the following replacements:
HTTP method and URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Request JSON body:
{ "settings": { "databaseFlags": [] } }
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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.json
, and execute the following command:
curl -X PATCH \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-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/instances/instance-id"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud auth list
.
Save the request body in a file named request.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/instances/instance-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/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }View current values of database flags
To view all current values of the MySQL system variables, log into your instance with the
mysql
client and enter the following statement:
SHOW VARIABLES;
Note that you can change the value only for supported flags (as listed below).
Determine which database flags have been set for an instanceTo see which flags have been set for a Cloud SQL instance:
ConsoleThe database flags that have been set are listed under the Database flags section.
Get the instance state:
gcloud sql instances describe INSTANCE_NAME
In the output, database flags are listed under the settings
as the collection databaseFlags
. For more information about the representation of the flags in the output, see Instances Resource Representation.
To list flags configured for an instance:
Before using any of the request data, make the following replacements:
HTTP method and URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Execute the following command:
curl -X GET \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud 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/instances/instance-id" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
Response{ "settings": { "authorizedGaeApplications": [], "tier": "machine-type", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "privateNetwork": "projects/project-id/global/networks/default", "authorizedNetworks": [], "ipv4Enabled": false }, "locationPreference": { "zone": "zone", "kind": "sql#locationPreference" }, "databaseFlags": [ { "name": "general_log", "value": "on" } ], "dataDiskType": "PD_SSD", "maintenanceWindow": { "kind": "sql#maintenanceWindow", "hour": 0, "day": 0 }, "backupConfiguration": { "startTime": "03:00", "kind": "sql#backupConfiguration", "enabled": true, "binaryLogEnabled": true }, "settingsVersion": "54", "storageAutoResizeLimit": "0", "storageAutoResize": true, "dataDiskSizeGb": "10" } }
In the output, look for the databaseFlags
field.
To list flags configured for an instance:
Before using any of the request data, make the following replacements:
HTTP method and URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-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 running gcloud init
or gcloud auth login
, or by using Cloud Shell, which automatically logs you into the gcloud
CLI . You can check the currently active account by running gcloud auth list
.
Execute the following command:
curl -X GET \PowerShell (Windows) Note: The following command assumes that you have logged in to the
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id"
gcloud
CLI with your user account by running gcloud init
or gcloud auth login
. You can check the currently active account by running gcloud 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/instances/instance-id" | Select-Object -Expand Content
You should receive a JSON response similar to the following:
Response{ "settings": { "authorizedGaeApplications": [], "tier": "machine-type", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "privateNetwork": "projects/project-id/global/networks/default", "authorizedNetworks": [], "ipv4Enabled": false }, "locationPreference": { "zone": "zone", "kind": "sql#locationPreference" }, "databaseFlags": [ { "name": "general_log", "value": "on" } ], "dataDiskType": "PD_SSD", "maintenanceWindow": { "kind": "sql#maintenanceWindow", "hour": 0, "day": 0 }, "backupConfiguration": { "startTime": "03:00", "kind": "sql#backupConfiguration", "enabled": true, "binaryLogEnabled": true }, "settingsVersion": "54", "storageAutoResizeLimit": "0", "storageAutoResize": true, "dataDiskSizeGb": "10" } }
In the output, look for the databaseFlags
field.
Cloud SQL adjusts certain system flags depending on the instance machine type.
The flags supported in Cloud SQL are the most commonly requested flags for MySQL. Flags not mentioned below are not supported.
For a given flag, Cloud SQL might support a different value or range from the corresponding MySQL parameter or option.
The flags apply to all versions of MySQL supported by Cloud SQL except where noted.
A | B | C | D | E | F | G | H | I | L | M | N | O | P | Q | R | S | T | U | W
For more information about this flag, see the Tips section.
Cloud SQL Flag Typeboolean
on
| off
off
boolean
on
| off
on
No auto_increment_increment integer
1
... 65535
No auto_increment_offset integer
1
... 65535
No automatic_sp_privileges boolean
on
| off
on
No back_log integer
1
... 65535
max_connections
max_connections
flag enables the permitted backlog to adjust to the maximum permitted number of simultaneous client connections. Yes binlog_cache_size integer
4096
... 9223372036854775807
No binlog_expire_logs_seconds integer
0
or 86400 (1 day)
... 4294967295 (max value)
See the Tips section for more information about this flag.
No binlog_group_commit_sync_delay
0 ... 1000000
Supported in MySQL 5.7 and later
Default is 0.
No binlog_group_commit_sync_no_delay_count
0 ... 1000000
Supported in MySQL 5.7 and later
Default is 0.
No binlog_gtid_simple_recoveryboolean
on
| off
on
Yes binlog_order_commits boolean
on
| off
on
See the Tips section for more information about this flag.
No binlog_row_imageenumeration
full
(default), minimal
, or noblob
No binlog_row_metadata enumeration
full
or minimal
(default) No binlog_row_value_options string
PARTIAL_JSON
No binlog_rows_query_log_events boolean
on
| off
off
No binlog_stmt_cache_size 4096
... 9223372036854775807
No binlog_transaction_dependency_history_size integer
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
No binlog_transaction_dependency_trackingenumeration
For information about how to use this flag and its acceptable values, see Configuring parallel replication. This flag is not supported in MySQL 8.4.
No block_encryption_modestring
aes-keylen-mode
aes-128-ECB
Note: This flag takes a value in aes-keylen-mode
format, where keylen
is the key length (in bits) and mode
is the encryption mode. The value isn't case-sensitive.
Allowed keylen
values are 128
, 192
, and 256
.
Allowed mode
values are ECB
, CBC
, CFB1
, CFB8
, CFB128
, and OFB
.
integer
0
... 4294967295
8388608
No collation_connection string
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No collation_serverstring
collation_server
flag should always be set to a value that is compatible with the character_set_server
. No character_set_client string
default:
utf8
utf8mb4
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No character_set_connectionstring
utf8
utf8mb4
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No character_set_resultsstring
utf8
utf8mb4
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No character_set_serverstring
boolean
on
| off
off
No cloudsql_allow_analyze_table boolean
on
| off
off
boolean
on
| off
off
boolean
on
| off
off
string
""
, dql
, dml
, ddl
, dcl
, show
, call
, create_udf
, drop_function
, create_procedure
, create_function
, drop_procedure
, alter_procedure
, alter_function
, create_trigger
, drop_trigger
, create_event
, alter_event
, drop_event
, create_db
, drop_db
, alter_db
, create_user
, drop_user
, rename_user
, alter_user
, create_table
, create_index
, alter_table
, drop_table
, drop_index
, create_view
, drop_view
, rename_table
, update
, insert
, insert_select
, delete
, truncate
, replace
, replace_select
, delete_multi
, update_multi
, load
, select
, call_procedure
, connect
, disconnect
, grant
, revoke
, revoke_all
, show_triggers
, show_create_proc
, show_create_func
, show_procedure_code
, show_function_code
, show_create_event
, show_events
, show_create_trigger
, show_grants
, show_binlog_events
, show_relaylog_events
default: create_user
, alter_user
, grant
, and update
string
max_string_length: 2048
integer
0...5000
milliseconds
500
milliseconds No cloudsql_mysql_audit_max_query_length integer
-1...1073741824
-1
No cloudsql_vector boolean
on
| off
off
integer
1073741824...innodb_buffer_pool_size/2
1073741824
in bytes
enumeration
NO_CHAIN
(default), CHAIN
, or RELEASE
No concurrent_insert enumeration
NEVER
, AUTO
(default), or ALWAYS
No connect_timeout integer
2
... 31536000
10
No cte_max_recursion_depth integer
0
... 4294967295
1000
No default_authentication_plugin string
mysql_native_password|caching_sha2_password
integer
0...65535
0
string
+00:00
is the timezone offset for London (which is in the UTC timezone), and Europe/London
is its timezone name.
You use values to specify timezone offsets, from -12:59
to +13:00
. Leading zeros are required.
When using timezone names, automatic adjustment to daylight saving time is supported. When using timezone offsets, it isn't supported. See a list of timezone names that Cloud SQL for MySQL supports. You must update this flag manually, on the primary instance and on all read replicas, to account for it.
To set the timezone without causing a restart of the Cloud SQL instance, use the set time_zone=timezone_offset
or timezone_name
command with the init_connect
flag.
integer
0
... 7
0
No delay_key_write enumeration
OFF
, ON
(default), or ALL
No disconnect_on_expired_password boolean
on
| off
on
integer
0
... 30
4
No end_markers_in_json boolean
on
| off
off
No eq_range_index_dive_limit integer
0
... 2147483647
No event_scheduler boolean
on
| off
If you are using the Event Scheduler, configure your instance with an activation policy of ALWAYS to ensure that scheduled events run.
See the Tips section for more information about this flag.
No expire_logs_daysinteger
0
... 99
Note: This flag is not supported in MySQL 8.4. Use binlog_expire_logs_seconds
instead. See the Tips section for more information about this flag.
boolean
on
| off
Note: The flag only requires a restart for MySQL 5.6.x or earlier.
No flush_time integer
0
... 31536000
0
No foreign_key_checks boolean
on
| off
on
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No ft_max_word_leninteger
10
... 252
Yes ft_min_word_len integer
1
... 16
Yes ft_query_expansion_limit integer
0
... 1000
Yes ft_stopword_file string
boolean
on
| off
See the Tips section for more information about general logs.
No generated_random_password_lengthinteger
5-255
20
integer
4
... 17179869184
No gtid_executed_compression_period integer
0
... 4294967295
1000
0
No histogram_generation_max_mem_size integer
1000000
... 4294967295
20000000
No init_connect string
No innodb_adaptive_hash_index boolean
on
| off
No innodb_adaptive_hash_index_parts integer
1
... 512
Yes innodb_adaptive_max_sleep_delay integer
0
... 1000000
No innodb_autoextend_increment integer
1
... 1000
No innodb_autoinc_lock_mode integer
0
... 2
Yes innodb_buffer_pool_chunk_size integer
1048576
... (innodb_buffer_pool_size/innodb_buffer_pool_instances)
This flag value is dependent on innodb_buffer_pool_size
and innodb_buffer_pool_instances
. MySQL can auto-tune the value of innodb_buffer_pool_chunk_size
based on these two flags.
integer
1
... 100
25
No innodb_buffer_pool_dump_at_shutdown boolean
on
| off
No innodb_buffer_pool_dump_now boolean
on
| off
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No innodb_buffer_pool_instancesinteger
1
... 64
Yes innodb_buffer_pool_load_abort boolean
on
| off
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No innodb_buffer_pool_load_at_startupboolean
on
| off
Yes innodb_buffer_pool_load_now boolean
on
| off
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No innodb_buffer_pool_sizeinteger
Setting this flag for MySQL 5.6 requires a restart. See the Tips section for more information about this flag.
No innodb_change_buffer_max_sizeinteger
0
... 50
No innodb_change_buffering string
Options: none
, inserts
, deletes
, changes
, purges
, all
.
string
Options: crc32
, strict_crc32
, innodb
, strict_innod
, none
, strict_none
.
boolean
This flag is available only for instances with Cloud SQL Enterprise Plus edition. For more information about this flag, see the Tips section.
Yes innodb_cmp_per_index_enabledboolean
on
| off
No innodb_commit_concurrency integer
0
... 1000
Yes innodb_compression_failure_threshold_pct integer
0
... 100
No innodb_compression_level integer
0
... 9
No innodb_compression_pad_pct_max integer
0
... 75
No innodb_concurrency_tickets integer
1
... 4294967295
No innodb_deadlock_detect boolean
on
| off
Supported in MySQL 5.7 and later.
Default: on
boolean
on
| off
No innodb_doublewrite_batch_size integer
0
... 256
0
Yes innodb_doublewrite_files integer
2
... 128
Yes innodb_doublewrite_pages integer
4
... 512
64
Yes innodb_file_per_table boolean
on
| off
See the Tips section for more information about this flag.
No innodb_fill_factorinteger
10
... 100
No innodb_flush_log_at_timeout double
0.0001
... 2700
1
Supported in MySQL 5.7 and later.
See the Tips section for more information about this flag.
No innodb_flush_log_at_trx_commitinteger
1, 2
1
If you promote a replica with this flag enabled, the flag is automatically removed causing the promoted replica to have full durability by default. To use this flag with a promoted replica, you can update the flag to the replica after promotion.
Note: If you change the default value for theinnodb_flush_log_at_trx_commit
flag on an HA-enabled instance, then the instance loses SLA coverage because durability might decrease.
See the Tips section for more information about this flag.
No innodb_flush_neighborsenumeration
0
... 2
0
2
boolean
on
| off
No innodb_ft_aux_table string
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. Yes innodb_ft_cache_sizeinteger
1600000
... 80000000
Yes innodb_ft_enable_diag_print boolean
on
| off
No innodb_ft_enable_stopword boolean
on
| off
No innodb_ft_max_token_size integer
10
... 252
Yes innodb_ft_min_token_size integer
0
... 16
Yes innodb_ft_num_word_optimize integer
1000
... 10000
No innodb_ft_result_cache_limit integer
1000000
... 4294967295
No innodb_ft_server_stopword_table string
No innodb_ft_sort_pll_degree integer
1
... 32
Yes innodb_ft_total_cache_size integer
32000000
... 1600000000
Yes innodb_ft_user_stopword_table string
No innodb_io_capacity integer
100
... 100000
5000
To learn more about configuring the disk performance, see the E2 VMs table in Configure disks to meet performance requirements.
No innodb_io_capacity_maxinteger
100
... 100000
10000
To learn more about configuring the disk performance, see the E2 VMs table in Configure disks to meet performance requirements.
No innodb_large_prefixboolean
on
| off
Supported only in MySQL 5.6.
No innodb_lock_wait_timeoutinteger
1
... 1073741824
No innodb_log_buffer_size integer
262144
... 4294967295
Yes innodb_log_checksums boolean
on
| off
on
No innodb_log_file_size integer
1048576
... 274877906944
4194304
... 274877906944
Yes innodb_log_spin_cpu_abs_lwm integer
0
... 4294967295
80
No innodb_log_spin_cpu_pct_hwm integer
0
... 100
50
No innodb_log_wait_for_flush_spin_hwm integer
0
... 4294967295
400
No innodb_log_write_ahead_size integer
512
... 65536
8192
No innodb_lru_scan_depth integer
100
... 9223372036854775807
No innodb_max_dirty_pages_pct float
0
... 99.99
90
No innodb_max_dirty_pages_pct_lwm float
0
... 99.99
10
No innodb_max_purge_lag integer
0
... 4294967295
0
No innodb_max_undo_log_size integer
10485760
... 9223372036854775807
1073741824
No innodb_max_purge_lag_delay integer
0
... 10000000
0
No innodb_monitor_disable string
No innodb_monitor_enable string
No innodb_monitor_reset string
counter
, module
, pattern
, all
No innodb_monitor_reset_all enumeration
counter
, module
, pattern
, all
No innodb_old_blocks_pct integer
5
... 95
No innodb_old_blocks_time integer
0
... 4294967295
No innodb_online_alter_log_max_size integer
65536
... 9223372036854775807
No innodb_open_files integer
100
... 2147483647
2000
4000
≥ 8.0.28
: No
8.0.27
: Yes innodb_optimize_fulltext_only boolean
on
| off
No innodb_page_cleaners integer
1
... 64
4
. For MySQL 8.4, the default is equal to the value of configured for the innodb_buffer_pool_instances
flag. Yes innodb_parallel_read_threads integer
1
... 256
4
No innodb_print_all_deadlocks boolean
on
| off
off
No innodb_print_ddl_logs boolean
on
| off
No innodb_purge_batch_size integer
1
... 5000
300
No innodb_purge_rseg_truncate_frequency integer
1
... 128
128
No innodb_purge_threads integer
1
... 32
1
4
boolean
on
| off
No innodb_read_ahead_threshold integer
0
... 64
No innodb_read_io_threads integer
1
... 64
Yes innodb_redo_log_capacity integer
8388608
(8 MB) ... 137438953472
(128 GB) MySQL 8.0.34 and later: 8388608
(8 MB) ... 549755813888
(512 GB)
For more information about this flag, see the Tips section.
No innodb_replication_delayinteger
0
... 4294967295
No innodb_rollback_on_timeout boolean
on
| off
Yes innodb_rollback_segments integer
1
... 128
No innodb_segment_reserve_factor float
.03
... 40
12.5
No innodb_sort_buffer_size integer
65536
... 67108864
Yes innodb_spin_wait_delay integer
0
... 1000000
0
... 1000
6
No innodb_stats_auto_recalc boolean
on
| off
No innodb_stats_include_delete_marked boolean
on
| off
off
No innodb_stats_method enumeration
nulls_equal
| nulls_unequal
| nulls_ignored
No innodb_stats_on_metadata boolean
on
| off
No innodb_stats_persistent boolean
on
| off
No innodb_stats_persistent_sample_pages integer
1
... 9223372036854775807
No innodb_stats_sample_pages integer
1
... 9223372036854775807
No innodb_stats_transient_sample_pages integer
1
... 9223372036854775807
No innodb_status_output boolean
on
| off
No innodb_status_output_locks boolean
on
| off
No innodb_strict_mode boolean
on
| off
No innodb_sync_array_size 1 ... 1024
Default is 1.
Yes innodb_sync_spin_loopsinteger
0
... 4294967295
boolean
on
| off
on
No innodb_thread_concurrency integer
0
... 1000
No innodb_thread_sleep_delay integer
0
... 1000000
No innodb_undo_log_truncate boolean
on
| off
on
No innodb_use_native_aio boolean
on
| off
on
Yes innodb_write_io_threads integer
1
... 64
Yes interactive_timeout integer
1
... 31536000
No internal_tmp_disk_storage_engine enumeration
INNODB
| MYISAM
INNODB
enumeration
MEMORY
, TempTable
integer
128
... 9223372036854775807
No keep_files_on_create boolean
on
| off
off
No key_buffer_size integer
4096
... 4294967295
8388608
No key_cache_age_threshold integer
100
... 9223372036854775807
300
No key_cache_block_size integer
512
... 16384
1024
No key_cache_division_limit integer
1
... 100
100
No lc_times_names string
en_US
| cs_CZ
| da_DK
| nl_NL
| et_EE
| fr_FR
| de_DE
| el_GR
| hu_HU
| it_IT
| ja_JP
| ko_KR
| no_NO
| nb_NO
| pl_PL
| pt_PT
| ro_RO
| ru_RU
| sr_RS
| sk_SK
| es_ES
| sv_SE
| uk_UA
en_US
No local_infile boolean
on
| off
No lock_wait_timeout integer
1
... 31536000
No log_bin_trust_function_creators boolean
on
| off
No log_output set
FILE
| TABLE
| NONE
No log_error_verbosity integer
1
... 3
3
2
No log_queries_not_using_indexes boolean
on
| off
No log_slow_admin_statements boolean
on
| off
off
No log_slow_extra boolean
on
| off
off
No log_slow_replica_statements boolean
on
| off
Default: off
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use the log_slow_slave_statements
flag. For more information, see Aliased flags. No log_slow_slave_statements boolean
on
| off
Default: off
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use the log_slow_replica_statements
flag. For more information, see Aliased flags. No log_throttle_queries_not_using_indexes integer
0
... 9223372036854775807
No log_timestamps string
"UTC | SYSTEM"
UTC
No long_query_time float
0
... 30000000
Cloud SQL provides the ability to set this flag to less than 1 if needed.
If the log_queries_not_using_indexes
flag is also enabled, you may see queries with less than the time specified here.
integer
0
or 1
0
If you use the default value of 0
for this flag, table and database names are case sensitive. When set to 1
, table and database names are case insensitive.
For MySQL 5.7 instances, you can change the value of this flag at any time. If you do, then make sure that you understand how the change affects your existing tables and databases.
For MySQL 8.0 and later instances, you can set the value of this flag to a desired value only while an instance is being created. After you set this value, you can't change it. Also, for an existing instance, you can't change the value of this flag.
When creating read replicas for MySQL 5.7, MySQL 8.0, or MySQL 8.4 instances, the replica inherits this flag value from the primary.
Yes mandatory_rolesstring
role name
empty string
boolean
on
| off
Default: off
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use the source_verify_checksum
flag. For more information, see Aliased flags. No max_allowed_packet integer
16384
... 1073741824
This value must be a multiple of 1024, if sql_mode=TRADITIONAL or sql_mode=STRICT_ALL_TABLES.
No max_binlog_cache_sizeinteger
4096
... 4294967296
4294967296
No max_binlog_size integer
4096
... 1073741824
No max_binlog_stmt_cache_size integer
4096
... 4294967296
4294967296
No max_connect_errors integer
1
... 9223372036854775807
100
No max_connections integer
1
... 100000
No max_digest_length integer
0
... 1048576
Yes max_error_count integer
0
... 65535
64
1024
No max_execution_time integer
0
... 9223372036854775807
No max_heap_table_size integer
16384
... 67108864
See the Tips section for more information about this flag.
No max_join_sizeinteger
16
... 9223372036854775807
No max_length_for_sort_data integer
4
... 8388608
No max_points_in_geometry integer
3
... 1048576
No max_prepared_stmt_count integer
0
... 1048576
No max_seeks_for_key integer
1
... 9223372036854775807
No max_sort_length integer
4
... 8388608
No max_sp_recursion_depth integer
0
... 255
No max_user_connections integer
0
... 4294967295
No max_write_lock_count integer
1
... 9223372036854775807
No min_examined_row_limit integer
0
... 4294967295
0
No myisam_data_pointer_size integer
2...7
6
No myisam_max_sort_file_size integer
0...9223372036853727232
9223372036853727232
No myisam_mmap_size integer
7...9223372036854775807
9223372036854775807
Yes myisam_sort_buffer_size integer
4096...4294967295
8388608
No myisam_stats_method string
"nulls_unequal, nulls_equal, nulls_ignored"
nulls_unequal
No myisam_use_mmap boolean
on
| off
off
No mysql_native_password_proxy_users boolean
on
| off
off
No net_buffer_length integer
1024
... 1048576
16384
No net_read_timeout integer
30
... 4294967295
No net_retry_count integer
10
... 4294967295
No net_write_timeout integer
60
... 4294967295
No ngram_token_size integer
1
... 10
2
Yes optimizer_prune_level integer
0
... 1
No optimizer_search_depth integer
0
... 62
No optimizer_switch multi-value repeated string
See the Tips section for more information about multi-value flags.
No optimizer_tracemulti-value repeated string
enabled=on
, enabled=off
, one_line=on
, one_line=off
See the Tips section for more information about multi-value flags.
No optimizer_trace_featuresmulti-value repeated string
See the Tips section for more information about multi-value flags.
No optimizer_trace_max_mem_sizeinteger
0
... 9223372036854775807
No optimizer_trace_offset integer
-9223372036854775808
... 9223372036854775807
No parser_max_mem_size integer
10000000
... 9223372036854775807
No password_history integer
0-4294967295
0
boolean
on
| off
off
integer
0-4294967295
0
boolean
on
| off
default: off
, for MySQL 5.6, 5.7, 8.0, and 8.4 if instance RAM is less than 15 GB.
default: on
, for MySQL 8.0 and later if instance RAM is greater than 15 GB
See Tips section for more information about performance_schema flags.
Yes performance_schema_accounts_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_digests_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_error_sizeinteger
0
... 1048576
Yes performance_schema_events_stages_history_long_size integer
-1
... 1048576
Yes performance_schema_events_stages_history_size integer
-1
... 1024
See Tips section for more information about performance_schema flags.
Yes performance_schema_events_statements_history_long_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_events_statements_history_sizeinteger
-1
... 1024
See Tips section for more information about performance_schema flags.
Yes performance_schema_events_transactions_history_long_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_events_transactions_history_sizeinteger
-1
... 1024
See Tips section for more information about performance_schema flags.
Yes performance_schema_events_waits_history_long_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_events_waits_history_sizeinteger
-1
... 1024
See Tips section for more information about performance_schema flags.
Yes performance_schema_hosts_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_cond_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_cond_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_digest_lengthinteger
0
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_digest_sample_ageinteger
0
... 1048576
60
No performance_schema_max_file_classes integer
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_file_handlesinteger
0
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_file_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_index_statinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_memory_classesinteger
0
... 1024
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_metadata_locksinteger
-1
... 104857600
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_mutex_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_mutex_instancesinteger
-1
... 104857600
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_prepared_statements_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_program_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_rwlock_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_rwlock_instancesinteger
-1
... 104857600
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_socket_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_socket_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_sql_text_lengthinteger
0
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_stage_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_statement_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_statement_stackinteger
1
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_table_handlesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_table_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_table_lock_statinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_thread_classesinteger
0
... 256
See Tips section for more information about performance_schema flags.
Yes performance_schema_max_thread_instancesinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_session_connect_attrs_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_setup_actors_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_setup_objects_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes performance_schema_users_sizeinteger
-1
... 1048576
See Tips section for more information about performance_schema flags.
Yes preload_buffer_sizeinteger
1024
... 1073741824
32768
No query_alloc_block_size integer
1024
... 4294967295
No query_cache_limit integer
0
... 223338299392
This flag is not available for MySQL 8.0 and later as the query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0.
No query_cache_min_res_unitinteger
0
... 9223372036854775807
This flag is not available for MySQL 8.0 and later as the query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0.
No query_cache_sizeinteger
0
... 223338299392
This flag is not available for MySQL 8.0 and later as the query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0.
No query_cache_typeenumeration
0
... 2
This flag is not available for MySQL 8.0 and later as the query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0.
Yes query_cache_wlock_invalidateboolean
on
| off
This flag is not available for MySQL 8.0 and later as the query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0.
No query_prealloc_sizeinteger
8192
... 9223372036854775807
No range_alloc_block_size integer
4096
... 4294967295
No range_optimizer_max_mem_size integer
0
... 9223372036854775807
No read_buffer_size integer
8192
... 2147483647
No read_only boolean
on
| off
Has no effect for replicas.
No read_rnd_buffer_sizeinteger
1
... 2147483647
No regexp_stack_limit integer
0
... 2147483647
No regexp_time_limit integer
0
... 2147483647
32
No replica_checkpoint_group integer
32
... 524280
This flag doesn't affect replicas that don't have multithreading enabled.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_checkpoint_group
flag. For more information, see Aliased flags. No replica_checkpoint_period integer
1
... 4294967295
The unit is milliseconds.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_checkpoint_period
flag. For more information, see Aliased flags. No replica_compressed_protocol boolean
on
| off
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use the slave_compressed_protocol
flag. For more information, see Aliased flags. No replica_net_timeout integer
1
... 31536000
The unit is seconds.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_net_timeout
flag. For more information, see Aliased flags. No replica_parallel_type enumeration
DATABASE
, LOGICAL_CLOCK
DATABASE
LOGICAL_CLOCK
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_parallel_type
flag. For more information, see Aliased flags. No replica_parallel_workers integer
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_parallel_workers
flag. For more information, see Aliased flags. No replica_pending_jobs_size_max integer
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_pending_jobs_size_max
flag. For more information, see Aliased flags. No replica_preserve_commit_order boolean
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_preserve_commit_order
flag. For more information, see Aliased flags. No replica_skip_errors string
OFF
For more information about this flag, see the Tips section.
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use theslave_skip_errors
flag. For more information, see Aliased flags. Yes replica_sql_verify_checksum boolean
on
| off
slave_sql_verify_checksum
flag. For more information, see Aliased flags. No replica_transaction_retries integer
0
... 9223372036854775807
slave_transaction_retries
flag. For more information, see Aliased flags. No replica_type_conversions String
ALL_LOSSY
, ALL_NON_LOSSY
, ALL_SIGNED
, ALL_UNSIGNED
slave_type_conversions
flag. For more information, see Aliased flags. No replicate_do_db string
For more information about how to use this flag, see the Replication filters section.
No replicate_do_tablestring
For more information about how to use this flag, see the Replication filters section.
No replicate_ignore_dbstring
For more information about how to use this flag, see the Replication filters section.
No replicate_ignore_tablestring
For more information about how to use this flag, see the Replication filters section.
No replicate_wild_do_tablestring
For more information about how to use this flag, see the Replication filters section.
No replicate_wild_ignore_tablestring
For more information about how to use this flag, see the Replication filters section.
No rpl_read_sizeinteger
8192
... 4294959104
8192
No schema_definition_cache integer
256
... 524288
256
No session_track_gtids string
OFF
| OWN_GTID
| ALL_GTIDS
OFF
No session_track_schema boolean
on
| off
on
No session_track_state_change boolean
on
| off
off
No session_track_transaction_info string
OFF
| STATE
| CHARACTERISTICS
OFF
No sha256_password_proxy_users boolean
on
| off
off
No show_create_table_verbosity boolean
on
| off
off
No show_compatibility_56 boolean
on
| off
Supported in MySQL 5.7 only.
No skip_character_set_client_handshakeboolean
on
| off
off
Yes skip_show_database flag
on
| off
Yes slave_checkpoint_group integer
32
... 524280
This flag doesn't affect replicas that don't have multithreading enabled.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_checkpoint_group
flag. For more information, see Aliased flags. No slave_checkpoint_period integer
1
... 4294967295
The unit is milliseconds.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_checkpoint_period
flag. For more information, see Aliased flags. No slave_compressed_protocol boolean
on
| off
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use the replica_compressed_protocol
flag. For more information, see Aliased flags. No slave_net_timeout integer
1
... 31536000
The unit is seconds.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_net_timeout
flag. For more information, see Aliased flags. No slave_parallel_type enumeration
DATABASE
, LOGICAL_CLOCK
DATABASE
LOGICAL_CLOCK
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_parallel_type
flag. For more information, see Aliased flags. No slave_parallel_workers integer
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_parallel_workers
flag. For more information, see Aliased flags. No slave_preserve_commit_order boolean
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_preserve_commit_order
flag. For more information, see Aliased flags. No slave_pending_jobs_size_max integer
For information about how to use this flag and its acceptable values, see Configuring parallel replication.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_pending_jobs_size_max
flag. For more information, see Aliased flags. No slave_skip_errors string
OFF
For more information about this flag, see the Tips section.
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use thereplica_skip_errors
flag. For more information, see Aliased flags. Yes slave_sql_verify_checksum boolean
on
| off
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use the replica_sql_verify_checksum
flag. For more information, see Aliased flags. No slave_transaction_retries integer
0
... 9223372036854775807
replica_transaction_retries
flag. For more information, see Aliased flags. No slave_type_conversions string
ALL_LOSSY
, ALL_NON_LOSSY
, ALL_SIGNED
, ALL_UNSIGNED
replica_type_conversions
flag. For more information, see Aliased flags. No slow_launch_time Integer
0
... 31536000
2
No slow_query_log boolean
on
| off
See the Tips section for more information on slow query logs.
No sort_buffer_sizeinteger
32768
... 9223372036854775807
No source_verify_checksum boolean
on
| off
off
Note: This flag name is available for MySQL 8.0.26 and later only. For MySQL versions 8.0.18 and earlier, use the master_verify_checksum
flag. For more information, see Aliased flags. No sql_mode string
See the Server SQL Modes in the MySQL documentation for allowed values, including combined modes, such as ANSI
. NO_DIR_IN_CREATE
is not supported.
Cloud SQL for MySQL doesn't support empty values for the sql_mode
flag. Instead of using an empty value, set this flag to the NO_ENGINE_SUBSTITUTION
mode.
boolean
on
| off
off
No sql_select_limit integer
0...18446744073709551615
18446744073709551615
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 for Cloud SQL and later. No stored_program_cacheinteger
16
... 524288
No stored_program_definition_cache integer
256
... 524288
256
No sync_binlog integer
0
... 4294967295
The default setting of 1 enables the synchronization of the binary log to disk before transactions are committed.
If you promote a replica with this flag enabled, the flag is automatically removed causing the promoted replica to have full durability by default. To use this flag with a promoted replica, you can update the flag to the replica after promotion.
Note: Changing the default value for thesync_binlog
flag will cause the instance to lose SLA coverage as it may reduce durability of the instance's data.
See the Tips section for more information about this flag.
No sync_master_infointeger
0
... 4294967295
10000
This flag name is deprecated for MySQL 8.0.26 and later. Instead, use the sync_source_info
flag. For more information, see Aliased flags. No sync_relay_log integer
0
... 4294967295
10000
No sync_relay_log_info integer
0
... 4294967295
10000
No sync_source_info integer
0
... 4294967295
10000
This flag name is only available for MySQL 8.0.26 and later. For MySQL versions 8.0.18 and earlier, use the sync_master_info
flag. For more information, see Aliased flags. No sysdate_is_now boolean
on
| off
off
Yes table_definition_cache integer
400
... 524288
No tablespace_definition_cache integer
256
... 524288
256
No table_open_cache integer
1
... 524288
No table_open_cache_instances integer
1
... 64
Yes temptable_max_mmap integer
0
... 68719476736
1073741824
No temptable_max_ram integer
2097152
... 68719476736
1073741824
No thread_cache_size integer
0
... 16384
No thread_stack integer
131072
... 9223372036854775807
Yes tls_version String
Version 5.7 to Version 8.0.27: TLSv1, TLSv1.1
TLSv1.2
Version 8.0 or later: No
tmp_table_sizeinteger
1024
... 67108864
See the Tips section for more information about this flag.
No transaction_alloc_block_sizeinteger
1024
... 131072
No transaction_isolation enumeration
READ-UNCOMMITTED
| READ-COMMITTED
| REPEATABLE-READ
| SERIALIZABLE
Yes transaction_prealloc_size integer
1024
... 131072
No transaction_write_set_extraction enumeration
For information about how to use this flag and its acceptable values, see Configuring parallel replication. This flag is not supported in MySQL 8.4.
No unique_checksboolean
on
| off
on
See the Tips section for more information about this flag.
Note: The flag is supported in MySQL 8.0 and later for Cloud SQL. No updatable_views_with_limitinteger
0
... 1
No wait_timeout integer
1
... 31536000
No windowing_use_high_precision boolean
on
| off
on
No Timezone names
In this section, you'll learn about the time-zone names that Cloud SQL for MySQL supports.
The table in this section displays the following:
Time-zone names are case insensitive. You can supply the time-zone name in any case. The format for the STD and DST time-zone offsets is +/-hh:mm
, and the offsets are in UTC. Not all time-zone names have corresponding synonym names. If this occurs, then use the time-zone name.
Timezone tables in Cloud SQL might need refreshing with the latest data. For example, a country might shift from a DST timezone offset to an STD offset or a country might introduce a new timezone.
For every critical service agent (CSA) release for Cloud SQL, timezone tables are refreshed with the latest data. When this happens, during the non-maintenance window, the replica instances are refreshed. Primary instances are then refreshed during the maintenance window.
You can either wait until the regular maintenance window for the CSA release or you can perform self service maintenance to refresh the timezone tables with the latest data. For more information about viewing the available maintenance versions, see Determine the target maintenance version.
Note: For MySQL 8.0 and later, the timezone tables are read-only. You can write to timezone tables for MySQL 5.6 and 5.7. However, we don't recommend that you write to, or delete from, these tables because this can cause issues with the replica instances. Tips for working with flagsTo make your general
or slow query
logs available, enable the corresponding flag and set the log_output
flag to FILE
. This makes the log output available using the Logs Viewer in the Google Cloud console. Note that Google Cloud Observability logging charges apply. To minimize instance storage cost, general
and slow query
logs on the instance disk are rotated when the log file is older than 24 hours (and no changes have been made within that duration) or greater than 100MB in size. Old log files are automatically deleted after the rotation.
If the log_output
is set to NONE
, you can't access the logs. If you set log_output
to TABLE
, the log output is placed in a table in the mysql system database. It might consume a considerable amount of disk space. If this table becomes large, it can affect instance restart time or cause the instance to lose its SLA coverage. For this reason, the TABLE
option is not recommended. In addition, the log content isn't available in Logs Explorer and it isn't rotated. If needed, you can truncate your log tables by using the API. For more information, see the instances.truncateLog reference page.
mysqlbinlog
. This utility is available with the MySQL Server software. If you have a MySQL instance, then you can use mysqlbinlog
to determine your desired recovery position.
expire_logs_days
flag is removed from MySQL 8.4 and later. For more information, see the transaction log retention page.
The value of this flag is the size in bytes of the buffer pool. The buffer pool size must always be equal to or a multiple of the value that you get when you multiply innodb_buffer_pool_chunk_size
by innodb_buffer_pool_instances
. If you alter the buffer pool size to a value that's not equal to or a multiple of innodb_buffer_pool_chunk_size
multiplied by innodb_buffer_pool_instances
, then Cloud SQL adjusts the buffer pool size automatically. You can't enable this flag on instances that have fewer than 3,840 MiB of RAM.
You can't configure this flag for shared-core machine types (f1_micro and g1_small). Changing this flag on MySQL 5.6 requires a restart.
In Cloud SQL, the default, minimum allowable, and maximum allowable values of the innodb_buffer_pool_size flag depend on the instance's memory. These values can be roughly calculated as a percentage of the instance's RAM. By default, the value of this flag is typically set close to the maximum allowable value. The maximum allowable allocation percentage increases with instance size. The minimum allowable value is usually about 20% of the instance's RAM.
Approximate values for this flag:
Instance RAM Range Min % Default % Max % 0 - 4.0GB of RAM ~34% 4.0GB - 7.5GB ~20% ~34% ~34% 7.5GB - 12GB ~20% ~52% ~52% 12GB - 24GB ~20% ~67% ~67% 24GB and above ~20% ~72% ~72%Your exact values may vary. To calculate the current value for your instance, you can run the query:
show global variables like 'innodb_buffer_pool_size';
For reference, the minimum allowable, default, and maximum allowable values are provided for the machine types below.
Machine type Instance RAM (GB) Min (GB)ON
.
This flag improves write performance by optimizing the flushing algorithm, controlling flush limits, and adjusting background activity to prioritize your database write operations.
For the majority of use cases, you can experience better performance such as improved throughput and reduced latency with this flag enabled. However, if your database write operations cause extremely heavy load on the server, then the flag can delay some background activities. This delay can cause a small increase in disk usage, which decreases automatically after the load subsides.
By default, the innodb_cloudsql_optimized_write
flag is enabled for all new and upgraded Cloud SQL Enterprise Plus edition instances. For existing Cloud SQL Enterprise Plus edition instances, this flag is enabled after the related maintenance update is applied.
If you need to disable the flag, then run the following command.
gcloud sql instances patch INSTANCE_NAME \ --database-flags="innodb_cloudsql_optimized_write=OFF"
Changing the value of the flag requires restarting the instance.
For all MySQL versions 5.6 and higher, the default value is ON
.
innodb_flush_log_at_trx_commit
and the sync_binlog
flags must be set to the default value of 1
. If you change the default value, then durability might decrease, which might lead to inconsistency between the primary instance and replicas. Therefore, the instance loses its SLA coverage. In addition, any of the following might occur:
Setting the value of the innodb_flush_log_at_trx_commit
or sync_binlog
flag to non-default values for primary, standalone, and HA instances causes reduced durability.
If you need higher performance for read replicas, then we recommend setting the innodb_flush_log_at_trx_commit
value to 2
. Cloud SQL does not support setting the value for this flag to 0. If you set the flag value to 2, you must either disable the binary log on the replica, or set sync_binlog
to a value other than 1 for higher performance.
Cloud SQL might temporarily change the innodb_flush_log_at_trx_commit
and sync_binlog
flag values to default when taking a backup. This might cause reduced performance when taking backups. To avoid this from impacting your instance, you can change the backup window when instance usage is low. For more information, see Create and manage on-demand and automatic backups.
innodb_flush_log_at_timeout
lets you modify the frequency of page flushes so you can avoid impacting the performance of binary log group commit. The default setting is once per second.
Cloud SQL has extended this flag to support specifying a time period in microseconds.
Examples:
0.001
to specify 1 ms0.0001
to specify 100 us12.5
to specify 12.5 seconds12.005
to specify 12 seconds and 5 ms0.005100
to specify 5 ms and 100 usFor certain workloads, using whole second granularity for flushing pages might be unacceptable in terms of potential transaction loss. Instead, you can flush pages using microsecond granularity to maintain performance without significantly compromising durability.
The microsecond time periods for the innodb_flush_log_at_timeout
flag are only applicable when the innodb_flush_log_at_trx_commit
durability flag is set to 2
.
The flushing of pages might happen more or less frequently than the value specified for innodb_flush_log_at_timeout
and the value is not the upper bound.
If you configure a value for the innodb_redo_log_capacity
flag, then Cloud SQL ignores any value that you define for the innodb_log_file_size
flag.
If you don't configure any values for the innodb_redo_log_capacity
or innodb_log_file_size
flags, then Cloud SQL uses the default value of the innodb_redo_log_capacity
flag, or 104857600
(100 MB).
If you don't configure the innodb_redo_log_capacity
flag, but configure the innodb_log_file_size
flag, then the value of your innodb redo log size is calculated by innodb_log_file_size
* innodb_log_file_in_group
. For example, if you configure innodb_log_file_size
to a value of 10 GB and the default value of innodb_log_file_in_group
is 2
, then the effective value of your innodb redo log size is 20 GB.
Exhausting the available instance memory can occur when you set tmp_table_size
and max_heap_table_size
too high for the number of concurrent queries the instance processes. Exhausting the memory results in an instance crash and restart.
For more information about working with these flags, see How MySQL Uses Internal Temporary Tables and The MEMORY Storage Engine.
You can't enable this flag on instances with a shared core (less than 3 GB of RAM). If you enable this flag, then you can't change your machine type to a size that does not support the flag; you must first disable this flag.
OFF
and the default value for MySQL 8.0 is ON
. To learn more about the event_scheduler
flag, see event_scheduler. If the event_scheduler
flag is set to ON
for a read replica, it can cause errors based on the type of statements defined in the events:
write
event on a read replica, it causes an error as read replicas are read only. See Read Replicas for more information.kill
, event_scheduler
applies it to the replica. This stops the replication and delete the replica.event_scheduler
flag to OFF
when creating replicas.
For more information on how to enable or disable event_scheduler
, see Configure database flags.
replica_skip_errors
or the slave_skip_errors
flag can cause replication issues. In general, if an error occurs while executing a statement, the replication is stopped. Using this flag will cause the error to be skipped and replication to continue, leading to inconsistency between the primary instance and replica. This can also make it harder to troubleshoot replication issues.
Cloud SQL recommends only using this flag if necessary. If you are experiencing replication errors, see Troubleshooting Cloud SQL: Replication more information on how to resolve this issue.
SET GLOBAL FLAG_NAME=FLAG_VALUE
Using the SET GLOBAL
command requires the CLOUDSQL_SPECIAL_SYSEM_VARIABLES_ADMIN
privilege, which is granted to the cloudsqlsuperuser
role.
CLOUDSQL_SPECIAL_SYSEM_VARIABLES_ADMIN
privilege is only available in MySQL 8.0 for Cloud SQL.
For more information on how to grant special privilege access to a specific user, see About MySQL users. These flags are non-persisted. When your Cloud SQL instance is recreated or restarted, the flag settings are reset back to default value.
The default value for the binlog_order_commits
flag is ON
. Cloud SQL recommends to not change the default value of this flag. If the default value is changed to OFF
, transactions in the same binary log group will commit in a different order than when they were written in the binary log. This impacts the following operations that execute transactions in the binary log order:
Optimizer flags have comma-separated values. You can set these flags using the Console or gcloud. For more information on how to set this flag using the console, see Configure database flags. If using gcloud, you can specify the value for these flags using two different ways:
To set multiple optimizer sub-flags in one command, use the comma delimiter to separate each flag name. If you set a single sub-flag value using the gcloud command, it overwrites all previously set sub-flags. For example, if you run the following command, the expected value for thebatched_key_access
sub-flag is set to on
and all other sub-flags for optimizer_flags are set to their default values.
gcloud sql instances patch my-instance --database-flags=^~^optimizer_switch=batched_key_access=onIf you run the following command, the value of the
block_nested_loop
sub-flag is set to on
and all other sub-flags for optimizer_switch are overwritten and set to their default values.
gcloud sql instances patch my-instance --database-flags=^~^optimizer_switch=block_nested_loop=onThis includes
batched_key_access
, which was set to on
by the previous command. To keep all previously set sub-flags and add new ones, you must add the values of all sub-flags you want to set when adding a new sub-flag.
All other database system flags that are not listed in the supported flags section are called managed flags. For certain managed flags, Cloud SQL sets the flag to a value other than the default setting to ensure Cloud SQL instances run reliably. You can't change the values on these system flags.
Managed flags with a non-default setting are listed below.
partial_revokes system flag in MySQL 8.0 and laterThe partial_revokes
flag allows you to limit user access on a databases schema. In Cloud SQL for MySQL version 8.0 and later, the partial_revokes
flag is set to ON
. This limits the use of wildcard characters when granting or revoking user privileges to database schemas in MySQL 8.0. Update your GRANT
statement to use the full name of the database schema instead of using wildcard characters.
For example, if you use the following command with the %\
wildcard character to grant privileges to a user in MySQL 5.7, then the user will be granted privileges to all databases ending with _foobar
.
GRANT ALL PRIVILEGES ON `%\_foobar`.* TO 'testuser'@'%';
However, in MySQL 8.0, users will only be granted access to the database that is an exact match to %\_foobar
.
There are two different ways to grant access to multiple databases in MySQL 8.0 and later.
You can grant permissions to specific databases using the full database names as shown in the command below:
grant select on test1_foobar.* to 'testuser'@'%';
grant select on test2_foobar.* to 'testuser'@'%';
grant select on test3_foobar.* to 'testuser'@'%';
With partial_revokes
, you can use the grant
and revoke
command to grant user privileges on all database schemas while restricting access to a few database schemas.
grant select on *.* to 'testuser'@'%';
revoke select on test3_foobar.* from 'testuser'@'%';
This grants access to all database schemas while restricting access to test3_foobar.*
.
Replication filters can be set only on Cloud SQL replicas. Each replication filter is set as a single flag for multiple databases where each database name is separate by a comma. You can set up a replication filter on a Cloud SQL replica using console or the following command:
gcloud sql instances patch REPLICA_NAME --database-flags=^~^REPLICATION_FILTER_NAME=DATABASE_NAME1,DATABASE_NAME, etc
Replication filters don't support database names that contain comma values. The ^~^
value in the preceding command is necessary for database flags that are comma-separated values.
When you set a replication filter flag, keep the following in mind:
mysql
schema.The following is a list of database flags that Cloud SQL for MySQL uses to enable and manage features specific to the index advisor.
Flag name Typestring
00:00
No cloudsql_index_advisor_run_at_timestamp Datetime
00:00:00
No Aliased flags
The following list below contains the flag names that have been changed by Cloud SQL for MySQL versions 8.0.26 and above.
Deprecated flag name New flag name log_slow_slave_statements log_slow_replica_statements master_verify_checksum source_verify_checksum slave_checkpoint_group replica_checkpoint_group slave_checkpoint_period replica_checkpoint_period slave_compressed_protocol replica_compressed_protocol slave_net_timeout replica_net_timeout slave_parallel_type replica_parallel_type slave_parallel_workers replica_parallel_workers slave_pending_jobs_size_max replica_pending_jobs_size_max slave_preserve_commit_order replica_preserve_commit_order slave_skip_errors replica_skip_errors slave_sql_verify_checksum replica_sql_verify_checksum slave_transaction_retries replica_transaction_retries slave_type_conversions replica_type_conversions sync_master_info sync_source_infoIf your Cloud SQL instance is using a deprecated flag name, then edit your Cloud SQL instance, delete the deprecated flag name, and add the new flag to your instance. For more information, see Setup a database flag.
Troubleshooting Issue Troubleshooting After enabling a flag the instance loops between panicking and crashing. Contact customer support to request flag removal followed by ahard drain
. This forces the instance to restart on a different host with a fresh configuration without the undesired flag or setting. You see the error message Bad syntax for dict arg
when trying to set a flag. Complex parameter values, such as comma-separated lists, require special treatment when used with gcloud commands. What's next
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4