Yandex Cloud
Search
Contact UsTry it for free
  • Customer Stories
  • Documentation
  • Blog
  • All Services
  • System Status
  • Marketplace
    • Featured
    • Infrastructure & Network
    • Data Platform
    • AI for business
    • Security
    • DevOps tools
    • Serverless
    • Monitoring & Resources
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
    • Price calculator
    • Pricing plans
  • Customer Stories
  • Documentation
  • Blog
© 2026 Direct Cursus Technology L.L.C.
Yandex Managed Service for MySQL®
  • Getting started
    • All guides
      • Information about existing clusters
      • Creating a cluster
      • Updating a cluster
      • Stopping and starting a cluster
      • Managing cluster hosts
      • Migrating hosts to a different availability zone
      • Managing backups
      • Managing cluster access
      • MySQL® version upgrade
      • Deleting a cluster
  • Access management
  • Pricing policy
  • Terraform reference
  • Monitoring metrics
  • Audit Trails events
  • Public materials
  • Release notes

In this article:

  • Changing the host class
  • Changing the disk type and increasing the storage size
  • Changing MySQL® settings
  • Changing additional cluster settings
  • Connection Manager
  • Manually switching the master host
  • Moving a cluster
  • Updating security groups
  1. Step-by-step guides
  2. Clusters
  3. Updating a cluster

Updating MySQL® cluster settings

Written by
Yandex Cloud
Updated at February 25, 2026
  • Changing the host class
  • Changing the disk type and increasing the storage size
  • Changing MySQL® settings
  • Changing additional cluster settings
    • Connection Manager
  • Manually switching the master host
  • Moving a cluster
  • Updating security groups

After creating a cluster, you can:

  • Change the host class.

  • Change the disk type and expand the storage.

  • Change MySQL® settings.

    Warning

    You cannot change MySQL® settings using SQL commands.

  • Change additional cluster settings.

  • Manually switch the master host.

  • Move the cluster to another folder.

  • Update security groups.

Learn more about other cluster updates:

  • MySQL® version upgrade.
  • Migrating cluster hosts to a different availability zone.

Changing the host classChanging 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 page and find Managed Databases.

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 will undergo a rolling update and will be unavailable for a few minutes while it updates.
  • 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.

Management console
CLI
Terraform
REST API
gRPC API
  1. Go to Managed Service for MySQL.
  2. Select your cluster and click Edit in the top panel.
  3. To change the MySQL® host class, select the one you need under Host class.
  4. 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 --folder-name or --folder-id.

To change the host class for a cluster:

  1. See the description of the CLI command for updating a cluster:

    yc managed-mysql cluster update --help
    
  2. Get the list of available host classes (the ZONE IDS column lists the availability zones you can select each class in):

    yc managed-mysql resource-preset list
    

    Result:

    +-----------+--------------------------------+-------+----------+
    |    ID     |            ZONE IDS            | CORES |  MEMORY  |
    +-----------+--------------------------------+-------+----------+
    | s1.micro  | ru-central1-a, ru-central1-b,  |     2 | 8.0 GB   |
    |           | ru-central1-d                  |       |          |
    | ...                                                           |
    +-----------+--------------------------------+-------+----------+
    
  3. Specify the relevant 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.

  1. Open the current Terraform configuration file describing your infrastructure.

    Learn how to create this file in Creating a cluster.

  2. Edit the resource_preset_id value in the resources section of your Managed Service for MySQL® cluster description:

    resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
      ...
      resources {
        resource_preset_id = "<host_class>"
        ...
      }
    }
    
  3. Validate your configuration.

    1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.

    2. Run this command:

      terraform validate
      

      Terraform will show any errors found in your configuration files.

  4. Confirm updating the resources.

    1. Run this command to view the planned changes:

      terraform plan
      

      If 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.

    2. If everything looks correct, apply the changes:

      1. Run this command:

        terraform apply
        
      2. Confirm updating the resources.

      3. Wait for the operation to complete.

