| name | configure-cron-expressions-for-backup-schedules |
| description | Understand and configure CRON expressions for CockroachDB backup schedules. Use when user asks "how to write cron", "schedule syntax", "cron format", "backup timing", or needs to configure custom backup frequencies beyond shortcuts. |
| metadata | {"domain":"Backup and Restore","bloom_level":"Understand","version":"1.0.0","cockroachdb_version":"v26.1.0+"} |
Configure CRON Expressions for Backup Schedules
Understand CRON expression syntax to create precise backup schedules matching your RPO requirements.
CRON Expression Format
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday)
│ │ │ │ │
* * * * *
Common Shortcuts
| Shortcut | Equivalent | Frequency |
|---|
@hourly | 0 * * * * | Every hour, top of hour |
@daily | 0 0 * * * | Daily at midnight UTC |
@weekly | 0 0 * * 0 | Sunday at midnight UTC |
@monthly | 0 0 1 * * | 1st day of month at midnight |
Recommended: Use shortcuts when possible - clearer intent
Examples by Use Case
Hourly Patterns
'0 * * * *' or '@hourly'
'0 */2 * * *'
'*/15 * * * *'
'0 9-17 * * *'
Daily Patterns
'0 0 * * *' or '@daily'
'30 2 * * *'
'0 2,14 * * *'
'0 18 * * 1-5'
Weekly Patterns
'0 0 * * 0' or '@weekly'
'0 23 * * 5'
'0 3 * * 1,4'
'0 12 * * 0,6'
Monthly Patterns
'0 0 1 * *' or '@monthly'
'0 3 15 * *'
'0 0 28-31 * *'
'0 0 1-7 * 1'
Interval Syntax
Format: */N means "every N units"
'*/5 * * * *'
'0 */3 * * *'
'0 0,6,12,18 * * *'
Range Syntax
Format: X-Y means "from X to Y inclusive"
'0 9-17 * * *'
'0 0 * * 1-5'
'0 0 1 1-3 *'
List Syntax
Format: X,Y,Z means "X and Y and Z"
'0 6,18 * * *'
'0 2 * * 1,3,5'
'0 0 1,15 * *'
Combining Patterns
'0 2,14 * * 1-5'
'0,30 9-17 * * 1-5'
'0 3 1-7,15-21 * 1'
RPO Planning
15-Minute RPO (Critical Systems)
CREATE SCHEDULE critical_backup
FOR BACKUP INTO 'nodelocal://1/backups/critical'
RECURRING '*/15 * * * *'
FULL BACKUP '0 2 * * 0';
1-Hour RPO (Standard Production)
CREATE SCHEDULE prod_backup
FOR BACKUP INTO 'nodelocal://1/backups/prod'
RECURRING '@hourly'
FULL BACKUP '@weekly';
4-Hour RPO (Non-Critical)
CREATE SCHEDULE standard_backup
FOR BACKUP INTO 'nodelocal://1/backups/standard'
RECURRING '0 */4 * * *'
FULL BACKUP '@weekly';
24-Hour RPO (Development)
CREATE SCHEDULE dev_backup
FOR BACKUP INTO 'nodelocal://1/backups/dev'
RECURRING '@daily';
Time Zone Considerations
Important: All CRON times in UTC
'0 2 * * *'
'0 7 * * *'
Best practice: Document timezone in schedule label
Testing CRON Expressions
Validate Syntax
Use https://crontab.guru/ to validate and understand CRON expressions
Test Schedule
CREATE SCHEDULE test_cron
FOR BACKUP DATABASE test_db INTO 'nodelocal://1/backups/test'
RECURRING '*/5 * * * *'
WITH SCHEDULE OPTIONS first_run = now() + INTERVAL '2 minutes';
SHOW SCHEDULES WHERE label LIKE '%test%';
SELECT * FROM [SHOW JOBS] WHERE description LIKE '%test_cron%';
DROP SCHEDULES (SELECT id FROM [SHOW SCHEDULES] WHERE label LIKE '%test%');
Common Mistakes
Mistake 1: Forgetting UTC
'0 2 * * *'
'0 2 * * *'
Mistake 2: Invalid Day/Month
'0 0 31 2 *'
'0 0 28 2 *'
Mistake 3: Conflicting Patterns
'0 0 15 * 1'
'0 0 15 * *'
Frequency Recommendations
| System Type | Incremental | Full | CRON Examples |
|---|
| Mission Critical | 15 min | Weekly | */15 * * * * + @weekly |
| Production | Hourly | Weekly | @hourly + @weekly |
| Standard | 4 hours | Weekly | 0 */4 * * * + @weekly |
| Development | Daily | N/A | @daily |
| Archive | Weekly | Monthly | @weekly + @monthly |
Related Skills
create-automated-backup-schedules - Create schedules with CRON
modify-backup-schedule-frequency - Change CRON expressions
monitor-scheduled-backups-with-show-schedules - Verify schedule timing