New See exactly what you're overpaying AWS in under 60 seconds. Try the Calculator for free →

RDS PostgreSQL Read Replica Strategy and Reserved Instance Coverage: The Complete Guide

Picture of Vishal Sharma
Senior Content Strategist

Vishal Sharma

Senior Content Strategist
October 16, 2026

·

19 min read
RDS PostgreSQL Read Replica Strategy and Reserved Instance Coverage: The Complete Guide
In this article

Three Single-AZ db.r8g.xlarge PostgreSQL read replicas in US East (N. Virginia) cost 3 × $0.478 × 730 = $1,046.82/month On-Demand for compute. At the one-year No Upfront rate of $0.320/hr each, the same three replicas cost $700.80/month. The difference is $346.02/month or $4,152.24 over 8,760 hours, assuming full matching usage. Storage, backups and transfer are additional. Prices checked October 15, 2026 against the AWS public price list.

The four-attribute match rule is simple to state and easy to misapply. This guide covers the rule precisely, the PostgreSQL-specific operational considerations that determine whether a replica is a good RI candidate before you buy, the normalization unit strategy for replica fleets, and the cross-region and Multi-AZ DB Cluster cases where most teams leave coverage gaps.

See exactly what you’re overpaying in under 60 seconds. Try the Calculator for free →

The Four-Attribute RI Match Rule for Read Replicas

An RDS Reserved Instance can discount eligible PostgreSQL read-replica usage automatically. Check the engine, instance family, Region and normalized deployment footprint. PostgreSQL size flexibility applies across eligible sizes and Single-AZ/Multi-AZ configurations within the same family and Region; deployment type is not an absolute matching barrier.

Attribute Required Value for Replica Coverage Common Mistake
Database Engine PostgreSQL — must match exactly Buying a MySQL RI for a PostgreSQL replica. Engines must match.
Instance Family Same family (e.g., db.r8g, db.r7g). Size can differ with normalization units. Buying an RI in a different generation (db.r7g vs db.r8g). Generations do not flex across each other.
AWS Region Same region as the replica instance (e.g., us-east-1). Buying an RI in us-east-1 expecting it to cover a cross-region replica in eu-west-1. Regions are independent.
Deployment Type Account for the actual deployment and its normalized units. Eligible PostgreSQL RI benefits can apply across Single-AZ and Multi-AZ usage. Treating a Multi-AZ RI as unusable for Single-AZ usage, or reserving too few normalized units for the fleet.

Source: AWS official RDS Reserved Instances documentation (aws.amazon.com/rds/reserved-instances). Engine, family and Region eligibility and sufficient normalized units determine coverage.

Do not infer RI eligibility solely from the Single-AZ or Multi-AZ label. For size-flexible PostgreSQL reservations, AWS can apply the benefit across eligible deployment configurations using normalization units. A standard Multi-AZ DB instance includes a non-readable standby; a Multi-AZ DB cluster has two readable standbys. Asynchronous read replicas are additional resources whose actual configuration and Region must be included in the coverage calculation.

Also read: RDS Multi-AZ vs Single-AZ: RI coverage mechanics for each deployment type 

How PostgreSQL Read Replication Works: The Mechanics That Affect RI Strategy

Unlike MySQL (which uses binlog-based logical replication), RDS PostgreSQL uses PostgreSQL’s native physical streaming replication to maintain read replicas. Understanding the mechanics is necessary for making correct RI decisions — particularly for cross-region replicas and lag management.

WAL Streaming and Physical Replication Slots

RDS PostgreSQL uses Write Ahead Log (WAL) streaming to replicate changes from the primary to each replica. The primary maintains a replication slot for each replica. This slot tracks where each replica is in the WAL stream and retains WAL segments that the replica has not yet consumed. Source: AWS official PostgreSQL read replica configuration documentation (docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.Replication.ReadReplicas.html).

For same-region replicas, WAL is transferred directly over a secure streaming connection. For cross-region replicas, RDS uses a physical replication slot on the source instance — the slot retains WAL until the cross-region replica has consumed it. If the cross-region replica falls significantly behind, the slot accumulates WAL on the source instance’s storage, increasing Transaction Logs Disk Usage. A severely lagging cross-region replica can cause the source instance’s storage to fill up.

