Backup vs replication vs disaster recovery¶
Тип материала: инженерное сравнение. Выводы зависят от workload и failure model; схема и сценарии иллюстративные.
Проверка источников: 2026-11-02. Численные latency, throughput, cost и SLA не измерялись.
Критерии выбора¶
| Критерий | Replication | Backup и DR plan |
|---|---|---|
| Workload | Быстрое переключение при отказе node | Историческое восстановление и потеря failure domain |
| Consistency | Копирует изменения, включая ошибочные | Восстанавливает выбранный cut; DR согласует dependencies |
| Latency / throughput | Постоянный поток replication; lag | Archive/restore I/O и catch-up work |
| Cost / scalability | Standby capacity и network | Isolated backups, WAL history, drills и KMS |
| Operational complexity | Promotion/fencing и failback | Restore verification, source cuts, real RPO/RTO evidence |
Механизм и ограничения¶
Backup сохраняет recoverable history; DR описывает, как восстановить оговорённый сервис и корректность данных. Replication может быть частью DR, но logical corruption обычно реплицируется. Снимок без нужных WAL/keys/config ещё не является проверенным восстановлением.
Для payments восстановление включает externally accepted operations и idempotency state. Для аналитики часто допустимо сначала восстановить authoritative source, затем перестроить views. RTO завершается на проверенном критерии сервиса, а не на старте database process.
Иллюстративная схема решения¶
flowchart TD
W[Workload and invariant] --> B[Define durable boundary]
B --> F[Compare failure and recovery obligations]
F --> L[Choose protocol for explicit scope]
L --> T[Fault test and reconciliation]
Failure и recovery¶
Проверьте три разных fault: node loss, ошибочный DELETE и region/KMS loss. Для каждого назовите источник восстановления и возможную потерю acknowledged операций. При failover сначала fence old writer; при PITR согласуйте target cut с consumer offsets.
Практическое упражнение¶
Напишите restore checklist и результат измерения в будущем lab: actual recovered cut, unrecovered IDs и время до invariant checks. В этом этапе реальные RPO/RTO не измерены.
Связанные материалы и источники¶
- PostgreSQL standby — 17.
- PostgreSQL PITR — 17.