For more information, see this Terraform provider guide.

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
  }
}
  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. 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 updateMask parameter 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 string 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.

  3. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. 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_mask parameter as an array of paths[] 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.Update
    

    Where:

    • update_mask: List of settings 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 from the list of clusters in your folder.

  4. Check the server response to make sure your request was successful.

Changing the disk type and increasing the storage sizeChanging 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 page and check the HDD storage capacity and SSD storage capacity lines under Managed Databases to make sure there is available quota for storage space.

Management console
CLI
Terraform
REST API
gRPC API

To change the disk type and increase the storage size for a cluster:

  1. Navigate to the Managed Service for MySQL service.

  2. Select your cluster and click Edit in the top panel.

  3. Under Storage size:

    • Select the disk type.
    • Specify the disk size.
  4. 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 --folder-name or --folder-id.

To change the disk type and increase the storage size for a cluster:

  1. See the description of the CLI command for updating a cluster:

    yc managed-mysql cluster update --help
    
  2. Specify the disk type and required storage size in the cluster update command (at least as large as disk_size in 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:

  1. Open the current Terraform configuration file describing your infrastructure.

    To learn how to create this file, see Creating a cluster.

  2. Under resources, change the disk_type_id and disk_size parameter values:

    resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
      ...
      resources {
        disk_type_id = "<disk_type>"
        disk_size    = <storage_size_in_GB>
        ...
      }
    }
    
  3. Validate your configuration.

    1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.

    2. Run this command:

      terraform validate
      

      Terraform will show any errors found in your configuration files.

  4. Confirm updating the resources.

    1. Run this command to view the planned changes:

      terraform plan
      

      If 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.

    2. If everything looks correct, apply the changes:

      1. Run this command:

        terraform apply
        
      2. Confirm updating the resources.

      3. Wait for the operation to complete.

For more information, see this Terraform provider guide.

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
  }
}
  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. 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 updateMask parameter 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 string 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.

  3. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. 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_mask parameter as an array of paths[] 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.Update
    

    Where:

    • 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 request the cluster ID with the list of clusters in the folder.

  4. Check the server response to make sure your request was successful.

Changing MySQL® settingsChanging MySQL® settings

Note

Some MySQL® settings depend on the selected host class.

Management console
CLI
Terraform
REST API
gRPC API
  1. Go to Managed Service for MySQL.
  2. Select your cluster and click Edit in the top panel.
  3. Change the MySQL® settings by clicking Settings under DBMS settings.
  4. Click Save.
  5. 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 --folder-name or --folder-id.

To change the MySQL® settings:

  1. View the description of the CLI command for updating the cluster configuration:

    yc managed-mysql cluster update-config --help
    
  2. Set the parameter values as needed.

    All supported parameters are listed in the request format for the update method, in the mysql_config_5_7 field. To specify a parameter name in the CLI call, convert its name from lowerCamelCase to snake_case format. For example, convert the logMinDurationStatement parameter from an API request to log_min_duration_statement for 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.

  1. Open the current Terraform configuration file describing your infrastructure.

    To learn how to create this file, see Creating a cluster.

  2. 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>
        ...
      }
    }
    
  3. Validate your configuration.

    1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.

    2. Run this command:

      terraform validate
      

      Terraform will show any errors found in your configuration files.

  4. Confirm resource changes.

    1. Run this command to view the planned changes:

      terraform plan
      

      If 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.

    2. If everything looks correct, apply the changes:

      1. Run this command:

        terraform apply
        
      2. Confirm updating the resources.

      3. Wait for the operation to complete.

For more information, see this Terraform provider guide.

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
  }
}
  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. 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 updateMask parameter 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 string 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 available for this parameter. 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.

  3. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. 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_mask parameter as an array of paths[] 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.Update
    

    Where:

    • update_mask: List of settings to update as an array of strings (paths[]).

      Here, we provide only one setting.

    • configSpec.mysqlConfig_<MySQL®_version>: MySQL® settings. Use a separate line for each setting; separate them by commas.

      See the method description for the list of MySQL® versions available for this parameter. See Cluster-level DBMS settings for a description and possible values for each setting.

    You can get the cluster ID from the list of clusters in your folder.

  4. Check the server response to make sure your request was successful.

For more information on updating MySQL® settings, see FAQ.

