CockroachDB is built to be , but sometimes disasters happen. Backup and restore is an important part of a robust disaster recovery plan. CockroachDB self-hosted clusters provide a range of backup and restore features.
You can create full or incremental backups of a , , or . Taking regular backups of your data is an operational best practice.
For a technical explanation of how a backup works, refer to the page.
Backup and restore support
This table outlines the level of product support for backup and restore features in CockroachDB. See each of the pages linked in the table for usage examples:
| Backup / Restore | Description |
|---|
| An un-replicated copy of your cluster, database, or table’s data. A full backup is the base for any further backups. |
| A copy of the changes in your data since the specified base backup (either a full backup or a full backup plus an incremental backup). |
| A schedule for periodic backups. |
| A backup with revision history allows you to back up every change made within the garbage collection period leading up to and including the given timestamp. |
| A restore from an arbitrary point in time within the revision history of a backup. |
| An encrypted backup using a KMS or passphrase. |
| A backup where each node writes files to the backup destination that matches the node locality configured at node startup. |
| A backup with the EXECUTION LOCALITY option restricts the nodes that can execute a backup job with a defined locality filter. |
Additional backup and restore features
Scheduled backups
We recommend using scheduled backups to automate daily backups of your cluster.
CockroachDB supports . Scheduled backups ensure that the data to be backed up is protected from garbage collection until it has been successfully backed up. This active management of means that you can run scheduled backups at a cadence independent from the of the data.
For detail on scheduled backup features CockroachDB supports:
Backup jobs with locality requirements
CockroachDB supports two backup features that use a node’s locality to determine how a backup job runs or where the backup data is stored:
- : Specify a set of locality filters for a backup job in order to restrict the nodes that can participate in the backup process to that locality. This ensures that the backup job is executed by nodes that meet certain requirements, such as being located in a specific region or having access to a certain storage bucket.
- : Partition and store backup data in a way that is optimized for locality. When you run a locality-aware backup, nodes write backup data to the bucket that is closest to the node locality configured at .
Backup and restore SQL statements
The following table outlines SQL statements you can use to create, configure, pause, and show backup and restore jobs:
| SQL Statement | Description |
|---|
| Create full and incremental backups. |
| Show a list of all running jobs or show the details of a specific job by its job ID. |
| Pause a backup or restore job with its job ID. |
| Resume a backup or restore job with its job ID. |
| Cancel a backup or restore job with its job ID. |
| Show a backup’s details at the storage location. |
| Restore full and incremental backups. |
| Add a new to an encrypted backup. |
| Create a schedule for periodic backups. |
| Alter an existing backup schedule. |
| View information on backup schedules. |
| Pause backup schedules. |
| Resume paused backup schedules. |
| Drop backup schedules. |
Backup storage
We recommend taking backups to and enabling object locking to protect the validity of your backups. CockroachDB supports Amazon S3, Azure Storage, and Google Cloud Storage for backups. Read the following usage information:
- to form the URL that you pass to
BACKUP and RESTORE statements.
- to set up authentication to a cloud storage bucket and include those credentials in the URL.
For detail on additional cloud storage features CockroachDB supports:
- Prevent backups from being overwritten or deleted with .
- Set a specific storage class for your backups with .
- from cloud storage
Backup and restore observability
You can verify that your stored backups are restorable with backup validation. While a successful restore completely validates a backup, the validation tools offer a faster alternative and return an error message if a backup is not valid. There are three “levels” of verifying backups that give increasing validation coverage depending on the amount of runtime you want to invest in validating backups.
See the page for detail and examples.
You can track backup jobs using metrics that cover scheduled backups, status of running jobs, and details on completed or failed jobs. You can alert on these metrics via the Prometheus endpoint or the Datadog integration.
See the page for product availability and a list of the available metrics.
Video demo
For practical examples of running backup and restore jobs, watch the following video:
See also
- Considerations for using and .
- for details on how CockroachDB stores backups.
- across major versions of CockroachDB.