This PostgreSQL-specific risk has a direct bearing on RI purchasing: a cross-region replica with chronic high ReplicaLag is not a good RI candidate until the lag is resolved. Committing to a 1-3 year RI on a replica with an unresolved replication architecture problem locks in cost on an instance that may need to be replaced or resized.

PostgreSQL Read Replica Sizing: Do Not Size Replicas Smaller Than the Primary

AWS re:Post explicitly states: ‘It is a best practice to set your read replicas to match or exceed the primary instance’s specifications. A smaller instance class or different storage type can cause lag.’

The reason: a read replica must process the primary’s entire write workload (replaying WAL records) in addition to serving its own read queries. If the replica is sized smaller than the primary, it has less CPU and memory to process WAL replay under write pressure, causing lag to accumulate. Under high write load on the primary, an undersized replica falls progressively further behind.

The RI implication: validate CPU, memory, storage throughput and replication lag under representative write and read load before committing. Matching or exceeding the source is AWS guidance for avoiding replication bottlenecks, but the correct size depends on workload. A PostgreSQL RI creates a payment commitment; it does not lock the DB configuration, and eligible resizing within the same family can retain size-flexible coverage.

CloudWatch Metrics to Monitor Before Reserving PostgreSQL Replicas

Pull 30 days of the following CloudWatch metrics per read replica before purchasing an RI:

ReplicaLag: measures the lag in seconds between the primary and replica, calculated as SELECT extract(epoch from now() – pg_last_xact_replay_timestamp()) AS reader_lag. Source: AWS official monitoring documentation. A consistently high lag (above 30 seconds for OLTP workloads) signals the replica is undersized or the replication connection is degraded. Do not reserve a lagging replica before addressing the underlying cause.

Oldest Replication Slot Lag: applicable for cross-region replicas using physical replication slots. Shows how far behind the most-lagging replica is in terms of WAL received. A high value means WAL is accumulating on the source.

Transaction Logs Disk Usage: shows how much storage is being used for WAL data retained for cross-region replicas. A steadily increasing value signals a lagging cross-region replica. Source: AWS official.

CPUUtilization (P90): a replica consistently above 80% P90 CPU may be CPU-constrained and may need query tuning or a larger instance before you lock in an RI at the current size.

FreeableMemory: consistently below 15% of total instance memory signals the replica’s working set is not fitting in the buffer pool — sizing up before reserving is warranted.

BufferCacheHitRatio: below 95% means the replica is reading a significant portion of query data from storage rather than memory. A cache hit ratio this low on a replica usually indicates the instance needs more memory (a larger instance class) or the read queries need index optimization.

AWS CloudWatch dashboard for an RDS PostgreSQL read replica showing ReplicaLag at 0.8 seconds, CPUUtilization P90 at 42 percent, FreeableMemory at 28 percent, and BufferCacheHitRatio at 99.2 percent -- all healthy, replica ready for RI purchase.

Size Flexibility and Normalization Units for PostgreSQL Read Replica Fleets

RDS PostgreSQL supports size flexibility for Reserved Instances, the same as MySQL, MariaDB, and Aurora. Size flexibility means one RI at a specific size within an instance family can partially or fully cover instances at different sizes within the same family, based on normalization units. Source: AWS official RDS Reserved Instances documentation.

Normalization units by size within a family (applies to PostgreSQL, MySQL, MariaDB, Aurora, and Oracle BYOL):

Instance Size Normalization Units Generic Unit Example (where sizes are offered)
micro 0.5 2x micro instances covered per 1x small RI
small 1 Baseline unit
medium 2 1x medium covered by 2x small RIs
large 4 1x large covered by 4x small RIs or 2x medium RIs
xlarge 8 1x xlarge covered by 2x large RIs or 8x small RIs
2xlarge 16 1x 2xlarge covered by 2x xlarge RIs or 4x large RIs
4xlarge 32 1x 4xlarge covered by 2x 2xlarge RIs or 4x xlarge RIs