Changing additional cluster settingsChanging additional cluster settings

Management console
CLI
Terraform
REST API
gRPC API
  1. Go to Managed Service for MySQL.

  2. Select your cluster and click Edit in the top panel.

  3. 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:00 UTC.

    • 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 --folder-name or --folder-id.

To change additional cluster settings:

  1. See the description of the CLI command for updating a cluster:

    yc managed-mysql cluster update --help
    
  2. Run the following command by providing the list of settings you want 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=<scheduled_expansion_threshold_in_percent>,`
                             `emergency-usage-threshold=<immediate_expansion_threshold_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 format HH: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. Allowed values range from 7 to 60. The default value is 7.

  • --datalens-access: Enables access to the cluster from DataLens. The default value is false. 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 is false.

  • --yandexquery-access: Enables YQL queries against cluster databases from Yandex Query. This feature is at the Preview stage. The default value is false.

  • --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 is 0 (automatic expansion disabled).

      The valid values range from 0 to 100.

    • emergency-usage-threshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is 0 (automatic expansion disabled).

      The valid values range from 0 to 100.

    • 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-threshold must be greater than planned-usage-threshold.

  • --maintenance-window: Maintenance window settings (including for stopped clusters), where type is 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, or SUN.
      • hour: Hour of day (UTC), from 1 to 24.
  • --deletion-protection: Cluster protection from accidental deletion, true or false.

    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. For sessions-sampling-interval and statements-sampling-interval, possible values range from 1 to 86400 seconds.

You can get the cluster name with the list of clusters in the folder.

  1. Open the current Terraform configuration file describing your infrastructure.

    Learn how to create this file in Creating a cluster.

  2. To change the backup start time, add the backup_window_start section 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.
  3. To change the backup retention period, specify the backup_retain_period_days parameter in the cluster description:

      resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
        ...
        backup_retain_period_days = <backup_retention_period>
        ...
      }
    

    Where backup_retain_period_days is automatic backup retention period, in days. The valid values range from 7 to 60. The default value is 7.

  4. To enable access from DataLens and allow SQL queries from the management console using Yandex WebSQL, add the access section to the cluster description:

    resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
      ...
      access {
        data_lens = <true_or_false>
        web_sql   = <true_or_false>
      }
      ...
    }
    
  5. To configure automatic storage expansion, add the disk_size_autoscaling section 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 is 0 (automatic expansion disabled).

      The valid values range from 0 to 100.

    • planned_usage_threshold: Storage usage percentage threshold triggering a storage expansion during the next maintenance window. This is an optional setting. The default value is 0 (automatic expansion disabled).

      The valid values range from 0 to 100.

    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_threshold must be greater than planned_usage_threshold.

  6. To set up the maintenance window that will also apply to disabled clusters, add the maintenance_window section 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: Anytime
      • WEEKLY: On a schedule
    • day: Day of week for the WEEKLY type, i.e., MON, TUE, WED, THU, FRI, SAT, or SUN.
    • hour: UTC hour for the WEEKLY type, from 1 to 24.
  7. To activate cluster protection against accidental deletion by a user of your cloud, add the deletion_protection field set to true to the cluster description:

    resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
      ...
      deletion_protection = <protect_cluster_against_deletion>
    }
    

    Where deletion_protection is the cluster protection from accidental deletion: true or false.

    Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.

  8. To enable statistics collection for cluster performance diagnostics, add a performance_diagnostics section 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_interval and statements_sampling_interval, possible values range from 1 to 86400 seconds.

  9. Validate your configuration.

    1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.

    2. Run this command:

      terraform validate
      

      Terraform will show any errors found in your configuration files.

  10. Confirm updating the resources.

    1. Run this command to view the planned changes:

      terraform plan
      

      If 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.

    2. If everything looks correct, apply the changes:

      1. Run this command:

        terraform apply
        
      2. Confirm updating the resources.

      3. Wait for the operation to complete.

