databasesnetworkingcost-optimizationaws

Database replication traffic cost: what keeping replicas in sync costs

A read replica in another zone or region is not just a second instance bill. Every write is shipped over a metered network, and for write-heavy systems the transfer can rival the compute. Here is the breakdown.

The C3X Team··7 min read

Quick answer

Replication traffic is billed as data transfer. On AWS, a cross-AZ read replica costs 0.01 dollars per GB each way, and a cross-region replica costs about 0.02 dollars per GB from us-east-1. A database generating 1 TB of write-ahead log per month pays roughly 20 dollars cross-region and about 20 dollars cross-AZ counting both directions. At 50 TB of monthly change, cross-region replication costs about 1,000 dollars in transfer alone, before the replica's own instance and storage charges. Aurora global databases add a separate replicated write I/O charge of 0.20 dollars per million operations.

When teams budget for a read replica they usually count one thing: a second instance at the same hourly rate as the primary. That is the visible half. The invisible half is the stream of changes flowing from primary to replica, continuously, over a network that meters every gigabyte. For a write-heavy system that stream is large, and for a cross-region replica it is expensive.

What actually crosses the wire

Replication does not ship your whole database repeatedly; it ships changes. For PostgreSQL that is the write-ahead log, for MySQL the binary log, for MongoDB the oplog. The volume is driven by write rate and by write amplification rather than by database size. A 5 TB database that is mostly read-only may generate only a few GB of WAL per day. A 200 GB database taking heavy updates can generate more than that in an hour.

A useful rule: WAL volume is typically 1.5 to 3 times the logical size of the data changed, because full-page writes after a checkpoint ship entire 8 KB pages even for a small update. Turning on WAL compression in PostgreSQL commonly cuts that by 30 to 50 percent on update-heavy workloads.

The rates

Replica placementTransfer rateCost per TB of change
Same AZFree0 USD
Cross AZ (Multi-AZ standby)Free for RDS Multi-AZ0 USD
Cross AZ (read replica)0.01 per GB each wayabout 20 USD
Cross region (us-east-1 out)0.02 per GBabout 20 USD
Cross region (to Asia Pacific)0.08 to 0.09 per GB80 to 90 USD

The important nuance is that RDS Multi-AZ replication to a standby in the same region does not incur a separate data transfer charge; it is bundled into the Multi-AZ premium, which roughly doubles the instance and storage price. Read replicas are different: a cross-AZ read replica does incur regular inter-AZ transfer charges. That distinction is explored in RDS Multi-AZ cost explained.

A worked example

Take an order-processing database on db.r6g.2xlarge in us-east-1, on-demand at about 0.96 dollars per hour, so roughly 700 dollars per month. It takes 2,000 writes per second averaging 1.5 KB of logical change, which after write amplification produces about 4 KB of WAL per write. That is 8 MB per second, or roughly 20.7 TB per month.

A cross-region read replica in eu-west-1 receives all 20.7 TB. At 0.02 dollars per GB that is about 414 dollars per month in transfer, on top of the replica's own 700 dollars of compute and its storage. The transfer is 37 percent of the replica's compute cost, which is not a rounding error. Send the same stream to two regions and you pay twice, because each destination is a separate egress flow.

Aurora global databases charge differently

Aurora global database replication is billed as replicated write I/O at 0.20 dollars per million I/O operations, in addition to cross-region transfer for the physical replication stream. A workload performing 500 million replicated write I/Os per month pays about 100 dollars in that meter alone. The Aurora I/O-Optimized configuration removes I/O charges in exchange for roughly 30 percent higher instance and storage rates, which usually pays off once I/O exceeds about 25 percent of the total Aurora bill.

Reducing the stream

The cheapest replication byte is the one you never send. Practical levers: enable WAL or binlog compression, which typically saves 30 to 50 percent. Batch small updates so fewer full-page writes fire. Avoid updating rows with large unchanged TOAST columns, since some configurations ship the whole value. Use logical replication filtered to the tables the replica actually serves rather than physical replication of everything. And question whether the replica needs to be cross-region at all: a cross-AZ replica costs half as much per GB and often satisfies the availability requirement. Related analysis is in cross-region replication cost.

Do not forget the backup stream

Replication is continuous, but backups are periodic and also cross the network. Copying automated snapshots to a second region charges cross-region transfer on the copied bytes plus storage at the destination. A 5 TB database snapshotted and copied weekly moves 20 TB per month if the copies are full rather than incremental, which at 0.02 dollars per GB is about 400 dollars. Incremental copies after the first one usually move far less. The full picture is in backup data transfer cost. Price your database topology before you deploy it against the resource catalog.

FAQ

Is database replication traffic billed separately?

For read replicas, yes. A cross-AZ read replica on AWS incurs inter-AZ transfer at 0.01 dollars per GB in each direction, and a cross-region replica incurs cross-region egress at about 0.02 dollars per GB from us-east-1. RDS Multi-AZ replication to a same-region standby is the exception: it carries no separate transfer charge because it is bundled into the Multi-AZ premium.

How much data does replication actually move?

It ships changes, not the whole database, so volume follows write rate rather than data size. Write-ahead log volume is typically 1.5 to 3 times the logical size of changed data because full-page writes after a checkpoint send entire 8 KB pages for small updates. A 200 GB database under heavy updates can generate more log per hour than a 5 TB mostly-read database generates per day.

What does a cross-region read replica cost in transfer?

Take a database taking 2,000 writes per second at 1.5 KB logical change each, producing about 4 KB of WAL per write after amplification. That is 8 MB per second, roughly 20.7 TB per month. At 0.02 dollars per GB to another US or European region, the transfer alone is about 414 dollars per month, which is around 37 percent of a db.r6g.2xlarge replica's compute cost.

How does Aurora global database billing differ?

Aurora charges replicated write I/O at 0.20 dollars per million operations in addition to cross-region transfer for the replication stream. A workload doing 500 million replicated write I/Os per month pays about 100 dollars in that meter. Aurora I/O-Optimized removes I/O charges for roughly 30 percent higher instance and storage rates, which usually pays off once I/O exceeds about 25 percent of the Aurora bill.

How do I reduce replication traffic cost?

Enable WAL or binlog compression, which typically saves 30 to 50 percent. Batch small updates so fewer full-page writes fire. Avoid updating rows with large unchanged large-object columns. Use logical replication filtered to the tables the replica serves rather than replicating everything physically. And check whether cross-AZ placement, at half the per-GB rate, satisfies the requirement instead of cross-region.

How does C3X help with replication cost?

C3X prices database infrastructure from Terraform before deployment, including replica instances, storage, and the placement that determines whether replication traffic is free, cross-zone, or cross-region. Seeing a cross-region replica's full cost in the pull request, rather than after a month of continuous transfer, is where the placement decision can still be revisited.

What to do next

Price replicas and their traffic before you create them. C3X costs your Terraform against a live resource 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.