Source: AWS official RDS Reserved Instances size flexibility documentation. Normalization units apply within the same instance family only — they do not cross families (db.r8g units cannot apply to db.m8g) or generations (db.r8g units cannot apply to db.r7g).

The Optimal RI Purchasing Strategy for PostgreSQL Replica Fleets

For size-flexible engines including PostgreSQL, the AWS-recommended strategy is to purchase RIs at the smallest size in the target instance family. This gives maximum deployment flexibility because a small-size RI can partially cover any larger instance in the same family, and multiple small RIs can combine to cover one larger instance.

Example: three db.r8g.xlarge Single-AZ replicas use 24 normalization units. Three xlarge RIs or six large RIs provide the same 24 units. If one xlarge replica is resized to large, the fleet uses 20 units and four committed units may become unused unless other eligible usage absorbs them. Buying smaller denominations does not eliminate that utilization risk.

The practical benefit is automatic allocation across eligible sizes within the family. Large and xlarge reservations both participate in size flexibility; smaller denominations are not a guarantee against unused commitment. Source: AWS RDS Reserved Instances size-flexibility documentation.

Generation constraint — this breaks size flexibility: normalization units apply within the same instance family and generation only. A db.r8g (Graviton4) RI does NOT cover a db.r7g (Graviton3) instance and vice versa. Mixing generations in your replica fleet requires separate RIs for each generation. Before purchasing RIs for a mixed-generation replica fleet, consolidate to a single generation.

Cross-Region Read Replicas: The RI Coverage Gap

An RI in us-east-1 does not cover a read replica in eu-west-1. Reserved Instances are regional billing instruments. Each region requires its own RI purchase. Source: AWS official RDS Reserved Instances documentation.

Teams with cross-region PostgreSQL read replicas frequently create RIs in the primary region and then discover their cross-region replicas are still billing at on-demand rates. The cross-region replica is visible in the RDS console but the RI attribute match fails on Region — the only qualifying RI is in the wrong region.

Scenario: a primary and one replica in us-east-1 can use matching PostgreSQL reservations in that Region. A replica in eu-west-1 needs matching coverage purchased for eu-west-1. The N. Virginia $0.478 rate is not a valid quote for Ireland. Select the replica’s actual Region and use its local On-Demand and reserved prices before estimating savings.

Cross-Region annual compute savings equal (local On-Demand hourly rate minus the full effective RI hourly rate) × matched hours, less any unused commitment costs. Cross-Region replication transfer and replica storage remain separate charges. The prior $1,382 estimate used an unverified Ireland rate and has been removed.

Also read: RDS Reserved Instances: Complete Guide

Multi-AZ DB Cluster vs Standard Multi-AZ: Different RI Requirements

RDS PostgreSQL offers two Multi-AZ deployment options, and they have very different RI requirements. Confusing them is a common — and expensive — RI purchasing error.

Standard Multi-AZ (Single-Standby): Two-Instance Coverage

Standard Multi-AZ deploys one writer and one non-readable standby instance in a second Availability Zone. The standby is a passive failover target — it does not serve any read queries. No read replicas are included. To get read scaling, you add explicit read replica instances on top.

RI coverage: one matching Multi-AZ RI or two equivalent Single-AZ RIs can cover the two-instance footprint through PostgreSQL size flexibility. Additional read replicas add their own normalized usage. Check the actual deployment, family and Region rather than requiring a particular purchase label.

Multi-AZ DB Cluster (Two Readable Standbys): Three-Instance Coverage

Multi-AZ DB Cluster is a deployment option for supported PostgreSQL and MySQL versions. It deploys one writer and two readable standby instances across three Availability Zones. Unlike the standard Multi-AZ standby, the two readable standbys in a DB Cluster actively serve read queries and appear as separate instances in the RDS console.

RI coverage: a Multi-AZ DB cluster has one writer and two readable standbys. AWS documents coverage using three matching Single-AZ RIs, or one matching Multi-AZ RI plus one Single-AZ RI. Equivalent normalized units within the eligible PostgreSQL family also matter. One Multi-AZ RI alone does not cover the full three-instance footprint. Source: AWS RDS reserved-instance billing examples.

