Managing Yandex StoreDoc cluster hosts
You can add and remove cluster hosts, resync the hosts, and manage Yandex StoreDoc settings for individual clusters. Learn how to move your cluster hosts to a different availability zone in this guide.
Getting a list of cluster hosts
- Navigate to the folder dashboard
and select Yandex StoreDoc. - Click the name of the Yandex StoreDoc cluster.
- Select the Hosts tab.
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 get the list of Yandex StoreDoc cluster hosts, run this command:
yc managed-mongodb host list \
--cluster-name <cluster_name>
Result:
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| NAME | CLUSTER ID | TYPE | SHARD NAME | ROLE | HEALTH | ZONE ID | PUBLIC IP |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| rc1b...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01 | PRIMARY | ALIVE | ru-central1-b | false |
| rc1a...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01 | SECONDARY | ALIVE | ru-central1-a | false |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
You can get the Yandex StoreDoc cluster name with the list of clusters in the folder.
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.ListHosts method, e.g., via the following cURL
request:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<cluster_ID>/hosts'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 put it in 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.ListHosts 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.ListHostsYou can get the cluster ID with the list of clusters in the folder.
-
View the server response to make sure your request was successful.
Adding a host
The number of hosts in Yandex StoreDoc clusters is limited by the CPU and RAM quotas available to DB clusters in your cloud. To check the resources currently in use, open the Quotas
You can add different types of hosts to a Yandex StoreDoc cluster. Their number depends on the sharding type:
| Sharding type | MONGOD | MONGOINFRA | MONGOS | MONGOCFG |
|---|---|---|---|---|
| No sharding | ⩾ 1 | — | — | — |
| Standard | ⩾ 1 | ⩾ 3 | — | — |
| Advanced | ⩾ 1 | — | ⩾ 2 | ⩾ 3 |
To add a host to your Yandex StoreDoc cluster:
- Navigate to the folder dashboard
and select Yandex StoreDoc. - Click the name of your Yandex StoreDoc cluster and open the Hosts tab.
- Click Create host.
- Specify the following host settings:
-
Subnet (if the required subnet is not on the list, create it).
-
Select Public access to make the host accessible from outside Yandex Cloud, if required.
-
Host type and shard name, if sharding is enabled for the Yandex StoreDoc cluster.
- Click Save.
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 add a host to your Yandex StoreDoc cluster:
-
To pick a subnet for your new host, get the list of Yandex StoreDoc cluster subnets:
yc vpc subnet listResult:
+----------------------+-----------+-----------------------+---------------+------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +----------------------+-----------+-----------------------+---------------+------------------+ | b0cl69a2b4c6******** | default-d | enp6rq72rndgr******** | ru-central1-d | [172.16.0.0/20] | | e2lkj9qwe762******** | default-b | enp6rq72rndgr******** | ru-central1-b | [10.10.0.0/16] | | e9b0ph42bn96******** | a-2 | enp6rq72rndgr******** | ru-central1-a | [172.16.32.0/20] | | e9b9v22r88io******** | default-a | enp6rq72rndgr******** | ru-central1-a | [172.16.16.0/20] | +----------------------+-----------+-----------------------+---------------+------------------+If the required subnet is not on the list, create it.
-
See the description of the CLI command for adding hosts:
yc managed-mongodb host add --help -
Run this command to add a host:
yc managed-mongodb host add \ --cluster-name <cluster_name> \ --host zone-id=<availability_zone>,` `subnet-id=<subnet_ID>,` `assign-public-ip=<public_access>,` `hidden=<hide_host>,` `secondary-delay-secs=<replica_lag_in_seconds>,` `priority=<host_priority>Where:
--cluster-name: Cluster name. You can get it with the list of clusters in the folder.--host: Host settings:zone-id: Availability zone.subnet-id: Subnet ID. You need to specify it if the availability zone contains more than one subnet; otherwise, Yandex StoreDoc will automatically select the only subnet there is.assign-public-ip: Internet access to the host via a public IP address,trueorfalse.hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondary-delay-secs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a master.
Yandex StoreDoc will start the host addition process.
To add a host to your Yandex StoreDoc cluster:
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
Add the following to the Yandex StoreDoc cluster description:
- Resources corresponding to the sharding type, if you are adding a host to a sharded cluster:
resources_mongoinfrafor standard sharding.resources_mongosandresources_mongocfgfor advanced sharding.
hostblock.
resource "yandex_mdb_mongodb_cluster" "<cluster_name>" { ... resources_mongod { resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } resources_mongoinfra { # Add for standard sharding. resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } resources_mongos { # Add for advanced sharding. resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } resources_mongocfg { # Add for advanced sharding. resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } host { role = "<replica_type>" zone_id = "<availability_zone>" subnet_id = "<subnet_ID>" assign_public_ip = <public_access> shard_name = "<shard_name>" type = "<host_type>" host_parameters { hidden = <hide_host> secondary_delay_secs = <replica_lag_in_seconds> priority = <host_priority> } ... } }Where:
host: Host settings:role: Replica type (PRIMARYorSECONDARY).zone_id: Availability zone.subnet_id: ID of the subnet in the selected availability zone.assign_public_ip: Public access to the host,trueorfalse.shard_name: Shard name in a sharded cluster.type: Host type in a sharded cluster,MONGOD,MONGOINFRA,MONGOS, orMONGOCFG.host_parameters: Additional host parameters:hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondary_delay_secs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a master.
- Resources corresponding to the sharding type, if you are adding a host to a sharded cluster:
-
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 guide.
Timeouts
The Terraform provider sets the following timeouts for Yandex StoreDoc cluster operations:
- Creating a cluster, including by restoring one from a backup: 30 minutes.
- Editing a cluster: 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_mongodb_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # An hour and a half
update = "2h" # Two hours
}
}
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.AddHosts 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-mongodb/v1/clusters/<cluster_ID>/hosts:batchCreate' \ --data '{ "hostSpecs": [ { "zoneId": "<availability_zone>", "subnetId": "<subnet_ID>", "assignPublicIp": <public_access_to_host>, "type": "<host_type>", "shardName": "<shard_name>", "hidden": <hide_host>, "secondaryDelaySecs": "<replica_lag_in_seconds>", "priority": "<host_priority>", "tags": "<host_tags>" } ] }'Where
hostSpecssets the host parameters:zoneId: Availability zone.subnetId: Subnet ID.assignPublicIp: Internet access to the host via a public IP address,trueorfalse.type: Host type in a sharded cluster,MONGOD,MONGOINFRA,MONGOS, orMONGOCFG. For a non-sharded cluster, useMONGOD.shardName: Shard name in a sharded cluster.hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondaryDelaySecs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: *hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondaryDelaySecs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a master.tags: Host tags.
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 put it in 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.AddHosts 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "host_specs": [ { "zone_id": "<availability_zone>", "subnet_id": "<subnet_ID>", "assign_public_ip": <public_access_to_host>, "type": "<host_type>", "shard_name": "<shard_name>", "hidden": <hide_host>, "secondary_delay_secs": "<replica_lag_in_seconds>", "priority": "<host_priority>", "tags": "<host_tags>" } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.AddHostsWhere
host_specssets the host parameters:zone_id: Availability zone.subnet_id: Subnet ID.assign_public_ip: Internet access to the host via a public IP address,trueorfalse.type: Host type in a sharded cluster,MONGOD,MONGOINFRA,MONGOS, orMONGOCFG. For a non-sharded cluster, useMONGOD.shard_name: Shard name in a sharded cluster.hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondaryDelaySecs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a master.tags: Host tags.
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
If you cannot connect to the host you added, check that the Yandex StoreDoc cluster security group is configured correctly for the host's subnet.
Updating a host
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 update the cluster host’s settings, run the following command:
yc managed-mongodb host update \
--cluster-name <cluster_name> \
--host hostname=<host_name>,`
`assign-public-ip=<public_access_to_host>,`
`hidden=<hide_host>,`
`secondary-delay-secs=<replica_lag_in_seconds>,`
`priority=<host_priority>
Where:
--cluster-name: Cluster name. You can get it with the list of clusters in the folder.--host: Host settings:hostname: Name of the host you are editing. You can get it with the list of hosts in the cluster.assign-public-ip: Internet access to the host via a public IP address,trueorfalse.hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondary-delay-secs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a master.
To change the cluster host settings:
-
Open the current Terraform configuration file describing your infrastructure.
For more information about creating this file, see Creating clusters.
For a complete list of configurable Managed Service for PostgreSQL cluster fields, refer to the Terraform provider guides.
-
In the Managed Service for PostgreSQL cluster description, change the attributes of the
hostblock referring to the host you want to update.resource "yandex_mdb_mongodb_cluster" "<cluster_name>" { ... host { assign_public_ip = <public_access_to_host> host_parameters { hidden = <hide_host> secondary_delay_secs = <replica_lag_in_seconds> priority = <host_priority> } } }
Where:
assign_public_ip: Internet access to the host via a public IP address,trueorfalse.host_parameters: Additional host parameters:hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondary_delay_secs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a master.
-
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.
-
Timeouts
The Terraform provider sets the following timeouts for Yandex StoreDoc cluster operations:
- Creating a cluster, including by restoring one from a backup: 30 minutes.
- Editing a cluster: 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the
timeoutsblock to the cluster description, for example:resource "yandex_mdb_mongodb_cluster" "<cluster_name>" { ... timeouts { create = "1h30m" # An hour and a half update = "2h" # Two hours } } -
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.updateHosts 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 POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<cluster_ID>/hosts:batchUpdate' \ --data '{ "updateHostSpecs": [ { "updateMask": "hostName,assignPublicIp,hidden,secondaryDelaySecs,priority", "hostName": "<host_name>", "assignPublicIp": <public_access_to_host>, "hidden": <hide_host>, "secondaryDelaySecs": "<replica_lag_in_seconds>", "priority": "<host_priority>" } ] }'Where
updateHostSpecssets the host parameters:updateMask: Comma-separated string of settings you want to update.hostName: Name of the host you are editing. You can get it with the list of hosts in the cluster.assignPublicIp: Internet access to the host via a public IP address,trueorfalse.hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondaryDelaySecs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a 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 put it in 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.UpdateHosts 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_host_specs": [ { "update_mask": { "paths": [ "assign_public_ip", "hidden", "secondary_delay_secs", "priority" ] }, "host_name": "<host_name>", "assign_public_ip": <public_access_to_host>, "hidden": <hide_host>, "secondary_delay_secs": "<replica_lag_in_seconds>", "priority": "<host_priority>" } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.UpdateHostsWhere
update_host_specssets the host parameters:update_mask: Comma-separated string of settings you want to update.host_name: Name of the host you are editing. You can get it with the list of hosts in the cluster.assign_public_ip: Internet access to the host via a public IP address,trueorfalse.hidden: Hide host,trueorfalse. If the host is hidden, only direct connections will be able to read from it (for example, to make backups from it without adding load to the cluster).secondary_delay_secs: Replica's lag behind the master in seconds. It can be useful for data recovery in case of invalid operations.priority: Host priority for assignment as a 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.
Deleting a host
You can remove a MONGOD host from a Yandex StoreDoc cluster if it is not the only host in it. To replace the only host, first create a new host and then delete the old one.
If the host you are removing is a primary one, Yandex StoreDoc will automatically select a new primary replica.
From a sharded Yandex StoreDoc cluster, you may remove the MONGOS, MONGOCFG, or MONGOINFRA hosts that exceed the minimum number needed for sharding.
To remove a host from a Yandex StoreDoc cluster:
- Navigate to the folder dashboard
and select Yandex StoreDoc. - Click the name of the Yandex StoreDoc cluster you need and select the Hosts tab.
- Click
in the host's row and select Delete. - In the window that opens, check Delete host and click Confirm.
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 delete a host from the Yandex StoreDoc cluster, run this command:
yc managed-mongodb host delete <host_name>
--cluster-name <cluster_name>
You can get the host name with a list of Yandex StoreDoc cluster hosts and the cluster name with a list of clusters in the folder.
To remove a host from a Yandex StoreDoc cluster:
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
Delete the relevant
hostsection from the Yandex StoreDoc cluster description. -
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.
-
-
Type
yesand press Enter.-
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 guide.
Timeouts
The Terraform provider sets the following timeouts for Yandex StoreDoc cluster operations:
- Creating a cluster, including by restoring one from a backup: 30 minutes.
- Editing a cluster: 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_mongodb_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # An hour and a half
update = "2h" # Two hours
}
}
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.DeleteHosts 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-mongodb/v1/clusters/<cluster_ID>/hosts:batchDelete' \ --data '{ "hostNames": [ "<host_name>" ] }'Where
hostNamesis an array with the names of hosts to delete. To find out the host name, get a list of hosts in the cluster.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 put it in 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.DeleteHosts 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "host_names": [ "<host_name>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.DeleteHostsWhere
host_namesis an array with the names of hosts to delete. To find out the host name, get a list of hosts in the cluster.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.
Starting host resync
To resync a host with other replicas in the Yandex StoreDoc cluster or shard, run forced resync. The operation can be applied to only one MONGOD host at a time and only for Yandex StoreDoc clusters with more than two replicas, regardless of the host class and type. Resync also lets you remove the collections and documents that were marked as deleted from the host's storage.
During this operation:
-
The host stops accepting write requests. If the host was a
PRIMARYreplica, Yandex StoreDoc will try to make it aSECONDARYone. If the operation fails, it is aborted. -
The Yandex StoreDoc instance on the host stops, and all data is deleted.
-
The Yandex StoreDoc instance restarts and downloads data from replica hosts again.
-
Once the host has synced with other replicas in the Yandex StoreDoc cluster, it becomes a secondary replica.
Note
- During syncing, the host cannot fully respond to any request, because it has only a portion of the Yandex StoreDoc cluster data.
- Estimated sync rate: 300 GB per day or more.
To forcibly resync a host:
- Navigate to the folder dashboard
and select Yandex StoreDoc. - Click the name of the Yandex StoreDoc cluster you need and select the Hosts tab.
- Click
in the host's row and select Resynchronize.
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 forcibly resync a host, run the following command:
yc managed-mongodb hosts resetup <host_name>
--cluster-name <cluster_name>
You can get the host name with a list of hosts in the folder. You can get the Yandex StoreDoc cluster name with the list of clusters in the folder.
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Use the Cluster.ResetupHosts method and send the following request, e.g., via cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<cluster_ID>:resetupHosts' \ --data '{ "hostNames": [ "<host_name>" ] }'Where
hostNamesis an array with the names of hosts to re-sync. To find out the host name, get a list of hosts in the cluster.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 put it in 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. -
Use the ClusterService.ResetupHosts call and send the following request, e.g., via gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "host_names": [ "<host_name>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.ResetupHostsWhere
host_namesis an array with the names of hosts to re-sync. To find out the host name, get a list of hosts in the cluster.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.
Restarting a host
You can manually restart Yandex StoreDoc cluster hosts.
Restarting a host may make a Yandex StoreDoc cluster or shard temporarily unavailable:
- If there is a single host in the cluster.
- If the host is the primary replica.
When the primary replica is restarted, there is no automatic switch-over. To make sure the Yandex StoreDoc cluster remains available, switch the cluster's primary replica before it is restarted.
Note
You can only restart one host at a time.
To restart a host:
- Navigate to the folder dashboard
and select Yandex StoreDoc. - Click the name of the Yandex StoreDoc cluster you need and select the Hosts tab.
- Click
in the host's row and select Restart. - Confirm the host restart.
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 restart a host, run the command:
yc managed-mongodb hosts restart <host_name> \
--cluster-name <cluster_name>
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.RestartHosts 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-mongodb/v1/clusters/<cluster_ID>:restartHosts' \ --data '{ "hostNames": [ "<host_name>" ] }'Where
hostNamesis an array with the names of hosts to restart. To find out the host name, get a list of hosts in the cluster.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 put it in 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.RestartHosts 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "host_names": [ "<host_name>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.RestartHostsWhere
host_namesis an array with the names of hosts to restart. To find out the host name, get a list of hosts in the cluster.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.