Updating MySQL® cluster settings
After creating a cluster, you can:
-
Warning
You cannot change MySQL® settings using SQL commands.
-
Move the cluster to another folder.
Learn more about other cluster updates:
Changing the host class
The choice of a host class in Managed Service for MySQL® clusters is limited by the CPU and RAM quotas allocated to database clusters in your cloud. To check the resources currently in use, open the Quotas
Note
Some MySQL® settings depend on the selected host class.
When changing the host class:
- A single-host cluster will be unavailable for a few minutes and all database connections will be dropped.
- A multi-host cluster will switch to a new master host Each host is stopped and updated one by one, remaining unavailable for a few minutes.
- Using a special FQDN does not guarantee a stable database connection: user sessions may be terminated.
We recommend changing the host class only when your cluster has no active workload.
- Go to Managed Service for MySQL.
- Select your cluster and click Edit in the top panel.
- To change the MySQL® host class, select the one you need under Host class.
- Click Save changes.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the host class for a cluster:
-
View the description of the CLI command for updating a cluster:
yc managed-mysql cluster update --help -
Get the list of available host classes (the
ZONE IDScolumn specifies the availability zones where you can select the appropriate class):yc managed-mysql resource-preset listResult:
+-----------+--------------------------------+-------+----------+ | ID | ZONE IDS | CORES | MEMORY | +-----------+--------------------------------+-------+----------+ | s1.micro | ru-central1-a, ru-central1-b, | 2 | 8.0 GB | | | ru-central1-d | | | | ... | +-----------+--------------------------------+-------+----------+ -
Specify the required host class in the cluster update command:
yc managed-mysql cluster update <cluster_name_or_ID> --resource-preset <class_ID>Managed Service for MySQL® will start updating the host class for your cluster.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
Edit the
resource_preset_idvalue in theresourcessection of your Managed Service for MySQL® cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... resources { resource_preset_id = "<host_class>" ... } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider article.
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MySQL® cluster operations:
- Creating a cluster, including by restoring it from a backup: 15 minutes.
- Updating a cluster, including the MySQL® version update: 60 minutes.
- Deleting a cluster: 15 minutes.
Operations exceeding the timeout are aborted.
How do I change these limits?
Add the timeouts section to the cluster description, such as the following:
resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.resources.resourcePresetId", "configSpec": { "resources": { "resourcePresetId": "<host_class>" } } }'Where:
-
updateMask: Comma-separated list of settings you want to update.Here, we provide only one setting.
-
configSpec.resources.resourcePresetId: New host class.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.resources.resource_preset_id" ] }, "config_spec": { "resources": { "resource_preset_id": "<host_class>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Here, we provide only one setting.
-
config_spec.resources.resource_preset_id: New host class.
You can get the cluster ID with the list of clusters in the folder.
-
-
Check the server response to make sure your request was successful.
Changing the disk type and increasing the storage size
Make sure the cloud has enough quota to increase the storage size. Open the cloud's Quotas
To change the disk type and increase the storage size for a cluster:
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the disk type and increase the storage size for a cluster:
-
View the description of the CLI command for updating a cluster:
yc managed-mysql cluster update --help -
Specify the disk type and required storage size in the cluster update command (at least as large as
disk_sizein the cluster properties):yc managed-mysql cluster update <cluster_name_or_ID> \ --disk-type <disk_type> \ --disk-size <storage_size_in_GB>
To change the disk type and increase the storage size for a cluster:
-
Open the current Terraform configuration file describing your infrastructure.
To learn how to create this file, see Creating a cluster.
-
Under
resources, change thedisk_type_idanddisk_sizeparameter values:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... resources { disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> ... } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider article.
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MySQL® cluster operations:
- Creating a cluster, including by restoring it from a backup: 15 minutes.
- Updating a cluster, including the MySQL® version update: 60 minutes.
- Deleting a cluster: 15 minutes.
Operations exceeding the timeout are aborted.
How do I change these limits?
Add the timeouts section to the cluster description, such as the following:
resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.resources.diskTypeId,configSpec.resources.diskSize", "configSpec": { "resources": { "diskTypeId": "<disk_type>", "diskSize": "<storage_size_in_bytes>" } } }'Where:
-
updateMask: Comma-separated list of settings you want to update. -
configSpec.resources: Storage settings:diskTypeId: Disk type.diskSize: New storage size, in bytes.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.resources.disk_type_id", "config_spec.resources.disk_size" ] }, "config_spec": { "resources": { "disk_type_id": "<disk_type>", "disk_size": "<storage_size_in_bytes>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]). -
config_spec.resources: Storage settings:disk_type_id: Disk type.disk_size: New storage size, in bytes.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
Changing MySQL® settings
Note
Some MySQL® settings depend on the selected host class.
- Go to Managed Service for MySQL.
- Select your cluster and click Edit in the top panel.
- Change the MySQL® settings by clicking Settings under DBMS settings.
- Click Save.
- Click Save changes.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the MySQL® settings:
-
View the description of the CLI command to update the cluster configuration:
yc managed-mysql cluster update-config --help -
Set the parameter values as needed.
All supported parameters are listed in the request format for the update method, in the
mysql_config_5_7field. To specify a parameter name in the CLI call, convert its name fromlowerCamelCase
tosnake_case
format. For example, convert thelogMinDurationStatementparameter from an API request tolog_min_duration_statementfor the CLI command:yc managed-mysql cluster update-config <cluster_name> --set log_min_duration_statement=100,<parameter_name>=<value>,...Managed Service for MySQL® will start updating the cluster settings.
-
Open the current Terraform configuration file describing your infrastructure.
To learn how to create this file, see Creating a cluster.
-
In the Managed Service for MySQL® cluster description, add or update the DBMS settings under
mysql_config:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... mysql_config = { <MySQL®_setting_name> = <value> ... } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider article.
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MySQL® cluster operations:
- Creating a cluster, including by restoring it from a backup: 15 minutes.
- Updating a cluster, including the MySQL® version update: 60 minutes.
- Deleting a cluster: 15 minutes.
Operations exceeding the timeout are aborted.
How do I change these limits?
Add the timeouts section to the cluster description, such as the following:
resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.mysqlConfig_<MySQL®_version>", "configSpec": { "mysqlConfig_<MySQL®_version>": { "<setting_1>": "<value_1>", "<setting_2>": "<value_2>", ... "<setting_N>": "<value_N>" } } }'Where:
-
updateMask: Comma-separated list of settings you want to update.Here, we provide only one setting.
-
configSpec.mysqlConfig_<MySQL®_version>: MySQL® settings. Specify each setting on a separate line, separated by commas.See the method description for the list of MySQL® versions supporting this option. See Cluster-level DBMS settings for descriptions and possible values of the settings.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.mysql_config_<MySQL®_version>" ] }, "config_spec": { "mysql_config_<MySQL®_version>": { "<setting_1>": "<value_1>", "<setting_2>": "<value_2>", ... "<setting_N>": "<value_N>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Here, we provide only one setting.
-
configSpec.mysqlConfig_<MySQL®_version>: MySQL® settings. Specify each setting on a new line, separated by commas.See the method description for the list of MySQL® versions supporting this option. See Cluster-level DBMS settings for the descriptions and possible values of the settings.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
For more information on updating MySQL® settings, see FAQ.
Changing additional cluster settings
-
Go to Managed Service for MySQL.
-
Select your cluster and click Edit in the top panel.
-
Change additional cluster settings:
-
Automatic increase of storage size
-
Select In the maintenance window when full at more than and specify the of the current size is full percentage at which the storage will be expanded in the next maintenance window.
-
Select Immediately when full at more than and specify the of the current size is full percentage at which the storage will be expanded immediately.
-
In the Maximum storage size field, specify the maximum storage size that can be set during autoscaling.
Warning
- Automatic storage expansion is not supported on dedicated hosts.
- If you have configured storage scaling during a maintenance window, set the maintenance window schedule.
Learn more about storage autoscaling here.
-
-
Backup start time (UTC): Time interval during which the cluster backup starts. Time is specified in 24-hour UTC format. The default time is
22:00 - 23:00UTC. -
Retention period for automatic backups, days
Automatic backups will be stored for this many days.
-
Maintenance window: Maintenance window settings:
- To enable maintenance at any time, select arbitrary (default).
- To specify the preferred maintenance start time, select by schedule and specify the desired day of the week and UTC hour. For example, you can choose a time when the cluster is least loaded.
Maintenance operations are carried out both on enabled and disabled clusters. They may include updating the DBMS, applying patches, and so on.
-
DataLens access: Enables you to analyze cluster data in Yandex DataLens.
For more information about setting up a connection, see Connecting to DataLens.
-
WebSQL access: Enables SQL queries against cluster databases from the Yandex Cloud management console using Yandex WebSQL.
-
Yandex Query access: Enables YQL queries against cluster databases from Yandex Query. This feature is currently at the Preview stage. The default value is
false. -
Statistics sampling: Enable this option to use the Performance diagnostics tool in the cluster.
-
Deletion protection: Manages cluster protection against accidental deletion.
Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.
-
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change additional cluster settings:
-
View the description of the CLI command for updating a cluster:
yc managed-mysql cluster update --help -
Run the following command with the list of settings to update:
yc managed-mysql cluster update <cluster_name_or_ID> \ --backup-window-start <backup_start_time> \ --backup-retain-period-days=<backup_retention_period> \ --datalens-access=<true_or_false> \ --websql-access=<true_or_false> \ --yandexquery-access=<true_or_false> \ --disk-size-autoscaling disk-size-limit=<maximum_storage_size_in_GB>,` `planned-usage-threshold=<threshold_for_scheduled_expansion_in_percent>,` `emergency-usage-threshold=<threshold_for_immediate_expansion_in_percent> \ --maintenance-window type=<maintenance_type>,` `day=<day_of_week>,` `hour=<hour> \ --deletion-protection \ --performance-diagnostics enabled=true,` `sessions-sampling-interval=<session_sampling_interval>,` `statements-sampling-interval=<statement_sampling_interval>
You can update the following settings:
--backup-window-start: The cluster backup start time, set in UTC formatHH:MM:SS. If the time is not set, the backup will start at 22:00 UTC.
-
--backup-retain-period-days: Automatic backup retention period, in days. The valid values range from7to60. The default value is7. -
--datalens-access: Enables access to the cluster from DataLens. The default value isfalse. For more information about setting up a connection, see Connecting to a MySQL® cluster from DataLens. -
--websql-access: Enables SQL queries against cluster databases from the Yandex Cloud management console using Yandex WebSQL. The default value isfalse. -
--yandexquery-access: Enables YQL queries against cluster databases from Yandex Query. This feature is currently at the Preview stage. The default value isfalse.
-
--disk-size-autoscaling: Storage autoscaling settings:-
planned-usage-threshold: Storage usage percentage threshold triggering a storage expansion during the next maintenance window. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
emergency-usage-threshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
disk-size-limit: Maximum storage capacity after expansion, in GB.
Warning
- Automatic storage expansion is not supported on dedicated hosts.
-
When using
planned-usage-threshold, make sure to set the--maintenance-window. -
If you specify both thresholds,
emergency-usage-thresholdmust be greater thanplanned-usage-threshold.
-
-
--maintenance-window: Maintenance window settings (including for disabled clusters), wheretypeis the maintenance type:anytime: At any time (default).weekly: On a schedule. For this value, also specify the following:day: Day of week, i.e.,MON,TUE,WED,THU,FRI,SAT, orSUN.hour: Hour of day (UTC), from1to24.
-
--deletion-protection: Cluster protection from accidental deletion,trueorfalse.Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.
-
performance-diagnostics: Enables statistics collection for cluster performance diagnostics. Forsessions-sampling-intervalandstatements-sampling-interval, possible values range from1to86400seconds.
You can get the cluster name with the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
For information on how to create such a file, see Creating a cluster.
-
To change the backup start time, add the
backup_window_startsection to the Managed Service for MySQL® cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... backup_window_start { hours = <hour> minutes = <minute> } ... }Where:
hours: Backup start hour.minutes: Backup start minute.
-
To change the backup retention period, specify the
backup_retain_period_daysparameter in the cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... backup_retain_period_days = <backup_retention_period> ... }Where
backup_retain_period_daysis automatic backup retention period, in days. The valid values range from7to60. The default value is7. -
To enable access from DataLens and allow SQL queries from the management console using Yandex WebSQL, add the
accesssection to the cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... access { data_lens = <true_or_false> web_sql = <true_or_false> } ... } -
To configure automatic storage expansion, add the
disk_size_autoscalingsection to the cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... disk_size_autoscaling { disk_size_limit = <maximum_storage_size_in_GB> emergency_usage_threshold = <threshold_for_immediate_expansion_in_percent> planned_usage_threshold = <threshold_for_scheduled_expansion_in_percent> } ... }Where:
-
disk_size_limit: Maximum storage capacity after expansion, in GB. -
emergency_usage_threshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
planned_usage_threshold: Storage usage percentage threshold triggering a storage expansion during the next maintenance window. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100.
Warning
- Automatic storage expansion is not supported on dedicated hosts.
-
When using
planned_usage_threshold, make sure to set themaintenance_window. -
If you specify both thresholds,
emergency_usage_thresholdmust be greater thanplanned_usage_threshold.
-
-
To set up the maintenance window that will also apply to disabled clusters, add the
maintenance_windowsection to the cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... maintenance_window { type = <maintenance_type> day = <day_of_week> hour = <hour> } ... }Where:
type: Maintenance type. The possible values include:ANYTIME: AnytimeWEEKLY: On a schedule
day: Day of week for theWEEKLYtype, i.e.,MON,TUE,WED,THU,FRI,SAT, orSUN.hour: UTC hour for theWEEKLYtype, from1to24.
-
To enable cluster protection from accidental deletion by a user of your cloud, add the
deletion_protectionfield set totrueto your cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... deletion_protection = <protect_cluster_from_deletion> }Where
deletion_protectionis the cluster protection from accidental deletion:trueorfalse.Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.
-
To enable statistics collection for cluster performance diagnostics, add a
performance_diagnosticssection to your Managed Service for MySQL® cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... performance_diagnostics { enabled = true sessions_sampling_interval = <session_sampling_interval> statements_sampling_interval = <statement_sampling_interval> } ... }For
sessions_sampling_intervalandstatements_sampling_interval, possible values range from1to86400seconds. -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider article.
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MySQL® cluster operations:
- Creating a cluster, including by restoring it from a backup: 15 minutes.
- Updating a cluster, including the MySQL® version update: 60 minutes.
- Deleting a cluster: 15 minutes.
Operations exceeding the timeout are aborted.
How do I change these limits?
Add the timeouts section to the cluster description, such as the following:
resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Create a file named
body.jsonand paste the following code into it:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.{ "updateMask": "configSpec.backupWindowStart,configSpec.backupRetainPeriodDays,configSpec.access,configSpec.performanceDiagnostics,maintenanceWindow,deletionProtection", "configSpec": { "backupWindowStart": { "hours": "<hours>", "minutes": "<minutes>", "seconds": "<seconds>", "nanos": "<nanoseconds>" }, "backupRetainPeriodDays": "<number_of_days>", "access": { "dataLens": <allow_access_from_DataLens>, "webSql": <allow_access_from_WebSQL>, "yandexQuery": <allow_access_from_Yandex_Query> }, "performanceDiagnostics": { "enabled": <enable_statistics_collection>, "sessionsSamplingInterval": "<session_sampling_interval>", "statementsSamplingInterval": "<statement_sampling_interval>" }, "diskSizeAutoscaling": { "plannedUsageThreshold": "<threshold_for_scheduled_increase_in_percent>", "emergencyUsageThreshold": "<threshold_for_immediate_increase_in_percent>", "diskSizeLimit": "<maximum_storage_size_in_bytes>" } }, "maintenanceWindow": { "weeklyMaintenanceWindow": { "day": "<day_of_week>", "hour": "<hour>" } }, "deletionProtection": <protect_cluster_from_deletion> }Where:
-
updateMask: Comma-separated list of settings you want to update. -
configSpec: Cluster settings:-
backupWindowStart: Backup window settings.Here, specify the backup start time:
hours: From0to23hours.minutes: From0to59minutes.seconds: From0to59seconds.nanos: Between0and999999999nanoseconds.
-
backupRetainPeriodDays: Number of days to retain the cluster backup, between7and60. -
access: Settings for cluster access from Yandex Cloud services:dataLens: Access from DataLens. For more information about setting up a connection, see Connecting from DataLens.webSql: SQL queries against cluster databases from the Yandex Cloud management console using Yandex WebSQL.yandexQuery: YQL queries against cluster databases from Yandex Query. This feature is currently at the Preview stage.
The possible setting values are
trueorfalse. -
performanceDiagnostics: Statistics collection settings:enabled: Enables statistics collection,trueorfalse.sessionsSamplingInterval: Session sampling interval, from1to86400seconds.statementsSamplingInterval: Statement sampling interval, from1to86400seconds.
-
diskSizeAutoscaling: Storage autoscaling settings:-
plannedUsageThreshold: Storage usage percentage threshold triggering a storage expansion during the next maintenance window. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
emergencyUsageThreshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
diskSizeLimit: Maximum storage capacity after expansion, in bytes.
Warning
- Automatic storage expansion is not supported on dedicated hosts.
-
When using
plannedUsageThreshold, make sure to set themaintenanceWindow. -
If you specify both thresholds,
emergencyUsageThresholdmust be greater thanplannedUsageThreshold.
-
-
-
maintenanceWindow: Maintenance window settings (including for disabled clusters). Provide one of the following:-
anytime(default): Maintenance can take place at any time. -
weeklyMaintenanceWindow: Scheduled maintenance:day: Day of week, inDDDformat. The valid values areMON,TUE,WED,THU,FRI,SAT, andSUN.hour: Hour of day (UTC) inHHformat. The valid values range from1to24.
-
-
deletionProtection: Cluster protection against accidental deletion,trueorfalse.Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.
-
-
Call the Cluster.update method, e.g., via the following cURL
request:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>' \ --data "@body.json"You can get the cluster ID with the list of clusters in the folder.
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Create a file named
body.jsonand paste the following code into it:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.backup_window_start", "config_spec.backup_retain_period_days", "config_spec.access", "config_spec.performance_diagnostics", "maintenance_window", "deletion_protection" ] }, "config_spec": { "backup_window_start": { "hours": "<hours>", "minutes": "<minutes>", "seconds": "<seconds>", "nanos": "<nanoseconds>" }, "backup_retain_period_days": "<number_of_days>", "access": { "data_lens": <allow_access_from_DataLens>, "web_sql": <allow_access_from_WebSQL>, "yandex_query": <allow_access_from_Yandex_Query> }, "performance_diagnostics": { "enabled": <enable_statistics_collection>, "sessions_sampling_interval": "<session_sampling_interval>", "statements_sampling_interval": "<statement_sampling_interval>" }, "disk_size_autoscaling": { "planned_usage_threshold": "<threshold_for_scheduled_increase_in_percent>", "emergency_usage_threshold": "<threshold_for_immediate_increase_in_percent>", "disk_size_limit": "<maximum_storage_size_in_bytes>" } }, "maintenance_window": { "weekly_maintenance_window": { "day": "<day_of_week>", "hour": "<hour>" } }, "deletion_protection": <protect_cluster_from_deletion> }Where:
-
update_mask: List of settings you want to update as an array of strings (paths[]). -
config_spec: Cluster settings:-
backup_window_start: Backup window settings.Here, specify the backup start time:
hours: From0to23hours.minutes: From0to59minutes.seconds: From0to59seconds.nanos: From0to999999999nanoseconds.
-
backup_retain_period_days: Number of days to retain the cluster backup, between7and60. -
access: Settings for cluster access from Yandex Cloud services:data_lens: Access from DataLens. For more information about setting up a connection, see Connecting from DataLens.web_sql: SQL queries against cluster databases from the Yandex Cloud management console using Yandex WebSQL.yandex_query: YQL queries against cluster databases from Yandex Query. This feature is currently at the Preview stage.
The possible setting values are
trueorfalse. -
performance_diagnostics: Statistics collection settings:enabled: Enables statistics collection,trueorfalse.sessions_sampling_interval: Session sampling interval, from1to86400seconds.statements_sampling_interval: Statement sampling interval, from1to86400seconds.
-
disk_size_autoscaling: Storage autoscaling settings:-
planned_usage_threshold: Storage usage percentage threshold triggering a storage expansion during the next maintenance window. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
emergency_usage_threshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is0(automatic expansion disabled).The valid values range from
0to100. -
disk_size_limit: Maximum storage capacity after expansion, in bytes.
Warning
- Automatic storage expansion is not supported on dedicated hosts.
-
When using
planned_usage_threshold, make sure to set themaintenance_window. -
If you specify both thresholds,
emergency_usage_thresholdmust be greater thanplanned_usage_threshold.
-
-
-
maintenance_window: Maintenance window settings (including for disabled clusters). Provide one of the following:-
anytime(default): Maintenance can take place at any time. -
weekly_maintenance_window: Scheduled maintenance:day: Day of week, inDDDformat. The valid values areMON,TUE,WED,THU,FRI,SAT, andSUN.hour: Hour of day (UTC) inHHformat. The valid values range from1to24.
-
-
deletion_protection: Cluster protection against accidental deletion,trueorfalse.Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.
You can get the cluster ID with the list of clusters in the folder.
-
-
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.Update \ < body.json -
View the server response to make sure your request was successful.
Connection Manager
If the Connection Manager integration is not enabled for your cluster, turn on Use Connection Manager. This option is only available in the management console
The system will create the following resources for each database user:
-
Connection Manager connection containing database connection details.
-
Yandex Lockbox secret containing the user password. Storing passwords in Yandex Lockbox ensures their security.
The system will create connections and secrets for each new database user. To see all connections, select the Connections tab on the cluster page.
Viewing connection details requires the
connection-manager.viewerrole. You can use Connection Manager to configure access to connections.Note
Connection Manager and any secrets created with it are free of charge.
Manually switching the master host
In a highly available Managed Service for MySQL® cluster with multiple hosts, you can perform a failover to switch the master role from the current master host to one of its replicas. After the failover, the current master host becomes a replica for the new master.
Consider these key points when performing a failover in Managed Service for MySQL®:
- You cannot promote a cascading replica to master.
- If you do not explicitly specify the replica host name, the master will switch to the replica with the highest priority or the lowest lag.
To learn more, see Replication.
To perform a master failover:
- Go to Managed Service for MySQL.
- Click the name of your cluster and select the
Hosts tab. - Click
Switch master.- To switch the master to one of the replicas, leave the Choose master host automatically option enabled.
- To switch the master to a specific replica, disable the Choose master host automatically option and then select the replica from the drop-down list.
- Click Switch.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
Run this command:
yc managed-mysql cluster start-failover <cluster_name_or_ID> \
--host <replica_host_name>
You can get the replica host name with the list of cluster hosts, and the cluster name, with the list of clusters in the folder.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.StartFailover method, e.g., via the following cURL
request:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>:startFailover' \ --data '{ "hostName": "<host_FQDN>" }'Where
hostNameis the FQDN of the replica promoted to master.You can get the cluster ID with the list of clusters in the folder.
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService.StartFailover method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "host_name": "<host_FQDN>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.StartFailoverWhere
host_nameis the FQDN of the replica which becomes the master host.You can get the cluster ID with the list of clusters in the folder.
-
Check the server response to make sure your request was successful.
Moving a cluster
- Go to Managed Service for MySQL.
- Click
next to the cluster you want to move. - Select Move.
- Select the destination folder for your cluster.
- Click Move.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To move a cluster:
-
See the description of the CLI command for moving a cluster:
yc managed-mysql cluster move --help -
Run this command, specifying the destination folder:
yc managed-mysql cluster move <cluster_ID> \ --destination-folder-name=<destination_folder_name>You can get the cluster ID with the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
To learn how to create this file, see Creating a cluster.
-
In the Managed Service for MySQL® cluster description, edit the
folder_idvalue. If the argument does not exist, add it:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... folder_id = "<destination_folder_ID>" } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider article.
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MySQL® cluster operations:
- Creating a cluster, including by restoring it from a backup: 15 minutes.
- Updating a cluster, including the MySQL® version update: 60 minutes.
- Deleting a cluster: 15 minutes.
Operations exceeding the timeout are aborted.
How do I change these limits?
Add the timeouts section to the cluster description, such as the following:
resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.move method, e.g., via the following cURL
request:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>:move' \ --data '{ "destinationFolderId": "<folder_ID>" }'Where
destinationFolderIdis the ID of the target folder for your cluster. You can get this ID from the list of folders in the cloud.You can get the cluster ID with the list of clusters in the folder.
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService/Move method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "destination_folder_id": "<folder_ID>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.MoveWhere
destination_folder_idis the ID of the folder to which you are moving your cluster. You can get this ID from the list of folders in the cloud.You can get the cluster ID with the list of clusters in the folder.
-
Check the server response to make sure your request was successful.
Updating security groups
- Go to Managed Service for MySQL.
- Select your cluster and click Edit in the top panel.
- Under Network settings, select security groups for cluster network traffic.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To edit the list of security groups for your cluster:
-
View the description of the CLI command for updating a cluster:
yc managed-mysql cluster update --help -
Specify the required security groups in the cluster update command:
yc managed-mysql cluster update <cluster_name_or_ID> \ --security-group-ids <list_of_security_group_IDs>
-
Open the current Terraform configuration file describing your infrastructure.
To learn how to create this file, see Creating a cluster.
-
Edit the
security_group_idsvalue in the Managed Service for MySQL® cluster description:resource "yandex_mdb_mysql_cluster" "<cluster_name>" { ... security_group_ids = [<list_of_security_group_IDs>] } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider article.
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MySQL® cluster operations:
- Creating a cluster, including by restoring it from a backup: 15 minutes.
- Updating a cluster, including the MySQL® version update: 60 minutes.
- Deleting a cluster: 15 minutes.
Operations exceeding the timeout are aborted.
How do I change these limits?
Add the timeouts section to the cluster description, such as the following:
resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "securityGroupIds", "securityGroupIds": [ "<security_group_1_ID>", "<security_group_2_ID>", ... "<security_group_N_ID>" ] }'Where:
-
updateMask: Comma-separated list of settings you want to update.Here, we provide only one setting.
-
securityGroupIds: New security groups, formatted as an array.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and set it as an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "security_group_ids" ] }, "security_group_ids": [ "<security_group_1_ID>", "<security_group_2_ID>", ... "<security_group_N_ID>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Here, we provide only one setting.
-
security_group_ids: New security groups, formatted as an array.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
Warning
You may need to additionally configure security groups to connect to the cluster.