Recovering a cluster
If you have lost a ClickHouse® cluster in a project, you can recover it.
Using the CLI
spec.clickhouse.recovery supports two recovery options:
- fullRecovery: Recovery of the whole cluster from one full backup. Specify the name of the
ClickhouseBackupresource inspec.clickhouse.recovery.fullRecovery.backup.name. A good option if you have a full cluster backup. - shardsRecovery: Recovery by shards from different backups. In
spec.clickhouse.recovery.shardsRecovery.backups[], specify an element with the following fields for each shard:backup.name: Name of theClickhouseBackupresource for the shard.shard: Shard ID (e.g.,shard-1orshard-2) must matchshards[].idin the cluster specification.
List of backups: kubectl get ClickhouseBackup -n <project_name>.
-
Create the
ClickhouseClusterresource file, Here is an example:touch clickhousecluster-from-backup.yaml. -
Open the file and paste the configuration for recovery:
From one full backup (fullRecovery)By shards (shardsRecovery)Substitute into
spec.clickhouse.recovery.fullRecovery.backup.namethe name of the backup to restore the whole cluster from.apiVersion: clickhouse.stackland.yandex.cloud/v1alpha1 kind: ClickhouseCluster metadata: labels: app.kubernetes.io/name: ch-stackland-operator app.kubernetes.io/managed-by: kustomize name: ch-sample-full spec: clickhouse: version: "25.3" enableSuperuserAccess: true superuserSecretRef: name: "ch-sample-superuser" recovery: fullRecovery: backup: name: your_backup_full_name # kubectl get ClickhouseBackup -n <namespace> backup: storage: type: stackland-storage schedule: "0 0 * * * *" deltaMaxSteps: 5 --- apiVersion: v1 kind: Secret metadata: name: ch-sample-superuser type: Opaque stringData: password: "your_password" username: "your_username"For each shard, specify in
spec.clickhouse.recovery.shardsRecovery.backups[]an element withbackup.name(name of backup for the shard) andshard(shard ID). The number of elements must match the number of shards in the cluster.apiVersion: clickhouse.stackland.yandex.cloud/v1alpha1 kind: ClickhouseCluster metadata: labels: app.kubernetes.io/name: ch-stackland-operator app.kubernetes.io/managed-by: kustomize name: ch-sample-full spec: clickhouse: version: "25.3" shards: - id: "shard-1" weight: 1 settings: instances: 2 storage: # storageClass: "your-storage-class" size: 2Gi - id: "shard-2" weight: 2 settings: instances: 1 storage: # storageClass: "your-storage-class" size: 2Gi storage: # storageClass: "your-storage-class" size: 2Gi resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "1" memory: "2Gi" enableSuperuserAccess: true superuserSecretRef: name: "ch-sample-superuser" recovery: shardsRecovery: backups: - backup: name: your_backup_shard_1_name shard: "shard-1" - backup: name: your_backup_shard_2_name shard: "shard-2" keeper: instances: 3 storage: # storageClass: "your-storage-class" size: 1Gi resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "1" memory: "2Gi" backup: storage: type: stackland-storage schedule: "0 0 * * * *" --- apiVersion: v1 kind: Secret metadata: name: ch-sample-superuser type: Opaque stringData: password: "your_password" username: "your_username" -
Apply the manifest:
kubectl apply -f clickhousecluster-from-backup.yaml -n <project_name>. Optionally, you can specify the project name in themetadata.namespaceresource property and skip it in the command.
Using the management console
- If you have not opened a project yet, select one.
- In the left-hand menu, select ClickHouse® Clusters.
- Go to the Backups tab.
- In the row with the backup you need, click Restore.
- Check the cluster settings and modify them, if required:
- Click Restore.
That is it! Your cluster has been recovered and now appears in the project's cluster list.