# Managed Backups in CockroachDB Standard Clusters

Managed backups are automated backups of CockroachDB Cloud clusters that are stored by Cockroach Labs in cloud storage. By default, Cockroach Labs takes and retains managed backups in all Cloud clusters. In Standard and Advanced clusters, you can adjust the default managed backup settings to meet your organization's disaster recovery requirements.

This page describes managed backups in Standard clusters. You can configure the following:

- The frequency of the backups to meet recovery point objective (RPO) requirements.
- The retention of the backups to set how long Cockroach Labs retains the backups.

Note:

In addition to managed backups, you can take manual backups to your own storage bucket with self-managed backups. Refer to the Take and Restore Self-Managed Backups page.

## Managed backup settings

Note:

Configurable managed backup settings are available in all supported versions of CockroachDB on Standard and Advanced clusters.

Standard clusters take a combination of full and incremental backups in order to meet the set frequency. The type of managed backup the cluster takes is not configurable. Each incremental backup is dependent on the last full backup, which has an effect on the managed backups that you can restore in the set retention period.

Full backups in the cluster will be deleted when they reach the set retention period. At this point, any incremental backups dependent on the deleted full backup will also be deleted. The Cloud Console will not list any backups that are beyond the set retention period, or incremental backups that cannot be restored.

For instructions on how to view and configure managed backup settings, use one of the following:

- Cloud Console.
- Cloud API.
- CockroachDB Cloud Terraform provider.

Following a change to the backup frequency or retention setting, the cluster will take a full backup immediately, which may impact CPU usage on the cluster. If you are disabling managed backups, the cluster will not take a backup following the change.

### Frequency

You can configure how frequently Cockroach Labs takes backups, which will determine the cluster's RPO.

You can set backup frequency to one of the following options:

- 5 minutes
- 10 minutes
- 15 minutes
- 30 minutes
- 1 hour (default)
- 4 hours
- 24 hours

### Retention

You can set your retention duration once. After you have adjusted the retention, the duration will only apply to new backups. The available retention options are:

- 2 days
- 7 days
- 30 days (default)
- 90 days
- 365 days

You'll be able to modify the retention setting once for a cluster. To modify the setting again, contact the Cockroach Labs Support team.

For details on the storage costs of managed backups, refer to the Understand CockroachDB Cloud Costs page.

When a cluster is deleted, Cockroach Labs will retain the managed backups for for the configured retention time, after which the backups will be deleted.

If a customer’s agreement with Cockroach Labs has terminated, all managed backups will be retained for a maximum of 30 days and then deleted. If a backup's retention time was set to less than 30 days, Cockroach Labs will retain the managed backups for the configured retention time, after which the backups will be deleted.

To restore a backup from a deleted cluster, you must contact the Cockroach Labs Support team.

## Upgrades and downgrades

If you have upgraded from a Basic cluster to a Standard cluster, the existing backup schedules will still apply, but you can then configure the frequency and retention of future managed backups in the Standard cluster.

If you have downgraded from a Standard cluster to a Basic cluster, existing managed backups will be retained for the configured retention duration. The default managed backups in Basic clusters will be taken every 24 hours and have a 30-day retention.

## Considerations

- Every backup will be stored entirely in a single region, which is chosen at random from the list of cluster regions at the time of cluster creation. This region will be used indefinitely to store backups.
- You can perform a cross-cluster restore across Advanced clusters that belong to the same organization. However, this cross-cluster restore is not supported for Standard and Basic clusters.
- You cannot restore a backup of a multi-region database into a single-region database.
- For details on managed backups and enabling CMEK in Advanced clusters, refer to Backup and restore operations on a cluster with CMEK.

### Required permissions to restore managed backups

To restore a managed backup successfully in CockroachDB Cloud, you must have the appropriate permissions on both the source and destination clusters:

- You must have either the Cluster Admin or Cluster Operator role on the destination cluster, or at the organization level. Without one of these roles, the restore job will fail.
- You must also have either the Cluster Admin or Cluster Operator role on the source cluster (the cluster from which the backup was taken), or at the organization level. If you do not have the required permissions on the source cluster, the restore will fail.

Note:

Organization-level permissions take precedence over cluster-specific permissions. If you have the appropriate role at the organization level, you are authorized to perform restore operations on all clusters within that organization.

## Cloud Console

### View backups

Click on Backup and Restore in the Data section of the left-side navigation to access the Backup Recovery page.

This page displays a list of your cluster backups. Use the calendar drop-down to view all backups taken on a certain date.

For each backup, the following details display:

- Data From: The date and time the backup was taken.
- Status: The backup's status, `In Progress` or `Complete`.
- Expires In: The remaining number of days Cockroach Labs will retain the backup.
- Restore: Restore a particular cluster backup, click Restore in the corresponding row.

### Modify backup settings

Note:

Following a change to the backup frequency or retention setting, the cluster will take a full backup immediately, which may impact CPU usage on the cluster. If you are disabling managed backups, the cluster will not take a backup following the change.

Before modifying cluster backup settings, review details on backup settings for Standard and Advanced clusters.

Click on Settings and the Backup Settings module will open.

