databasebackupcost-optimizationfinops

Point-in-time recovery cost: what continuous backup really charges

PITR is billed on change volume, not database size, which is why a small write-heavy database can cost more to back up than a large static one. Here is how the meters work across AWS, Azure, and GCP.

The C3X Team··7 min read

Quick answer

Point-in-time recovery is billed on retained change volume rather than database size. RDS includes backup storage equal to your allocated storage at no charge and bills $0.095 per GB-month beyond it in us-east-1. Aurora continuous backup is $0.021 per GB-month for the first day of retention and then per additional day beyond that. A 500 GB RDS database with 300 GB of allocated storage free and 800 GB of retained backups pays about $47.50 per month for the overage. The lever that matters is retention days: moving from 35 days to 7 typically cuts PITR storage by 60 to 75 percent on a write-heavy database, because each extra day retains another day of change logs.

Backup cost rarely gets attention until someone sets retention to the maximum on every database because it felt responsible. Understanding the meter changes that decision, because PITR does not bill the way people assume: it bills changed data over a retention window, so write rate matters more than dataset size.

How the meters work

ServiceFree allowanceOverage rate
RDSBackup storage equal to allocated storage$0.095/GB-mo (us-east-1)
AuroraBackup equal to cluster volume for 1 day$0.021/GB-mo per extra day retained
Cloud SQLNone$0.08/GB-mo for backups
Azure Flexible ServerBackup equal to allocated storageabout $0.095/GB-mo LRS beyond
DynamoDB PITRNone$0.20/GB-mo of table size

Two shapes appear here. RDS and Azure give you a free allowance sized to your allocated storage, which means a lightly written database with short retention is effectively free to back up. Aurora and Cloud SQL bill from a lower baseline but at a lower per-GB rate. DynamoDB is the outlier: PITR is charged on table size at $0.20 per GB-month regardless of change rate, which makes it expensive on large tables and trivial on small ones.

Why write rate drives the bill

Continuous backup works by retaining a base snapshot plus the transaction logs needed to replay to any point in the window. The log volume is proportional to writes. Two databases of identical size can therefore have wildly different backup bills.

DatabaseSizeDaily change7-day backup storage35-day
Reference data, read-heavy500 GB2 GBabout 514 GBabout 570 GB
Transactional, moderate writes500 GB40 GBabout 780 GBabout 1,900 GB
Event ingestion, write-heavy500 GB150 GBabout 1,550 GBabout 5,750 GB

With 500 GB of allocated storage free on RDS, the read-heavy database pays about $6.65 per month at 35 day retention, the transactional one about $133, and the write-heavy one about $499. Same database size, a 75x spread in backup cost. That is why a blanket retention policy across a fleet is usually the wrong instrument.

Choosing a retention window

Retention should answer one question: how long could a data corruption go undetected before someone notices? For most transactional systems with active monitoring and daily reconciliation, that is one to three days, and seven days of PITR is generous. For systems where a subtle logic bug could silently corrupt records that nobody inspects for weeks, longer retention earns its cost.

The efficient pattern for most fleets is short PITR plus long-lived periodic snapshots. Keep 7 days of continuous recovery for operational mistakes, then retain monthly snapshots for a year for compliance and forensic needs. Snapshots are incremental and cheaper per GB, and a monthly snapshot chain costs far less than 365 days of continuous logs. On RDS, manual snapshots are billed at $0.095 per GB-month of the data they hold, so twelve monthly snapshots of a 500 GB database with slow drift might hold 800 GB total, about $76 per month, against thousands for year-long PITR on a write-heavy database.

The cross-region multiplier

Cross-region automated backups copy your backup data to another region, where it is billed again at the destination region's rate, plus cross-region data transfer at $0.02 per GB for the initial and incremental copies. A 1.9 TB backup set replicated cross-region adds roughly $180 per month in duplicate storage plus the transfer. That is often the right call for a tier-one system and clearly wrong for a development database, so it belongs in a per-environment policy rather than a global default.

A practical policy

EnvironmentPITR retentionSnapshotsCross-region
Production tier one14 daysMonthly for 12 monthsYes
Production tier two7 daysMonthly for 6 monthsNo
Staging1 dayNoneNo
Development0 to 1 dayNoneNo

Applying that policy across a fleet of thirty databases where every one previously ran 35 days with cross-region copies commonly cuts backup spend by 70 to 85 percent, and the recovery capability that actually gets used, restoring a mistake from yesterday, is untouched.

Set retention explicitly in Terraform and price it before you merge, because backup_retention_period is a one-line change with a four-figure annual consequence on a write-heavy database. Compare configurations against the resource catalog, and see how backup charges accumulate for the wider picture.

FAQ

How is point-in-time recovery billed?

On retained change volume, not database size. Continuous backup keeps a base snapshot plus the transaction logs needed to replay to any point in the window, and log volume is proportional to writes. RDS includes backup storage equal to allocated storage free and charges $0.095 per GB-month beyond in us-east-1; Aurora charges $0.021 per GB-month per additional retention day; Cloud SQL charges $0.08 per GB-month from the first byte.

Why do two databases of the same size have different backup bills?

Because write rate drives log volume. A 500 GB read-heavy database changing 2 GB per day retains about 570 GB over 35 days, while a write-heavy one changing 150 GB per day retains about 5,750 GB. On RDS with 500 GB free that is roughly $6.65 per month versus $499, a 75-fold spread at identical database size. Blanket fleet-wide retention policies ignore this entirely.

How long should PITR retention be?

Long enough to cover how long a data corruption could go undetected. For transactional systems with active monitoring and daily reconciliation that is one to three days, so seven days of PITR is generous. Longer retention earns its cost only where a subtle logic bug could silently corrupt records nobody inspects for weeks. Moving from 35 days to 7 typically cuts PITR storage 60 to 75 percent on write-heavy databases.

Is it cheaper to use snapshots instead of long PITR?

For long horizons, yes. The efficient pattern is 7 days of continuous recovery for operational mistakes plus monthly snapshots retained for a year for compliance. Twelve monthly snapshots of a 500 GB database with slow drift might hold 800 GB total, about $76 per month at $0.095 per GB-month, against thousands for a year of continuous logs on a write-heavy database.

What do cross-region backups add?

Duplicate storage billed at the destination region's rate plus cross-region transfer at $0.02 per GB for the initial and incremental copies. A 1.9 TB backup set replicated cross-region adds roughly $180 per month in storage alone. That is usually justified for a tier-one production system and clearly wasteful for development, so it belongs in a per-environment policy rather than a global default.

How does C3X help with backup retention cost?

C3X prices backup retention settings from Terraform before you merge, so backup_retention_period and cross-region copy flags carry a visible cost figure at review time. Because those are one-line changes with four-figure annual consequences on write-heavy databases, and because the free allowance depends on allocated storage, seeing the number in the pull request is where the decision is cheapest to get right.

What to do next

Price retention before you set it to the maximum. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.