For more information, see this Terraform provider guide.

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
  }
}
  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Create a file named body.json and 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 updateMask parameter 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": "<scheduled_expansion_threshold_in_percent>",
                "emergencyUsageThreshold": "<immediate_expansion_threshold_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 string of settings you want to update.

    • configSpec: Cluster settings:

      • backupWindowStart: Backup window settings.

        In this parameter, specify the backup start time:

        • hours: Between 0 and 23 hours.
        • minutes: Between 0 and 59 minutes.
        • seconds: Between 0 and 59 seconds.
        • nanos: Between 0 and 999999999 nanoseconds.
      • backupRetainPeriodDays: Number of days to retain the cluster backup, between 7 and 60.

      • 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 values are true or false.

      • performanceDiagnostics: Statistics collection settings:

        • enabled: Enables statistics collection, true or false.
        • sessionsSamplingInterval: Session sampling interval, from 1 to 86400 seconds.
        • statementsSamplingInterval: Statement sampling interval, from 1 to 86400 seconds.
      • 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 is 0 (automatic expansion disabled).

          The valid values range from 0 to 100.

        • emergencyUsageThreshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is 0 (automatic expansion disabled).

          The valid values range from 0 to 100.

        • 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 the maintenanceWindow.

        • If you specify both thresholds, emergencyUsageThreshold must be greater than plannedUsageThreshold.

    • 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, in DDD format. The valid values are MON, TUE, WED, THU, FRI, SAT, and SUN.
        • hour: Hour of day (UTC) in HH format. The valid values range from 1 to 24.
    • deletionProtection: Cluster deletion protection, true or false.

      Even with cluster deletion protection enabled, one can still delete a user or database or connect manually and delete the database contents.

  3. 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 request the cluster ID with the list of clusters in the folder.

  4. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. Create a file named body.json and 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_mask parameter as an array of paths[] 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": "<scheduled_expansion_threshold_in_percent>",
                "emergency_usage_threshold": "<immediate_expansion_threshold_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 to update as an array of strings (paths[]).

    • config_spec: Cluster settings:

      • backup_window_start: Backup window settings.

        In this parameter, specify the backup start time:

        • hours: Between 0 and 23 hours.
        • minutes: Between 0 and 59 minutes.
        • seconds: Between 0 and 59 seconds.
        • nanos: Between 0 and 999999999 nanoseconds.
      • backup_retain_period_days: Number of days to retain the cluster backup, between 7 and 60.

      • 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 values are true or false.

      • performance_diagnostics: Statistics collection settings:

        • enabled: Enables statistics collection, true or false.
        • sessions_sampling_interval: Session sampling interval, from 1 to 86400 seconds.
        • statements_sampling_interval: Statement sampling interval, from 1 to 86400 seconds.
      • 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 is 0 (automatic expansion disabled).

          The valid values range from 0 to 100.

        • emergency_usage_threshold: Storage usage percentage threshold triggering an immediate storage expansion. This is an optional setting. The default value is 0 (automatic expansion disabled).

          The valid values range from 0 to 100.

        • 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 the maintenance_window.

        • If you specify both thresholds, emergency_usage_threshold must be greater than planned_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, in DDD format. The valid values are MON, TUE, WED, THU, FRI, SAT, and SUN.
        • hour: Hour of day (UTC) in HH format. The valid values range from 1 to 24.
    • deletion_protection: Cluster deletion protection, true or false.

      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 from the list of clusters in your folder.

  4. 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
    
  5. Check the server response to make sure your request was successful.

Connection ManagerConnection Manager

If you cluster has no integration with Connection Manager, enable Use Connection Manager. You can only do it in the management console.

The following resources will be created for each database user:

  • Connection Manager connection containing database connection details.

  • Yandex Lockbox secret containing the user password. Yandex Lockbox provides secure storage for passwords.

    The connection and secret will be created for each new database user. To view all connections, open the Connections tab on the cluster page.

    You need the connection-manager.viewer role to view the connection details. 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 hostManually 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:

Management console
CLI
REST API
gRPC API
  1. Navigate to the Managed Service for MySQL service.
  2. Click the name of your cluster and select the Hosts tab.
  3. 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.
  4. 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 --folder-name or --folder-id.

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.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. 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 hostName is the FQDN of the replica promoted to master.

    You can get the cluster ID from the list of clusters in your folder.

  3. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. 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.StartFailover
    

    Where host_name is the FQDN of the replica which becomes the master host.

    You can get the cluster ID from the list of clusters in your folder.

  4. Check the server response to make sure your request was successful.