The Enable backups switch allows you to enable or disable backups.

To modify the frequency of backups, click on the dropdown under Schedule backups every. This will display the following options to select:

- 5 minutes
- 10 minutes
- 15 minutes
- 30 minutes
- 1 hour (default)
- 4 hours
- 24 hours

To modify the retention of backups, click on Retain backups for. This will display the following options to select:

- 2 days
- 7 days
- 30 days (default)
- 90 days
- 365 days

You'll be able to modify the retention setting once for a cluster. To modify the setting again, contact the Cockroach Labs Support team.

### Restore a cluster

Note:

Before a cluster can be restored from a managed backup, the destination cluster must be completely wiped of data. A cluster restore job fails if the destination cluster contains any databases/schemas/tables.

Performing a restore will cause your cluster to be unavailable for the duration of the restore. All current data is deleted, and the cluster will be restored to the state it was in at the time of the backup.

To restore a cluster:

1. Find the cluster backup on the Backup Recovery page.

2. Click Restore for the cluster you want to restore.

   The Restore cluster module displays with backup details.

3. You can restore a backup to the same cluster.

   Note:

   If you need to restore data into a new or different cluster, use self-managed backups or contact support.

4. Click Restore.

## Cloud API

You can use the CockroachDB Cloud API to view and modify managed backup settings, view managed backups, or restore clusters from a managed backup.

Note:

The service account associated with the secret key must have the Cluster Admin role.

### Get information on backup settings

To retrieve information about a specific cluster, make a `GET` request to the `/v1/clusters/{cluster_id}/backups-config` endpoint.

    curl --request GET \
    --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/backups-config \
    --header "Authorization: Bearer {secret_key}"

Set the following:

- `{cluster_id}` is the unique ID of the cluster. This ID is written in a UUID format similar to `f78b7feb-b6cf-4396-9d7f-494982d7d81e` and is returned by a GET request against the `/v1/clusters` endpoint. You can also find the cluster ID in the Cloud Console, in the URL of the single cluster overview page: `https://cockroachlabs.cloud/cluster/{your_cluster_id}/overview`.
- `{secret_key}` is your API key. Refer to API Access for more details.

If the request is successful, the API will return details about the managed backup settings:

    {
      "enabled": true,
      "retention_days": 30,
      "frequency_minutes": 240
    }

- `{enabled}` shows whether managed backups are enabled or disabled.
- `{frequency_minutes}` is how often the managed backup will run in minutes.
- `{retention_days}` is the number of days Cockroach Labs will retain the managed backup in storage.

### Modify backup settings on a cluster

Note:

Following a change to the backup frequency or retention setting, the cluster will take a full backup immediately, which may impact CPU usage on the cluster. If you are disabling managed backups, the cluster will not take a backup following the change.

Before modifying cluster backup settings, review details on backup settings for Standard and Advanced clusters.

To configure the frequency and retention of managed backups, send a `PUT` request to the `/v1/clusters/{cluster_id}/backups-config` endpoint.

    curl --request PUT \
    --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/backups-config \
    --header "Authorization: Bearer {secret_key}" \
    --data '{"enabled": true, "frequency_minutes": 30, "retention_days": 2}'

Set the following:

- `{cluster_id}` is the unique ID of the cluster. This ID is written in a UUID format similar to `f78b7feb-b6cf-4396-9d7f-494982d7d81e` and is returned by a GET request against the `/v1/clusters` endpoint. You can also find the cluster ID in the Cloud Console, in the URL of the single cluster overview page: `https://cockroachlabs.cloud/cluster/{your_cluster_id}/overview`.
- `{enabled}` controls whether managed backups are enabled or disabled. If you are disabling managed backups, you cannot set backup frequency or retention. Possible values are: `true`, `false`.
- `{frequency_minutes}` determines how often the managed backup will run in minutes. Possible values are: `5`, `10`, `15`, `30`, `60`, `240` (4 hours), `1440` (24 hours).

- `{retention_days}` sets the number of days Cockroach Labs will retain the managed backup in storage. You can change `retention_days` for the cluster once (whether in the Cloud API or Cloud Console). Possible values are: `2`, `7`, `30`, `90`, `365`.

  If `{retention_days}` has previously been modified (in the Cloud API or Cloud Console), you receive the message "cluster already has a retention policy set, open a support ticket to change it". To modify the setting again, contact the Cockroach Labs Support team.

- `{secret_key}` is your API key. Refer to API Access for more details.

If the request is successful, the client recieves an empty HTTP 200 OK status response.

### View managed backups

To view a list of managed backups on a cluster with timestamps and their respective IDs, send a `GET` request to the `/v1/clusters/{cluster_id}/backups` endpoint:

    curl --request GET \
    --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/backups \
    --header "Authorization: Bearer {secret_key}" \

