Filter concepts by levelShowing all levels.

System Design · Disaster Recovery

Disaster Recovery

The toolkit, the two numbers that define its guarantee, and why an untested backup is not evidence of anything

  • Backups + PITRrestore to any second, not just the last snapshot
  • Multi-zone / multi-regionsurvive a data-center or a whole-region failure
  • RPO vs. RTOmax data loss vs. max downtime — independent numbers
  • Drilled, not assumeda restore never attempted is not proof it works

1.The DR toolkit: backups, point-in-time recovery, and multi-zone/multi-region deployment

Disaster recovery is not one technique — it is a small toolkit of mechanisms, each protecting against a different failure blast radius, and a real DR strategy usually combines several. Backups are a copy of data taken at a point in time and stored somewhere independent of the live system, so a bad deploy, a bug that corrupts rows, or outright deletion can be undone by restoring from before it happened. Point-in-time recovery (PITR) is a refinement of backups: instead of only being able to restore to the moment of the last full snapshot, a continuous log of changes (write-ahead log, binlog, oplog) lets you restore to any specific second — critical when the disaster is "we discovered the corruption six hours after it happened" rather than "the whole server died." Replication (covered in depth in §22 — primary/replica, sync vs. async) keeps a second live copy up to date in near-real-time, protecting against hardware failure but not against corruption or deletion that replicates just as faithfully as good data. Multi-zone deployment spreads instances across a cloud provider's availability zones (independent power, cooling, and networking within one region) so a single data-center-level failure does not take the whole system down. Multi-region strategies go further, keeping a fully separate copy of the system in a geographically distant region, protecting against a failure that takes out an entire region — the rarest and most expensive failure to defend against, reserved for the highest-stakes systems.

Key features

  • Backups protect against logical failures (bad deploys, corruption, accidental deletes) that replication does not — a corrupted row replicates just as reliably as a correct one
  • Point-in-time recovery needs a continuous change log (WAL/binlog/oplog), not just periodic full snapshots, to restore to an arbitrary second rather than only to the last snapshot time
  • Replication protects against hardware/instance failure with near-real-time failover — see system-design.replication for primary/replica and sync-vs-async mechanics, not repeated here
  • Multi-zone deployment defends against a single data-center-level failure (power, cooling, networking) within one region, typically at low added latency
  • Multi-region strategies defend against a whole-region outage but add real cost and complexity — cross-region data transfer, latency, and often eventual rather than strong consistency
  • These mechanisms compose: a mature DR strategy layers backups + PITR (logical failures) with replication + multi-zone/region (infrastructure failures), not one instead of the others

The DR toolkit — what each mechanism actually protects against

The DR toolkit — what each mechanism actually protects against
MechanismProtects againstDoes NOT protect against
BackupsData corruption, bad deploys, accidental deletesBeing stale between backup intervals
Point-in-time recoveryThe above, restorable to an arbitrary secondRequires a continuous change log, not just snapshots
Replication (§22)Single-instance/hardware failure, fast failoverCorruption or deletion, which replicates faithfully too
Multi-zone deploymentOne data center/availability zone going downA failure affecting the whole region
Multi-region strategyAn entire region becoming unreachableCost, latency, and consistency trade-offs it introduces
DR toolkit as concentric rings of protection

Backups + PITR

restore to any second, protects against logical failures

Replication (§22)

hot copy, protects against instance/hardware failure

Multi-zone deployment

survives one data-center failure

Multi-region strategy

survives a whole-region outage

  1. Backups + PITR — restore to any second, protects against logical failures
  2. Replication (§22) — hot copy, protects against instance/hardware failure
  3. Multi-zone deployment — survives one data-center failure
  4. Multi-region strategy — survives a whole-region outage

Command

text
// A layered DR posture, cheapest ring first
1. Backups (daily full + continuous change log for PITR)
2. Replication (§22): sync within a region, async cross-region
3. Multi-zone: instances + replicas spread across 3 AZs
4. Multi-region: standby copy in a second region, promoted on
   a declared regional disaster