Supported Multi-AZ DB clusters can have additional asynchronous read replicas. Include these separately in the normalized usage calculation, using each replica’s actual Region, instance family and deployment configuration.

Deployment Instances RI Purchases Needed Reader Traffic
Standard Multi-AZ 1 writer + 1 passive standby 1 Multi-AZ RI or 2 equivalent Single-AZ RIs None from standby — primary only
Standard Multi-AZ + 3 same-region replicas 1 Multi-AZ primary + 3 Single-AZ replicas 1 Multi-AZ RI + 3 Single-AZ RIs 3 replicas serve reads
Multi-AZ DB Cluster (no extra replicas) 1 writer + 2 readable standbys (3 total) 3 Single-AZ RIs or 1 Multi-AZ + 1 Single-AZ RI 2 readable standbys serve reads
Multi-AZ DB Cluster + 3 extra read replicas 1 writer + 2 standbys + 3 replicas (6 total) 6 Single-AZ RIs or 1 Multi-AZ + 4 Single-AZ RIs 2 standbys + 3 replicas serve reads

Source: AWS official Multi-AZ deployment documentation, AWS announcement May 2023 (15 read replicas from Multi-AZ DB Cluster), Usage.ai live RDS RI guide. Verify RI purchase requirements at aws.amazon.com/rds/reserved-instances before purchasing.

Also read: RDS Multi-AZ vs Single-AZ: RI Coverage Implications for each Deployment Type 

PostgreSQL 11 Extended Support: Upgrade Before Reserving Any Replica

PostgreSQL 11 entered Year 3 Extended Support on April 1, 2026. The Year 3 Extended Support surcharge is $0.200/vCPU-hr. This charge applies on top of the standard instance rate and is NOT reduced by the Reserved Instance discount. Source: Usage.ai live RDS RI complete guide and AWS official RDS pricing page.

For a compatible four-vCPU PostgreSQL 11 instance in N. Virginia, the year-3 Extended Support surcharge is 4 × $0.200 = $0.800/hr, or $584 over 730 hours. Add that to the actual compatible instance’s base or reserved rate. Do not use db.r8g.xlarge as a PostgreSQL 11 configuration. An RI discounts eligible base usage, not Extended Support, and does not prevent upgrading the engine during the term. Source: AWS PostgreSQL release calendar.

The correct action for any PostgreSQL 11 read replica: upgrade the engine before purchasing an RI. A 3-year RI on a PostgreSQL 11 replica locks in the RI commitment for the full term AND requires paying the Extended Support surcharge for however long the upgrade is delayed. PostgreSQL 11 to PostgreSQL 16 is a supported in-place major version upgrade in RDS. Use Blue/Green Deployments for a production upgrade with minimal downtime.

Also read: RDS MySQL Read Replicas: How They Affect Your RI Strategy

Read Replica Promotion: What Happens to the RI

A PostgreSQL read replica can be promoted to become a standalone primary database instance. After promotion, it is no longer a replica — it becomes an independent single-AZ instance that can accept writes. Source: AWS official PostgreSQL read replica documentation.

The RI coverage after promotion: the promoted instance is still a Single-AZ PostgreSQL instance in the same region with the same instance family. The RI continues to cover it if all four attributes still match. Promotion does not change the instance’s billing attributes from the RI’s perspective. The RI coverage is maintained.

What does change: the promoted instance is now a standalone instance, not a replica. If you had purchased a second RI to cover both the original primary and this replica simultaneously, promoting the replica creates a second standalone instance that both RIs can potentially cover. The RI that was covering the replica now covers the promoted standalone instance.

Edge case: if you promote a read replica and intend to create a new replica to replace it, the new replica requires a new RI (or the existing RI must match the new replica’s attributes). If the new replica is in a different instance family or size than the promoted one, the RI previously covering the promoted replica may not match the new one.

AWS RDS console showing a PostgreSQL read replica being promoted to standalone primary, with a Reserved Instance panel showing the Single-AZ db.r8g.xlarge RI remaining active and covering the promoted instance at the discounted RI rate.

The Complete RI Purchase Checklist for PostgreSQL Read Replica Fleets

