决策:选择哪种备份策略?
选择备份策略需要平衡三个因素:可容忍的数据丢失量(RPO)、数据量,以及必须多快恢复(RTO)。没有一种方法适合所有场景。这棵决策树从 RPO 目标出发,引导你在逻辑导出、物理备份 + PITR 和快照之间做出选择,并提醒你 3-2-1 和验证是不容妥协的。
你的数据丢失目标(RPO)是多少?
从最具决定性的约束开始:发生灾难时,你最多能承受丢失几分钟/几小时的数据?如果要求接近零的数据丢失,则必须持续归档日志(PITR);如果可以接受每日/每周备份的容忍度,较简单的方法就足够了。RPO 决定了策略的框架。
- 接近零 — 我必须能够回到任意时间点
- 可以接受每日/定期备份(丢失几小时)
- 先提醒我通用最佳实践(3-2-1 / 验证)
数据量和可移植性要求是什么?
如果定期备份就足够,下一个问题是规模和用途:数据库是小/中型,且希望备份可移植到其他环境/版本,还是数据量大,主要关注在几分钟内恢复?这决定了选择逻辑导出还是快照。
- 小/中型,可移植且跨版本兼容
- 数据量大,恢复必须非常快(低 RTO)
建议:逻辑导出(dump)
在逻辑层面导出数据(模式定义 + 行);输出为 SQL/文本(pg_dump plain 格式、mysqldump)或工具专有的二进制转储(pg_dump -Fc、Oracle Data Pump)。适用于中小型数据库、迁移、版本升级以及恢复选定表/对象的灵活、可移植方法。
建议:物理备份 + WAL/归档日志(PITR)
定期进行物理基础备份,并持续归档事务日志(WAL/redo/binlog)。这样可以执行时间点恢复(Point-in-Time Recovery)到任意时刻,将数据丢失降到接近零。
建议:快照
在存储或虚拟化层对数据进行块级快照。即使对于非常大的数据库,备份和恢复也非常快;但它依赖于基础设施,需要谨慎使用。
建议:3-2-1 规则 + 异地 + 强制验证
无论选择哪种方法,这些原则都必须作为策略的上层约束。仅有备份是不够的;备份必须位于不同介质、不同位置,并定期测试。这是对上述所有选项的补充框架。