定时备份策略挂在每个实例上,包含启用开关、每天执行时间和保留份数三个字段。本文说明如何配置这三个字段,以及一个容易被误解的事实:关闭启用开关不会让已有备份变得安全。
关闭开关前,先看清楚它实际控制的范围有多窄:
| 会发生什么 | 不会发生什么 |
|---|---|
| 已有备份仍按保留份数持续被自动清理,每 15 分钟一轮,每轮最多删除一份,直到数量降到保留份数以内 | 不会因为关闭开关就跳过清理——清理任务遍历全部策略,不检查开关是否打开 |
| 只是停止产生新的定时备份——每 5 分钟一次的调度扫描只处理已启用的策略,关闭后不再产生新备份 | 不会保留"关闭前的最后一份"或给予任何特殊豁免,清理只看数量和创建时间 |
| 如果清理当轮实例正有其它活跃工作请求(例如迁移、开机),本轮跳过,下一轮(15 分钟后)再试 | 不会弹出二次确认,也不会发送通知——这是后台任务自动发起的删除,操作者标记为系统 |
| 一旦被清理任务选中,删除立即执行且不可逆,走的是与手动删除备份相同的真实删除路径 | 不会有回收站或软删除,也不会因为底层删除失败而让备份重新出现 |
- 实例此前保存过至少一次备份策略(哪怕当时是启用状态),数据库里已经有这条策略记录。
- 保留份数大于 0——前端默认值为 7,保存时会拒绝小于等于 0 的输入。
- 从未保存过策略的实例不受清理任务影响,因为清理任务只遍历数据库里已有的策略记录,没有记录就无从清理。
- 打开 计算 > 实例,进入目标实例详情的 备份 页签,点击定时备份摘要,打开策略弹层。
- 打开左侧的启用开关。开关打开后,执行时间和保留份数的编辑框才会出现——界面会提示:"先启用左侧的定时备份开关,再在这里设置执行计划与保留份数。"这句提示描述的是如何打开编辑入口,与旧备份是否会被清理无关。
- 设置每天执行时间和保留份数。策略摘要会随之更新为类似"每天 03:00 · 保留 7 份"的格式。
- 点击 保存策略。弹层会显示更新后的下次执行时间,作为本次保存已生效的确认。
- 在同一个策略弹层,关闭左侧的启用开关。
- 执行时间和保留份数的编辑框会随之隐藏,但之前保存的保留份数仍在数据库里生效,不会被清空或重置。
- 点击 保存策略。策略摘要变为"未启用",但这只影响是否继续产生新备份,不影响已有备份的清理。
设置的执行时间和实际触发时间对不上,通常是因为背后其实是两个独立节奏的定时任务,而不是同一个:
| 任务 | 频率 | 判断依据 | 是否检查开关状态 |
|---|---|---|---|
| 新备份扫描 | 每 5 分钟一次 | 到期(下次执行时间已到)且已启用的策略 | 是——只处理启用状态的策略 |
| 保留份数清理 | 每 15 分钟一次 | 该实例已完成的备份数量是否超过保留份数 | 否——遍历全部策略,不检查开关状态 |
设置的"每天执行时间"决定的是目标时刻,真正触发要等下一次 5 分钟扫描发现"已到期",所以实际创建时间可能比设置时间晚数分钟。保留份数清理是完全独立的 15 分钟节奏,与设置的执行时间无关,也不受开关状态影响,会一直运行到备份数量降到保留份数以内为止。
关闭定时备份开关不能保护任何一份备份。真正能阻止某份备份被清理的方法只有两种:
- 提高保留份数,让该实例已完成的备份数量不再超过上限。
- 把想保留的备份转换为自定义镜像。转换完成后,该备份会从备份列表中移除,并作为自定义镜像显示,不再受保留份数清理管辖;底层数据不会被复制,存储用量不会增加。