If the request is successful, the client recieves a JSON response listing backups with their unique `{id}`. The `{as_of_time}` timestamp describes the system time of the cluster when the backup was created:

    {
      "backups": [
        {
          "id": "example-157a-4b04-8f72-3179369a50d9",
          "as_of_time": "2025-07-25T15:45:00Z"
        },
        {
          "id": "example-c090-429c-9f84-2b1297f5de89",
          "as_of_time": "2025-07-25T15:35:32Z"
        },
        {
          "id": "example-4e41-44ec-926a-0cc368efdea2",
          "as_of_time": "2025-07-25T15:00:00Z"
        },
        {
          "id": "example-3c67-4822-b7b9-90c2d8cc06a3",
          "as_of_time": "2025-07-25T14:56:15Z"
        },
        {
          "id": "example-abef-4191-aa98-36a019da97c2",
          "as_of_time": "2025-07-25T14:52:05.637170Z"
        }
      ],
      "pagination": null

### Restore from a managed backup

You can use the `/v1/clusters/{destination_cluster_id}/restores` endpoint to restore the contents of a managed backup to a specified destination cluster.

On Standard and Basic clusters, restore operations can only be performed into the same cluster where the managed backup is stored. Managed backups can only be restored at the cluster level.

#### Restore a cluster

Note:

Before a cluster can be restored from a managed backup, the destination cluster must be completely wiped of data. A cluster restore operation fails if the destination cluster contains any databases/schemas/tables.

To restore a cluster to a recent managed backup, send a `POST` request to the `/v1/clusters/{cluster_id}/restores` endpoint of `"type": "CLUSTER"`:

    curl --request POST \
    --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/restores \
    --header "Authorization: Bearer {secret_key}" \
    --json '{
        "source_cluster_id": "{cluster_id}",
        "type": "CLUSTER"
    }'

By default, the restore job uses the most recent backup stored within the last 7 days on the cluster specified in `source_cluster_id`. To restore a specific backup, include the `backup_id` field and specify a backup ID from the managed backups list:

    curl --request POST \
    --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/restores \
    --header "Authorization: Bearer {secret_key}" \
    --json '{
        "backup_id": "example-2d25-4a64-8172-28af7a0d41cc",
        "type": "CLUSTER"
    }'

If the request is successful, the client recieves a JSON response that describes the request operation:

    {
      "id": "example-aeb7-4daa-9e2c-eda541765f8a",
      "backup_id": "example-2d25-4a64-8172-28af7a0d41cc",
      "status": "PENDING",
      "created_at": "2025-07-25T16:45:14.064208710Z",
      "type": "CLUSTER",
      "completion_percent": 1
    }

### Get status of a restore job

To view the status of a restore job using the cloud API, send a `GET` request to the `/v1/clusters/{cluster_id}/restores/{restore_id}` endpoint where `restore_id` is the `id` from the JSON response:

    curl --request GET \
    --url https://cockroachlabs.cloud/api/v1/clusters/{cluster_id}/restores/{restore_id} \
    --header "Authorization: Bearer {secret_key}"

If the request is successful, the client recieves a response containing JSON describing the status of the specified request operation:

    {
      "id": "example-aeb7-4daa-9e2c-eda541765f8a",
      "backup_id": "example-2d25-4a64-8172-28af7a0d41cc",
      "status": "SUCCESS",
      "created_at": "2025-07-25T16:45:14.064208710Z",
      "type": "CLUSTER",
      "completion_percent": 1
    }

## CockroachDB Cloud Terraform provider

You can use the CockroachDB Cloud Terraform provider to specify managed backup settings in Standard clusters.

In your `main.tf` Terraform configuration file, use the `backup_config` attribute on the `cockroach_cluster` resource to modify the settings of managed backups. For example:

    resource "cockroach_cluster" "standard" {
      name           = "cockroach-standard"
      cloud_provider = "GCP"
      plan           = "STANDARD"
      serverless = {
        usage_limits = {
          provisioned_virtual_cpus = 2
        }
        upgrade_type = "AUTOMATIC"
      }
      regions = [
        {
          name = "us-east1"
        }
      ]
      delete_protection = false
      backup_config = {
        enabled           = true
        frequency_minutes = 60
        retention_days    = 30
      }
    }

Set the following for the `backup_config` attribute:

- `enabled` controls whether managed backups are enabled or disabled. If you modify the `retention_days` setting even when managed backups are disabled, this will use the one possible change for `retention_days`. Possible values for the `enabled` setting are: `true` or `false`.
- `frequency_minutes` determines how often the managed backup will run in minutes. Possible values are: `5`, `10`, `15`, `30`, `60`, `240` (4 hours), `1440` (24 hours).

- `retention_days` sets the number of days Cockroach Labs will retain the managed backup in storage. You can change `retention_days` for the cluster once (whether in Terraform, the Cloud API, or the Cloud Console). Possible values are: `2`, `7`, `30`, `90`, `365`. Note that:

  - If the initial value of the `retention_days` attribute is the default value `30`, you'll be able to modify the backup retention setting once more.
  - If the initial value is not the default, you will not be able to modify `retention_days` again. You can refrain from including `retention_days` in the Terraform configuration and instead manage the retention in the Cloud Console.

  To modify the setting again, contact the Cockroach Labs Support team. For more details on modifying `retention_days`, refer to the Updating Backup Retention documentation in the Terraform provider for CockroachDB Cloud Repository.