| name | modify-backup-schedule-frequency |
| description | Modify existing backup schedule frequencies using ALTER BACKUP SCHEDULE. Change full backup intervals with SET FULL BACKUP or incremental intervals with SET RECURRING. Supports CRON expressions and shortcuts. Find schedule IDs with SHOW SCHEDULES. Use when adjusting RPO requirements, backup windows, or cost optimization. |
| metadata | {"domain":"Backup and Restore","tags":"backup-restore, sql, performance, schedules","phase":1,"version":"1.1.0","bloomsLevel":"Apply","minimumVersion":"v26.1.0","status":"complete"} |
Modify Backup Schedule Frequency
Overview
CockroachDB allows you to modify existing backup schedules without recreating them using ALTER BACKUP SCHEDULE. Changes take effect at the next scheduled run without disrupting backup chains.
Key capabilities:
- Modify full backup frequency with
SET FULL BACKUP
- Modify incremental frequency with
SET RECURRING
- Use CRON expressions or shortcuts (
@hourly, @daily, @weekly)
- Changes apply immediately to schedule metadata, execute at next run
Common use cases: RPO adjustments, cost optimization, maintenance window alignment, seasonal workload changes
Finding Schedule Information
SHOW SCHEDULES;
SHOW SCHEDULE 123456789;
SELECT * FROM [SHOW SCHEDULES] WHERE label LIKE '%production%';
Key output columns: id (schedule ID), label, schedule_status, next_run, recurrence (CRON expression)
Note: Each CREATE SCHEDULE FOR BACKUP creates two schedules - one for full backups, one for incrementals.
Modifying Backup Frequencies
ALTER BACKUP SCHEDULE Syntax
ALTER BACKUP SCHEDULE <schedule_id>
SET FULL BACKUP '<cron_expression>'
[SET RECURRING '<cron_expression>']
[SET SCHEDULE OPTION <option> = <value>];
Modify Full Backup Frequency
Change from weekly to daily:
SELECT * FROM [SHOW SCHEDULES] WHERE label LIKE '%full%';
ALTER BACKUP SCHEDULE 789012345
SET FULL BACKUP '@daily';
Change to specific time:
ALTER BACKUP SCHEDULE 789012345
SET FULL BACKUP '0 3 * * 0';
Modify Incremental Backup Frequency
Change from hourly to every 4 hours:
SELECT * FROM [SHOW SCHEDULES] WHERE label LIKE '%incremental%';
ALTER BACKUP SCHEDULE 123456789
SET RECURRING '0 */4 * * *';
Change from daily to hourly:
ALTER BACKUP SCHEDULE 123456789
SET RECURRING '@hourly';
Modify Both Frequencies Together
ALTER BACKUP SCHEDULE 789012345
SET FULL BACKUP '@weekly';
ALTER BACKUP SCHEDULE 123456789
SET RECURRING '@daily';
CRON Expression Reference
CRON Syntax
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 6, Sunday = 0)
│ │ │ │ │
* * * * *
Common Shortcuts
| Shortcut | CRON Expression | Description |
|---|
@hourly | 0 * * * * | Every hour at minute 0 |
@daily | 0 0 * * * | Daily at midnight |
@weekly | 0 0 * * 0 | Weekly on Sunday at midnight |
@monthly | 0 0 1 * * | Monthly on the 1st at midnight |
Common CRON Patterns
'0 */2 * * *'
'0 */6 * * *'
'0 2 * * *'
'0 3 * * 0'
'0 6,18 * * *'
Common Modification Scenarios
Reduce RPO (Lower RTO)
ALTER BACKUP SCHEDULE 123456789
SET RECURRING '0 */4 * * *';
Align with Maintenance Windows
ALTER BACKUP SCHEDULE 789012345
SET FULL BACKUP '0 3 * * 0';
Cost Optimization
ALTER BACKUP SCHEDULE 123456789
SET RECURRING '0 */6 * * *';
Seasonal Workload Adjustment
ALTER BACKUP SCHEDULE 123456789 SET RECURRING '@hourly';
ALTER BACKUP SCHEDULE 123456789 SET RECURRING '0 */6 * * *';
Advanced Modifications
Stagger Multiple Schedules
ALTER BACKUP SCHEDULE 111111111 SET RECURRING '0 * * * *';
ALTER BACKUP SCHEDULE 222222222 SET RECURRING '15 * * * *';
ALTER BACKUP SCHEDULE 333333333 SET RECURRING '30 * * * *';
Impact and Timing
When changes take effect:
- Schedule metadata updates instantly
next_run recalculates immediately
- Actual frequency changes at next scheduled run
- Running backups complete normally
Backup chain continuity:
- Incremental backups continue from last full
- No chain breaks or data loss
- All backups remain restorable
Verification
SHOW SCHEDULE 123456789;
SHOW JOBS
WHERE job_type = 'BACKUP'
AND created > now() - INTERVAL '1 hour'
ORDER BY created DESC;
SHOW BACKUP FROM 's3://bucket/path?AUTH=implicit';
Best Practices
Before modifying:
- Review current schedules and document state
- Calculate resource impact (frequency vs I/O and storage)
- Test CRON expressions (use online validators)
- Note timezone (CockroachDB uses UTC)
Modification workflow:
- Identify schedule:
SELECT * FROM [SHOW SCHEDULES] WHERE label LIKE '%production%';
- Apply modification:
ALTER BACKUP SCHEDULE <id> SET ...
- Verify immediately:
SHOW SCHEDULE <id>;
- Monitor first execution
Coordinating changes:
- Modify full and incremental schedules together
- Maintain logical frequency ratios (incrementals > full)
- Stagger times to avoid conflicts
Troubleshooting
Schedule not updating:
- Verify correct schedule ID with
SHOW SCHEDULES
- Check CRON syntax validity (minutes 0-59, hours 0-23)
- Try pause/resume if needed
Invalid CRON expression:
Timezone issues:
- CockroachDB uses UTC by default
- Convert local times: 2 AM PST = 10 AM UTC =
'0 10 * * *'
Modified wrong schedule:
- Verify schedule type (full vs incremental)
- Each
CREATE SCHEDULE FOR BACKUP creates two schedules
Summary
Modifying backup schedule frequencies allows you to:
- Adjust to changing requirements - Adapt RPO targets dynamically
- Optimize costs - Balance frequency with storage expenses
- Align with operations - Match maintenance windows and workload patterns
- Maintain continuity - No disruption to existing backup chains
- Fine-tune performance - Stagger schedules to avoid resource contention
Key commands:
SHOW SCHEDULES;
ALTER BACKUP SCHEDULE <id> SET FULL BACKUP '<cron>';
ALTER BACKUP SCHEDULE <id> SET RECURRING '<cron>';
SHOW SCHEDULE <id>;
Remember:
- Changes apply at next scheduled run
- Use correct schedule ID (full vs incremental)
- Test CRON expressions before applying
- Monitor first execution after modification
- Document changes for audit trail