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.
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
| Service | Free allowance | Overage rate |
|---|---|---|
| RDS | Backup storage equal to allocated storage | $0.095/GB-mo (us-east-1) |
| Aurora | Backup equal to cluster volume for 1 day | $0.021/GB-mo per extra day retained |
| Cloud SQL | None | $0.08/GB-mo for backups |
| Azure Flexible Server | Backup equal to allocated storage | about $0.095/GB-mo LRS beyond |
| DynamoDB PITR | None | $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.
| Database | Size | Daily change | 7-day backup storage | 35-day |
|---|---|---|---|---|
| Reference data, read-heavy | 500 GB | 2 GB | about 514 GB | about 570 GB |
| Transactional, moderate writes | 500 GB | 40 GB | about 780 GB | about 1,900 GB |
| Event ingestion, write-heavy | 500 GB | 150 GB | about 1,550 GB | about 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
| Environment | PITR retention | Snapshots | Cross-region |
|---|---|---|---|
| Production tier one | 14 days | Monthly for 12 months | Yes |
| Production tier two | 7 days | Monthly for 6 months | No |
| Staging | 1 day | None | No |
| Development | 0 to 1 day | None | No |
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.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.