Moving a clusterMoving a cluster

Management console
CLI
Terraform
REST API
gRPC API
  1. Navigate to the Managed Service for MySQL service.
  2. Click next to the cluster you want to move.
  3. Select Move.
  4. Select the destination folder for your cluster.
  5. 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 --folder-name or --folder-id.

To move a cluster:

  1. See the description of the CLI command for moving a cluster:

    yc managed-mysql cluster move --help
    
  2. Specify the destination folder in the cluster move command:

    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.

  1. Open the current Terraform configuration file describing your infrastructure.

    To learn how to create this file, see Creating a cluster.

  2. In the Managed Service for MySQL® cluster description, edit or add the folder_id parameter value:

    resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
      ...
      folder_id = "<destination_folder_ID>"
    }
    
  3. Validate your configuration.

    1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.

    2. Run this command:

      terraform validate
      

      Terraform will show any errors found in your configuration files.

  4. Confirm updating the resources.

    1. Run this command to view the planned changes:

      terraform plan
      

      If 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.

    2. If everything looks correct, apply the changes:

      1. Run this command:

        terraform apply
        
      2. Confirm updating the resources.

      3. Wait for the operation to complete.

For more information, see this Terraform provider guide.

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
  }
}
  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. 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 destinationFolderId is the ID of the target folder for your cluster. You can get this ID with the list of folders in the cloud.

    You can get the cluster ID with the list of clusters in the folder.

  3. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. 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.Move
    

    Where destination_folder_id is the ID of the folder to which you are moving your cluster. You can get this ID with the list of folders in the cloud.

    You can get the cluster ID from the list of clusters in your folder.

  4. Check the server response to make sure your request was successful.

Updating security groupsUpdating security groups

Management console
CLI
Terraform
REST API
gRPC API
  1. Go to Managed Service for MySQL.
  2. Select your cluster and click Edit in the top panel.
  3. Under Network settings, select the 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 --folder-name or --folder-id.

To edit the list of security groups for your cluster:

  1. See the description of the CLI command for updating a cluster:

    yc managed-mysql cluster update --help
    
  2. Specify the security groups in the cluster update command:

    yc managed-mysql cluster update <cluster_name_or_ID> \
      --security-group-ids <list_of_security_group_IDs>
    
  1. Open the current Terraform configuration file describing your infrastructure.

    To learn how to create this file, see Creating a cluster.

  2. Edit the security_group_ids parameter in the Managed Service for MySQL® cluster description:

    resource "yandex_mdb_mysql_cluster" "<cluster_name>" {
      ...
      security_group_ids = [<list_of_security_group_IDs>]
    }
    
  3. Validate your configuration.

    1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.

    2. Run this command:

      terraform validate
      

      Terraform will show any errors found in your configuration files.

  4. Confirm updating the resources.

    1. Run this command to view the planned changes:

      terraform plan
      

      If 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.

    2. If everything looks correct, apply the changes:

      1. Run this command:

        terraform apply
        
      2. Confirm updating the resources.

      3. Wait for the operation to complete.

For more information, see this Terraform provider guide.

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
  }
}
  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. 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 updateMask parameter 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 string 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.

  3. Check the server response to make sure your request was successful.

  1. Get an IAM token for API authentication and place it in an environment variable:

    export IAM_TOKEN="<IAM_token>"
    
  2. Clone the cloudapi repository:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Below, we assume that the repository contents reside in the ~/cloudapi/ directory.

  3. 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_mask parameter as an array of paths[] 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.Update
    

    Where:

    • update_mask: List of settings 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 from the list of clusters in your folder.

  4. Check the server response to make sure your request was successful.

Warning

You may need to additionally configure security groups to connect to the cluster.

Was the article helpful?

Previous
Creating a cluster
Next
Stopping and starting a cluster
© 2026 Direct Cursus Technology L.L.C.