The ability to backup a full cluster has been added and the syntax for incremental backups is simplified. Because of these two changes, basic backup usage is now sufficient for most CockroachDB clusters. However, you may want to control your backup and restore options more explicitly.
This doc provides information about how to take backups with revision history and restore from a point-in-time.
BACKUP with revision history is an Enterprise-only feature. However, you can take full backups without an Enterprise license.
You can create full or incremental backups with revision history:
- Taking full backups with revision history allows you to back up every change made within the garbage collection period leading up to and including the given timestamp.
- Taking incremental backups with revision history allows you to back up every change made since the last backup and within the garbage collection period leading up to and including the given timestamp. You can take incremental backups with revision history even when your previous full or incremental backups were taken without revision history.
You can configure garbage collection periods using the
ttlseconds replication zone setting. Taking backups with revision history allows for point-in-time restores within the revision history.
Create a backup with revision history
> BACKUP TO \ 'gs://acme-co-backup/test-cluster-2017-03-27-weekly' \ AS OF SYSTEM TIME '-10s' WITH revision_history;
If the full or incremental backup was taken with revision history, you can restore the data as it existed at an arbitrary point-in-time within the revision history captured by that backup. Use the
AS OF SYSTEM TIME clause to specify the point-in-time.
Additionally, if you want to restore a specific incremental backup, you can do so by specifying the
end_time of the backup by using the
AS OF SYSTEM TIME clause. To find the incremental backup's
If you do not specify a point-in-time, the data will be restored to the backup timestamp; that is, the restore will work as if the data was backed up without revision history.
> RESTORE FROM 'gs://acme-co-backup/database-bank-2017-03-27-weekly' \ AS OF SYSTEM TIME '2017-02-26 10:00:00';
Point-in-time restore from incremental backups
Restoring from incremental backups requires previous full and incremental backups. In this example,
-weekly is the full backup and the two
-nightly are incremental backups:
> RESTORE FROM \ 'gs://acme-co-backup/database-bank-2017-03-27-weekly', 'gs://acme-co-backup/database-bank-2017-03-28-nightly', 'gs://acme-co-backup/database-bank-2017-03-29-nightly' \ AS OF SYSTEM TIME '2017-02-28 10:00:00';