The DR toolkit is backups + point-in-time recovery (logical failures — corruption, bad deploys, deletion), replication (§22 — hardware/instance failure, fast failover, but it replicates bad data just as well as good data), multi-zone (one data-center failure), and multi-region (a whole-region outage). None of these substitutes for another — they protect against different failure classes, and a real DR strategy picks a combination sized to what each system's downtime and data loss actually cost.

2.RPO vs. RTO: the two numbers that define a DR strategy's guarantee

RPO (Recovery Point Objective) and RTO (Recovery Time Objective) are the two numbers that turn "we have disaster recovery" into an actual, testable guarantee — without them, "disaster recovery" is just a feeling. RPO answers "how much data can we afford to lose?", expressed as a time window: an RPO of 1 hour means that after recovering from a disaster, the restored data can be missing at most the last hour's worth of writes. It is driven entirely by how the toolkit's backup/replication cadence works — continuous synchronous replication can approach an RPO of zero, nightly backups imply an RPO of up to 24 hours. RTO (Recovery Time Objective) answers a different question — "how long can the system be down?" — measured from the moment the disaster is declared to the moment the system is back up and serving traffic again. A system can have an excellent RPO (almost no data lost) and a terrible RTO (it takes six hours to actually bring the restored system back online), or vice versa — they are independent numbers, driven by different mechanisms, and a DR strategy is only complete when both are stated and both are actually achievable by the toolkit in place.

Key features

  • RPO (Recovery Point Objective) = maximum acceptable data loss, measured backward in time from the disaster
  • RTO (Recovery Time Objective) = maximum acceptable downtime, measured forward in time from the disaster to full recovery
  • RPO is driven by backup/replication cadence (§22 sync-vs-async, snapshot frequency, PITR log retention); RTO is driven by how automated and rehearsed the actual recovery/failover process is
  • The two are independent: a strong RPO does not imply a strong RTO, and improving one usually means investing in a different part of the toolkit than improving the other
  • A tighter RPO or RTO is not free — near-zero RPO usually means synchronous replication (added write latency); near-zero RTO usually means a warm or hot standby already running (added cost)

RPO and RTO — what each measures and what tightens it

RPO and RTO — what each measures and what tightens it
MetricQuestion it answersWhat tightens it
RPOHow much data can we lose?More frequent backups; synchronous replication; continuous PITR log retention
RTOHow long can we be down?Automated failover/runbooks; a warm or hot standby already provisioned; rehearsed restore drills
RPO and RTO on the same incident timeline
  1. 09:58

    Last good backup/replica sync

    start of the RPO window

  2. 10:00

    Disaster occurs

    data since last sync is the RPO loss

  3. 10:02

    Disaster declared

    detection time still counts toward RTO

  4. 10:15

    System back up

    end of the RTO window

  1. 09:58: Last good backup/replica sync — start of the RPO window
  2. 10:00: Disaster occurs — data since last sync is the RPO loss
  3. 10:02: Disaster declared — detection time still counts toward RTO
  4. 10:15: System back up — end of the RTO window

Command

text
// Stating a DR requirement means stating both numbers
service: payments-ledger
RPO: 0        // synchronous replication, zero data loss tolerated
RTO: 5 min    // hot standby, automated failover already tested

service: internal-wiki
RPO: 24h      // nightly backup is acceptable
RTO: 4h       // manual restore from backup is acceptable

RPO = how much data you can afford to lose (backward-looking, set by backup/replication cadence). RTO = how long you can afford to be down (forward-looking, set by how automated and rehearsed recovery is). They are independent numbers driven by different parts of the toolkit — tightening one does not tighten the other, and either number is worthless if it was written down without checking the actual infrastructure can hit it.

3.Testing backups and failover: an untested backup is not evidence of recoverability