Follow this sequence for every PostgreSQL read replica fleet before purchasing Reserved Instances:

Step 1: Audit All Replicas with the AWS CLI

Run the following command to list all RDS instances, including whether they are read replicas:

aws rds describe-db-instances –query ‘DBInstances[*].[DBInstanceIdentifier,DBInstanceClass,MultiAZ,ReadReplicaSourceDBInstanceIdentifier,AvailabilityZone,DBInstanceStatus,EngineVersion]’ –output table

Look for instances with a non-null ReadReplicaSourceDBInstanceIdentifier — these are read replicas. Record the DBInstanceClass, Region (from the console), and EngineVersion for each.

Step 2: Check Engine Version for Extended Support

PostgreSQL 11 entered year-3 Extended Support pricing April 1, 2026. Prioritize compatibility testing and an upgrade to a currently supported major version. PostgreSQL 16 is not an AWS-designated LTS exception; follow its published support calendar. RI coverage can continue across a compatible engine-version upgrade.

Step 3: Validate Replica Health Before Committing

Pull 30 days of ReplicaLag, CPUUtilization (P90), FreeableMemory, and BufferCacheHitRatio for each replica from CloudWatch. ReplicaLag consistently above 30 seconds: investigate before reserving. CPUUtilization P90 above 80%: consider sizing up before reserving. FreeableMemory below 15% of total: consider sizing up before reserving. BufferCacheHitRatio below 95%: investigate buffer pool sizing before reserving.

Step 4: Identify Cross-Region Replicas and Their Regions

Cross-region replicas require eligible RI coverage purchased in each replica Region. An eu-west-1 replica needs coverage in eu-west-1; the deployment footprint and normalized units determine the required amount.

Step 5: Determine Multi-AZ DB Cluster vs Standard Multi-AZ

A Multi-AZ DB cluster has a three-instance footprint: three equivalent Single-AZ RIs or one Multi-AZ plus one Single-AZ RI can cover it. Standard Multi-AZ has a two-instance footprint. Add separate asynchronous replica usage and verify eligible normalized units.

Step 6: Choose Instance Size and RI Type

Choose RI coverage for the fleet’s engine, family, Region and actual normalized usage. PostgreSQL size flexibility can span eligible Single-AZ and Multi-AZ usage. Reserve a stable baseline after checking resizing plans; do not assume the purchase denomination removes unused-capacity risk.

Step 7: Purchase in the Correct Region

In the RDS console, ensure the Region selector (top right corner) matches the region of the replicas you are covering before clicking Purchase Reserved DB Instances. Selecting the wrong region results in an RI that covers nothing in the target region.

Pricing Comparison: On-Demand vs Reserved for PostgreSQL Read Replicas

Single-AZ PostgreSQL instance(s) On-Demand/hr 1-year No Upfront/hr 730-hour compute: OD / RI Annual compute saving (8,760h)
1 × db.r8g.large $0.239 $0.160 $174.47 / $116.80 $692.04
1 × db.r8g.xlarge $0.478 $0.320 $348.94 / $233.60 $1384.08
1 × db.r8g.2xlarge $0.956 $0.641 $697.88 / $467.93 $2759.40
3 × db.r8g.xlarge $1.434 $0.960 $1046.82 / $700.80 $4152.24

US East (N. Virginia), USD, checked October 15, 2026. Full matching usage assumed; storage, transfer, backup and Extended Support excluded. Source: AWS public RDS price list.

How Usage.ai Handles PostgreSQL Read Replica RI Coverage

Usage.ai analyzes the full RDS PostgreSQL instance fleet — primaries and read replicas identified separately — with the same 24-hour utilization refresh cycle. The platform identifies read replica instances by examining the ReadReplicaSourceDBInstanceIdentifier attribute from the AWS API, checks their actual deployment and matching normalized usage, and includes them in the RI recommendation and purchase workflow.

For cross-region replicas, Usage.ai identifies the replica region from the AWS API and generates separate RI recommendations for each region. If a replica in eu-west-1 is running at on-demand rates while an RI purchased in us-east-1 was intended to cover it, the region mismatch is flagged explicitly with the exact monthly cost of the gap. The 24-hour refresh cycle means this flag surfaces quickly rather than sitting undetected through multiple monthly billing cycles.

