Managing shards in a ClickHouse® cluster
You can enable sharding for a cluster as well as add and configure individual shards.
Enabling sharding
Managed Service for ClickHouse® clusters are created with one shard. To start sharding data, add one or more shards and create a distributed table.
Creating a shard
The number of shards in Managed Service for ClickHouse® 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
- In the management console
, go to the folder page and select Managed Service for ClickHouse. - Click the cluster name and go to the Shards tab.
- Click Create shard.
- Specify the shard parameters:
- Name and weight
- To copy the schema from a random replica of one of the shards to the hosts of the new shard, select the Copy the data schema option.
- Required number of hosts
- Click Create shard.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To create a shard, run the command below (not all the supported parameters are listed):
yc managed-clickhouse shards add <new_shard_name> \
--cluster-name=<cluster_name> \
--host zone-id=<availability_zone>,`
`subnet-name=<subnet_name>
Where:
-
<new_shard_name>
: Must be unique within the cluster.It may contain Latin letters, numbers, hyphens, and underscores. The maximum length is 63 characters.
-
--cluster-name
: Cluster name.You can request the cluster name with a list of clusters in the folder.
-
--host
: Host parameters:zone-id
: Availability zone.subnet-name
: Name of the subnet.
Note
Terraform does not allow specifying shard weight.
-
Open the current Terraform configuration file with an infrastructure plan.
For more information about creating this file, see Creating clusters.
-
Add the
CLICKHOUSE
typehost
block with theshard_name
field filled to the Managed Service for ClickHouse® cluster description or change existing hosts:resource "yandex_mdb_clickhouse_cluster" "<cluster_name>" { ... host { type = "CLICKHOUSE" zone = "<availability_zone>" subnet_id = yandex_vpc_subnet.<subnet_in_availability_zone>.id shard_name = "<shard_name>" } }
-
Make sure the settings are correct.
-
Using the command line, navigate to the folder that contains the up-to-date Terraform configuration files with an infrastructure plan.
-
Run the command:
terraform validate
If there are errors in the configuration files, Terraform will point to them.
-
-
Confirm updating the resources.
-
Run the command to view planned changes:
terraform plan
If the resource configuration descriptions are correct, the terminal will display a list of the resources to modify and their parameters. This is a test step. No resources are updated.
-
If you are happy with the planned changes, apply them:
-
Run the command:
terraform apply
-
Confirm the update of resources.
-
Wait for the operation to complete.
-
-
For more information, see the Terraform provider documentation
Time limits
A Terraform provider sets the timeout for Managed Service for ClickHouse® cluster operations:
- Creating a cluster, including by restoring one from a backup: 60 minutes.
- Editing a cluster: 90 minutes.
- Deleting a cluster: 30 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_clickhouse_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
To create a shard, use the addShard REST API method for the Cluster resource or the ClusterService/AddShard gRPC API call.
To copy the data schema from a random replica of one of the shards to the hosts of the new shard, include the copySchema
parameter set to true
in the request.
Warning
Use the copy data schema option only if the schema is the same on all cluster shards.
Listing shards in a cluster
- In the management console
, go to the folder page and select Managed Service for ClickHouse. - Click the name of the cluster you need and select the Shards tab.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To get a list of shards in a cluster, run the following command:
yc managed-clickhouse shards list --cluster-name=<cluster_name>
You can request the cluster name with a list of clusters in the folder.
To get a list of cluster shards, use the listShards REST API method for the Cluster resource or the ClusterService/ListShards gRPC API call.
Changing a shard
You can change the shard weight as well as host class and storage size.
- In the management console
, go to the folder page and select Managed Service for ClickHouse. - Click the name of the cluster you need and select the Shards tab.
- Click
and select Edit.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To change a shard in the cluster:
-
View a description of the CLI's shard change command:
yc managed-clickhouse shards update --help
-
Start an operation, e.g., changing shard weight:
yc managed-clickhouse shards update <shard_name> \ --cluster-name=<cluster_name> \ --weight=<shard_weight>
Where:
-
<shard_name>
: Can be requested with a list of shards in the cluster. -
--cluster-name
: Cluster name.You can request the cluster name with a list of clusters in the folder.
-
--weight
: Shard weight. The minimum value is0
.
When the operation is complete, the CLI displays information about the changed shard.
-
To update a shard, use the updateShard REST API method for the Cluster resource or the ClusterService/UpdateShard gRPC API call and provide the following in the request:
- Cluster ID in the
clusterId
parameter. To find out the cluster ID, get a list of clusters in the folder. - Shard name in the
shardName
parameter. - Shard settings in the
configSpec
parameter. - List of settings to update, in the
updateMask
parameter.
Warning
This API method overrides all parameters of the object being modified that were not explicitly passed in the request to the default values. To avoid this, list the settings you want to change in the updateMask
parameter (one line separated by commas).
Deleting a shard
You can delete a shard from a ClickHouse® cluster in case:
- It is not the only shard.
- It is not the only shard in a shard group.
When you delete a shard, all tables and data that are saved on that shard are deleted.
- In the management console
, go to the folder page and select Managed Service for ClickHouse. - Click the cluster name and open the Shards tab.
- Click
in the host row and select Delete.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To delete a shard from the cluster, run:
yc managed-clickhouse shards delete <shard_name> \
--cluster-name=<cluster_name>
You can request the shard name with a list of cluster shards and the cluster name with a list of clusters in a folder.
-
Open the current Terraform configuration file with an infrastructure plan.
For more information about creating this file, see Creating clusters.
-
Remove the
host
section with the shard description from the Managed Service for ClickHouse® cluster description. -
Make sure the settings are correct.
-
Using the command line, navigate to the folder that contains the up-to-date Terraform configuration files with an infrastructure plan.
-
Run the command:
terraform validate
If there are errors in the configuration files, Terraform will point to them.
-
-
Type
yes
and press Enter.-
Run the command to view planned changes:
terraform plan
If the resource configuration descriptions are correct, the terminal will display a list of the resources to modify and their parameters. This is a test step. No resources are updated.
-
If you are happy with the planned changes, apply them:
-
Run the command:
terraform apply
-
Confirm the update of resources.
-
Wait for the operation to complete.
-
-
For more information, see the Terraform provider documentation
Time limits
A Terraform provider sets the timeout for Managed Service for ClickHouse® cluster operations:
- Creating a cluster, including by restoring one from a backup: 60 minutes.
- Editing a cluster: 90 minutes.
- Deleting a cluster: 30 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_clickhouse_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
To delete a shard, use the deleteShard REST API method for the Cluster resource or the ClusterService/DeleteShard gRPC API call.
ClickHouse® is a registered trademark of ClickHouse, Inc