A backup job that reports "success" every night for two years tells you a file was written somewhere — it tells you nothing about whether that file can actually rebuild a working system. Backups fail silently in ways a completion status never surfaces: the backup format drifts out of sync with a schema migration, credentials to the restore target quietly expire, a backup completes but is missing a table that was added after the backup script was last touched, or the backup is technically valid but restoring it takes eleven hours against a four-hour RTO. None of these show up as a red X in a dashboard — the job exits 0 every time, right up until the moment someone actually needs the data back and discovers, mid-incident, that the thing they were relying on does not work. The same logic applies to failover: a standby database or a secondary region that has never actually taken production traffic is a hypothesis, not a capability, because the failover path itself (DNS cutover, connection string changes, cache warm-up, dependent services reconnecting) has its own failure modes that only show up when it is actually exercised.

Key features

  • A backup job reporting success only confirms bytes were written somewhere — it does not confirm those bytes can rebuild a working system
  • Common silent backup failures: schema drift between backup format and current schema, expired restore-target credentials, missing tables/objects added after the backup script was last updated
  • A restore that "works" but takes far longer than the stated RTO is still a failed drill — restore time is exactly what a drill is supposed to measure
  • Failover has its own untested failure modes beyond the data itself: DNS/connection-string cutover, cache warm-up, dependent services reconnecting to the new primary
  • A restore/failover drill should be scheduled and treated as a real test with a pass/fail outcome — not an ad hoc exercise done once and never repeated as the system evolves

What a green backup dashboard does and does not prove

What a green backup dashboard does and does not prove
SignalWhat it actually provesWhat it does NOT prove
Backup job exit code 0The backup process ran to completionThe backup is complete, current, or restorable
Backup file size looks normalRoughly the expected amount of data was writtenThe data inside is structurally valid or matches the live schema
Successful restore in a drillThis backup, restored today, produces a working systemThe NEXT backup will restore just as cleanly after the next schema change
Standby promoted successfully in a drillThe failover path worked under test conditionsIt will work identically during a real, unplanned incident with production load
Assumed recoverability vs. drilled recoverability

Backup job reports success

  • File was written to storage
  • Dashboard shows green
  • Nobody has opened the file in a year

Backup was actually restored in a drill

  • Restored into a real environment
  • Schema/data verified against live system
  • Restore time measured against RTO
  • Backup job reports success
    • File was written to storage
    • Dashboard shows green
    • Nobody has opened the file in a year
  • Backup was actually restored in a drill
    • Restored into a real environment
    • Schema/data verified against live system
    • Restore time measured against RTO

Command

text
// A restore/failover drill, scheduled like any other test
quarterly_dr_drill:
  1. Pick last night's backup (not a golden known-good one)
  2. Restore it into an isolated environment
  3. Run schema/row-count/smoke-test checks against it
  4. Measure restore time against the stated RTO
  5. Promote a standby and cut traffic over in staging
  6. Record pass/fail + timing; file a ticket for any gap

A backup job reporting success only proves bytes were written — restoring it, and checking the result against the live system and the stated RTO, is the only thing that proves recoverability. The same applies to failover: a standby that has never actually taken traffic is untested by definition. Schedule restore/failover drills on a recurring cadence (and after schema/infra changes), because a single past success expires the moment the system underneath it changes.

Remember

  • Backups and replication protect against different failure classes — a corrupted write replicates just as faithfully as a good one.
  • RPO (data loss) and RTO (downtime) are independent numbers driven by different parts of the toolkit — tightening one does not tighten the other.
  • A backup job reporting success only proves bytes were written, not that the data can rebuild a working system.
  • Restore and failover drills need a recurring schedule — a single past success expires the moment the schema or infrastructure changes.

Pro tip

  • Tier systems by actual failure cost before choosing a DR posture — multi-region for everything is wasted spend; multi-region for nothing is a gap waiting to be found.
  • State RPO and RTO explicitly per system, then verify the current toolkit can actually hit those numbers — a target the infrastructure cannot meet is worse than no target.

Next up

  • High availability
  • Removing single points of failure
  • Capacity planning

Sources

  • AWS disaster recovery whitepaper — docs.aws.amazon.com
  • Google Cloud DR planning guide — cloud.google.com/architecture
  • Checked 2026-08-25

Spotted a mistake on this page? Tell us.