For PostgreSQL 11 replicas: Usage.ai surfaces the Extended Support surcharge calculation and flags them as requiring engine upgrade before RI purchase. A replica running PostgreSQL 11 is excluded from RI recommendations until the engine version is confirmed upgraded.

For Multi-AZ DB cluster configurations, assess the entire three-instance footprint. Three equivalent Single-AZ RIs or one Multi-AZ plus one Single-AZ RI are valid AWS coverage examples. Review any recommendation against AWS eligibility and normalized units before approving a purchase.

Eligible Usage.ai Flex commitments may receive cashback under the applicable agreement when their cost exceeds the equivalent On-Demand cost for the same usage. This is not a refund of every unused commitment dollar or cancellation of the underlying AWS reservation. Published documentation describes payout 90 days after cashback accrues. Check eligibility, calculation and contract terms before relying on protection. Fees are a percentage of realized savings. How cashback works.

See how Usage.ai identifies PostgreSQL read replica RI coverage gaps across your full RDS fleet.

Start your free PostgreSQL RI coverage analysis with Usage.ai

 

You’re Overpaying AWS. See by How Much in 60 Seconds.Upload your AWS bill and get your exact overspend number for free. No account access, or commitment required.FIND MY SAVINGS

 

Frequently Asked Questions

1. Can Reserved Instances be applied to RDS PostgreSQL read replicas?

Yes. Eligible RDS PostgreSQL RI benefits apply automatically to read-replica usage with matching engine, family and Region. AWS uses normalization units for size-flexible coverage, including eligible Single-AZ and Multi-AZ configurations. Check sufficient units for the actual deployment footprint.

 

2. Do I need a Multi-AZ RI for read replicas?

Not necessarily. PostgreSQL size flexibility can apply eligible RI benefits across Single-AZ and Multi-AZ usage in the same family and Region. Choose sufficient normalized units for the actual replica configuration; do not assume Multi-AZ RIs can never cover Single-AZ usage.

 

3. Does an RI in us-east-1 cover a cross-region read replica in eu-west-1?

No. An RI purchased for us-east-1 does not cover eu-west-1 usage. Purchase eligible PostgreSQL coverage in the replica’s Region, with matching family and sufficient normalized units for its deployment.

 

4. How many RIs do I need for a Multi-AZ DB Cluster?

A Multi-AZ DB cluster has one writer and two readable standbys. AWS documents coverage using three matching Single-AZ RIs or one matching Multi-AZ RI plus one Single-AZ RI. Equivalent eligible normalized units apply. A standard Multi-AZ DB instance has a two-instance footprint and a non-readable standby.

 

5. Should I size read replicas the same as the primary before reserving?

Validate the replica under representative load before reserving. AWS recommends matching or exceeding the source specifications to avoid replication bottlenecks, but CPU, memory, I/O, query load and ReplicaLag should guide sizing. An RI does not lock the DB configuration; eligible resizing within the PostgreSQL family can retain size-flexible coverage.

 

6. How does size flexibility apply to PostgreSQL read replica RIs?

Eligible PostgreSQL RI benefits use normalization units within the same family and Region. For example, two large Single-AZ reservations provide the same units as one xlarge Single-AZ reservation where those sizes are offered. Coverage can also span eligible Single-AZ and Multi-AZ configurations. It does not cross instance families or generations, and unused units still cost money.

 

7. Does PostgreSQL 11 Extended Support affect RI strategy?

Yes, significantly. PostgreSQL 11 is in Year 3 Extended Support since April 1, 2026 at $0.200/vCPU-hr surcharge. This surcharge applies on top of the RI rate and is not reduced by the RI discount. Upgrade to a supported PostgreSQL version before purchasing any RI for PostgreSQL 11 replicas. An RI creates a payment obligation but does not lock the engine version. A compatible upgrade can stop Extended Support charges while matching reservation coverage continues.

See cloud commitment management in action.
More from Usage.ai
Latest from our blogs