Disaster recovery and restoration
Treat backups as restoration inputs and validate recovery objectives against data consistency, access, throughput, and application checks.
On this page
The question for today
What you’ll understand
- Distinguish recovery objectives from achieved restoration evidence.
- Calculate a lower-bound transfer time and distinguish recovery-point age from actual lost records.
- Design a restoration exercise that validates application invariants and independent access.
A backup job can report success while the system remains impossible to restore. The data might be encrypted with an unavailable key, omit a dependent database, require obsolete software, or contain a corruption replicated before the backup. Disaster recovery engineering follows the entire path from an incident to a validated useful service. The goal is a tested recovery capability with explicit data and time objectives, not merely a collection of copied bytes.
Choose objectives from the operation's consequences
Recovery time objective, RTO, is the target interval within which the required service should recover under the defined disruption. Recovery point objective, RPO, describes the acceptable data-loss interval relative to the incident or recovery reference point specified by the plan. They are objectives, not guarantees supplied by a storage feature. Distinguish the target from measured recovery time and from the recovered data point in each exercise. Different operations may justify different objectives: viewing an archive and recording a new order need not recover together.
Map every dependency needed to interpret and serve the recovered data: application versions, schemas, credentials, encryption keys, configuration, object references, and external ledgers. A database snapshot at one instant combined with unrelated object-store state may violate application invariants. Decide whether writes must be quiesced, whether a consistent snapshot mechanism is available, or whether logs and reconciliation can construct a valid recovery point. Replication helps with infrastructure loss but can quickly copy deletion or corruption; it is not a substitute for retained recovery history.
Plan a complete restoration critical path
Restoration may require provisioning resources, obtaining access, retrieving backups, applying logs, rebuilding indexes, warming caches, and validating the application. Identify dependencies and parallelizable stages instead of summing every task blindly. Data transfer provides one useful lower bound, but measured effective throughput includes decryption, decompression, storage writes, and contention. Do not use network link speed as sustained restore throughput unless an exercise demonstrates it. Very large datasets can make an otherwise sensible recovery objective physically implausible.
Retain backup manifests and verify integrity before and during restoration. Test access from the environment that will exist after the incident, including a scenario where the primary identity or management account is unavailable. Keep necessary key-recovery procedures independent without weakening their access controls. A backup that shares every deletion credential and failure domain with the live system may disappear in the same incident. Record retention and recovery-point coverage explicitly so operators know which versions are still available when corruption is detected late.
Validate business invariants before reopening writes
Restore into an isolated destination with outbound side effects disabled until intentionally enabled. Otherwise replaying application startup or job history can send duplicate notifications or charges. Validate checksums and record counts, but also test cross-record invariants, representative reads, permissions, and application-version compatibility. Reconcile operations acknowledged before the incident against the recovered history and any external system of record. A successful database startup proves much less than a correct application response. Make the criteria for reopening reads and writes explicit and separately observable.
Repeat restoration exercises after meaningful changes in data volume, schema, encryption, deployment, or staffing. Measure from the defined service interruption to verified recovery, including detection and declaration delays, rather than timing only the fastest transfer stage. The queue lab illustrates a secondary recovery risk: new arrivals can accumulate while restoration reduces service capacity. Its deterministic fluid backlog and separate M/M/1 mean readout do not simulate backups. Use them to reason about deferred work and the capacity needed to drain it after the service returns.
Work it through
Does the restore plan fit the objective?
A consistent backup contains 1,800 GiB. A representative exercise sustains 300 MiB/s end-to-end restoration. Provisioning takes 15 minutes and subsequent validation takes 20 minutes, sequentially. The service interruption begins at 14:00 and the latest consistent recovery point covers history through 13:52.
Convert data to matching binary units: 1,800 GiB × 1,024 = 1,843,200 MiB.
Transfer requires at least 1,843,200/300 = 6,144 seconds, or 102.4 minutes. Adding the specified stages gives at least 15 + 102.4 + 20 = 137.4 minutes.
The recovery-point age is eight minutes, a potential loss window within a ten-minute RPO for this exercise. Actual lost writes require reconciliation. A two-hour RTO is unsupported by the 137.4-minute lower-bound plan, even before adding detection delays.
Improve the critical path or revise the objective through the appropriate decision process. This exercise's data point and throughput do not guarantee the same outcome for future incidents.
The living notebook
Explore the model
Interactive lab · queue
Recovery must also drain deferred work
Compare arrival rate λ with restored service rate μ. The fluid backlog starts at four units and evolves as max(0, 4 + (λ − μ)t); this is not a backup or database replay simulator.
- Fluid backlog
- 4
- Net rate · λ − μ
- −1 /s
- M/M/1 mean residence
- 1 s
Fluid backlog starts at 4 and follows max(0, 4 + (λ − μ)t). The separate M/M/1 residence-time formula assumes Poisson arrivals, exponential service and λ < μ. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.
Look forReturning the endpoint is incomplete recovery if deferred work continues to grow faster than it can be served.
Pause & reason
Check your understanding
Your turn
Try it yourself
A restore has 600 GiB to transfer at a measured 200 MiB/s. Access and provisioning take 12 minutes, and log replay plus validation takes 18 minutes afterward. Find the sequential lower-bound time. What extra check is needed before replayed jobs can contact payment APIs?
Take a moment to make a prediction or work it out on paper. Open a hint when you need one.
Give me a hint
Use 1 GiB = 1,024 MiB and include stages outside the transfer. Think about already completed external effects.
Compare with the solution
Transfer time is 600 × 1,024/200 = 3,072 seconds = 51.2 minutes. Total lower-bound time is 12 + 51.2 + 18 = 81.2 minutes. Before enabling external effects, reconcile logical operation identities with the payment provider and verify idempotency behavior; replaying jobs must not silently repeat charges.
Keep the idea
Take it with you
- RTO and RPO are targets to test, not proof of achieved recovery.
- Restore plans include access, interpretation, validation, and deferred work.
- Reopen side effects only after reconciling state and operation identity.
Read further
Original sources and deeper explanations to follow at your own pace.
Optional progress, saved in this browser when available. Revisit any lesson at any time.
Lesson not marked complete.