Managed Database Comparison
AWS RDS vs Aurora: Which Managed Database Is Right for You?
Aurora is not simply "better RDS" — understanding the I/O cost model, storage architecture differences, and HA characteristics determines which service fits your workload.
<div class="quick-answer"> **Quick Answer:** Aurora wins for HA-critical, read-heavy workloads requiring fast failover. RDS wins for simpler, low-I/O workloads where Aurora's I/O pricing adds unnecessary cost. </div> ## Freshness Check (June 2026) Use this page as a decision framework, then validate the latest pricing, quotas, and region-level feature parity in AWS documentation before final sign-off. This page was refreshed against official AWS announcements and service documentation published in the last 12 months. Confirm region support, quotas, and pricing before final architecture sign-off. - [AWS What's New](https://aws.amazon.com/about-aws/whats-new/) Amazon RDS and Aurora are both managed relational database services, but they are architecturally distinct products with different cost models, availability characteristics, and performance profiles. Aurora is often described as "RDS but faster" — that framing misses the nuance that matters for production architecture decisions. This comparison focuses on the technical and economic differences that affect real workloads, including Aurora's I/O pricing model that surprises teams when their first monthly bill arrives. ## Architecture Differences The most important difference between RDS and Aurora is the storage layer. Standard RDS uses Amazon EBS volumes attached to the database instance. Replication (for Multi-AZ deployments) is handled at the storage level using synchronous EBS mirroring to a standby instance in a second Availability Zone. The storage grows in fixed increments and is bound to the instance's EBS configuration. Aurora uses a purpose-built distributed storage system that is decoupled from the compute layer. Aurora storage automatically replicates data 6 ways across 3 Availability Zones — this happens at the storage level, not the instance level. Aurora storage auto-scales in 10 GB increments up to 128 TiB. The compute (instances) and storage are independently scalable. | Characteristic | RDS (Provisioned) | Aurora | | ----------------- | ---------------------------------------------- | ------------------------------------------ | | Storage backend | EBS volumes | Distributed Aurora storage | | Replication | Multi-AZ EBS mirror (optional) | Always 6-way, 3-AZ (built-in) | | Storage scaling | Manual or auto in 10 GB increments | Auto-scales, up to 128 TiB | | Read replicas | Up to 5 (separate storage per replica) | Up to 15 (shared storage volume) | | Failover time | ~30-120 seconds (Multi-AZ) | ~30 seconds (Aurora Replica) | | Storage cost | Based on EBS gp3/io1 pricing | Per-GB-month + I/O charges | | I/O charges | No per-I/O charge | Yes (Aurora Standard) / No (I/O-Optimized) | | Engines supported | MySQL, PostgreSQL, MariaDB, Oracle, SQL Server | MySQL-compatible, PostgreSQL-compatible | ## Performance Comparison Aurora's distributed storage architecture provides concrete advantages for specific workload patterns: - **Read scaling:** Aurora Replicas share the same underlying storage as the primary. Replication lag is typically under 100ms (often milliseconds). RDS read replicas replicate via binary log replication, which introduces higher lag under write load. - **Failover speed:** Aurora fails over to a read replica in ~30 seconds because the replica is already attached to the same storage. RDS Multi-AZ failover involves remounting EBS to the standby, typically taking 30–120 seconds. - **Crash recovery:** Aurora's distributed storage architecture means the database does not need to replay a redo log after a crash. Recovery is near-instant. For write-heavy single-instance workloads, RDS and Aurora perform similarly. The Aurora storage layer's 6-way write amplification means more I/O operations per write — which is why the I/O cost model matters. ## Cost Breakdown This is where Aurora's real cost differs from marketing comparisons. **Aurora Standard (per-I/O pricing):** - Instance: ~20% premium over equivalent RDS instance - Storage: $0.10/GB-month - I/O requests: $0.20 per million requests - Backup storage: $0.021/GB-month (beyond free tier) **Aurora I/O-Optimized (no per-I/O charge):** - Instance: ~30-40% premium over equivalent RDS instance - Storage: $0.225/GB-month - I/O requests: Included (no charge) - Backup storage: $0.021/GB-month **RDS Provisioned (PostgreSQL/MySQL, gp3 storage):** - Instance: Baseline pricing - Storage: $0.115/GB-month (gp3) - I/O requests: No per-I/O charge - Backup storage: $0.095/GB-month (beyond free tier) **Estimated monthly cost — db.r6g.large, 100 GB storage, us-east-1:** | Configuration | Instance | Storage | I/O (500M/mo) | Total | | -------------------- | -------- | ------- | ------------- | ----- | | RDS Multi-AZ | ~$185 | $23 | $0 | ~$208 | | Aurora Standard | ~$222 | $10 | $100 | ~$332 | | Aurora I/O-Optimized | ~$296 | $22.50 | $0 | ~$319 | At 500 million I/O operations per month, Aurora Standard is more expensive than both RDS and Aurora I/O-Optimized. At 1 billion+ I/O operations per month, Aurora I/O-Optimized starts to deliver savings versus Aurora Standard, and its higher instance cost may still be less than RDS Multi-AZ for highly available deployments. ## High-Availability Features | Feature | RDS Multi-AZ | Aurora | | -------------------------- | ------------------------- | --------------------------------- | | Automatic failover | Yes (~30-120s) | Yes (~30s with replica) | | Read replicas | Up to 5, separate storage | Up to 15, shared storage | | Cross-region replicas | Read replicas | Aurora Global Database | | RPO | Near-zero (synchronous) | Near-zero (6-way synchronous) | | RTO | ~30-120 seconds | ~30 seconds | | Multi-region active-active | No native support | Aurora Global Database (< 1s RPO) | | Serverless option | No | Aurora Serverless v2 | Aurora Global Database is a differentiated feature with no direct RDS equivalent — it replicates data to up to 5 secondary regions with typical replication lag under 1 second, enabling near-zero RPO cross-region disaster recovery and read traffic distribution to geographically distributed users. ## When RDS Is the Right Choice RDS is the appropriate choice when the workload does not justify Aurora's cost or complexity premium. **Choose RDS when:** - Your workload is development, testing, or early-stage production (Aurora's minimum cost is higher) - You need Oracle or SQL Server (Aurora does not support these engines) - Traffic and I/O volumes are low — Aurora Standard's per-I/O charges add cost without proportional benefit - You want the simplest pricing model without I/O charges - A single-AZ deployment is acceptable and Multi-AZ cost is not justified - You need a specific engine version not yet available in Aurora (Aurora PostgreSQL versions lag slightly) ## When Aurora Is the Right Choice **Choose Aurora when:** - High availability with fast failover is a requirement (the 30-second vs 2-minute failover difference matters) - You need more than 5 read replicas for read scaling - Cross-region replication with sub-second RPO is required (Global Database) - I/O workloads are high enough to justify the storage architecture benefits - You want storage to auto-scale without manual provisioning - Aurora Serverless v2 is attractive for variable workload patterns ## Moving from RDS PostgreSQL to Aurora PostgreSQL Aurora MySQL-compatible and Aurora PostgreSQL-compatible clusters are wire-compatible drop-ins for applications, **but Postgres migration tooling has to respect WAL / LSN continuity**. MySQL-heavy teams still lean on snapshot-restore promotion or [**AWS Database Migration Service (DMS)**](https://aws.amazon.com/dms/), while PostgreSQL teams adding **logical replication** should read this section before production cutover. ### Pick the migration shape that matches your outage budget Each path solves a different bottleneck: brute-force downtime, replication lag, topology testing, schema filtering, or **Major version uplift** concurrent with migration. | Path | Reach for it when… | Typical trade-offs | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | | **Snapshot restore + cutover** | You accept a maintenance window or can tolerate longer read-only phases | Simplest Ops story; validates Aurora **I/O-Optimized vs Standard** upfront; downtime concentrated in cutover rehearsal | | **Aurora read replica from RDS** | You want AWS-managed physical replication with **minimal application change** during steady state | **Single reader topology** mirrors default replica shape — fine for parity testing on one reader, weaker for validating **multi reader** fleets | | **DMS CDC** | Mix of engines/schemas, selective tables, heterogeneous sources, ops already standardized on **DMS** | Extra pipeline cost and operational surface; excels at bounded datasets and monitoring via DMS metrics | | **Seed + logical replication (native publisher/subscriber)** | Must mirror **multiple readers**, rehearse failover under Aurora layout, optionally **bundle a major Postgres upgrade**, or carve **partial schemas/tables** | Requires correct **seed LSN** bookkeeping — where RDS→Aurora diverges architecturally | For **PostgreSQL-specific** prerequisites, conflict handling, and the exact seeded-handshake sequence, defer to **[Migrating RDS for PostgreSQL to Aurora PostgreSQL using seeded logical replication — AWS Database Blog](https://aws.amazon.com/blogs/database/migrating-amazon-rds-for-postgresql-to-amazon-aurora-using-seeded-logical-replication/)**. ### Why “restore snapshot → start logical replication” surprises teams PostgreSQL logical replication resumes from positions in the **write-ahead log (WAL)** tracked as **log sequence numbers (LSNs)**. RDS for PostgreSQL rotates WAL locally with textbook PostgreSQL semantics. Aurora persists transaction logs through its **six-way distributed storage**. After you restore an RDS snapshot into Aurora, the target cluster starts a fresh LSN lineage that **does not line-number the same WAL stream** your source still speaks. Mis-set seed LSNs produce **duplicate key explosions** when the subscriber replays inserts that already landed in your snapshot — or silent inconsistency without primary keys. Run **ahead**, and subsets of rows simply never arrive. That is why AWS documents **seeded logical replication**, not assumption-driven slot creation alone. Treat the official post above as canonical for implementation; use this comparison to steer **commercial** sizing (instances, Aurora I/O-Optimized breakout, failover rehearsal) alongside that runbook. ### Before you cut over Work through Aurora **parameter group diffs**, **connection limits** versus RDS Proxy sizing, Aurora **billing guardrails**, and scripted **fail-forward / fail-back** rehearsals. Engagement teams routinely pair these checks with Observability dashboards on replication lag slots and **Promotion guardrails**. ## Related Comparisons Explore other technical comparisons: - [DynamoDB vs RDS](/compare/dynamodb-vs-rds/) - [Aurora Serverless vs Provisioned](/compare/aws-aurora-serverless-vs-aurora-provisioned/) ## Why Work With FactualMinds FactualMinds is an **AWS Select Tier Consulting Partner** — a verified AWS designation earned through demonstrated technical expertise and customer success. Our architects have run production workloads for companies from seed-stage startups to enterprises. - **AWS Select Tier Partner** — verified by AWS Partner Network - **Architecture-first approach** — we evaluate your specific workload before recommending a solution - **No lock-in consulting** — we document everything so your team can operate independently - [AWS Marketplace Seller](https://aws.amazon.com/marketplace/seller-profile?id=seller-m753gfqftla7y) ---
AI & assistant-friendly summary
This section provides structured content for AI assistants and search engines. You can cite or summarize it when referencing this page.
Summary
Technical comparison of Amazon RDS vs Aurora — architecture, I/O economics, HA, plus PostgreSQL migration paths (logical replication and LSN pitfalls).
Key Facts
- • Technical comparison of Amazon RDS vs Aurora — architecture, I/O economics, HA, plus PostgreSQL migration paths (logical replication and LSN pitfalls)
- • Aurora is not simply "better RDS" — understanding the I/O cost model, storage architecture differences, and HA characteristics determines which service fits your workload
- • RDS wins for simpler, low-I/O workloads where Aurora's I/O pricing adds unnecessary cost
- • div> ## Freshness Check (June 2026) Use this page as a decision framework, then validate the latest pricing, quotas, and region-level feature parity in AWS documentation before final sign-off
- • This page was refreshed against official AWS announcements and service documentation published in the last 12 months
- • AWS What's New](https://aws
Entity Definitions
- RDS
- RDS is an AWS service referenced in the AWS RDS vs Aurora: Which Managed Database Is Right for You? comparison.
- Amazon RDS
- Amazon RDS is an AWS service referenced in the AWS RDS vs Aurora: Which Managed Database Is Right for You? comparison.
- Aurora
- Aurora is an AWS service referenced in the AWS RDS vs Aurora: Which Managed Database Is Right for You? comparison.
- DynamoDB
- DynamoDB is an AWS service referenced in the AWS RDS vs Aurora: Which Managed Database Is Right for You? comparison.
- serverless
- serverless is a cloud computing concept referenced in the AWS RDS vs Aurora: Which Managed Database Is Right for You? comparison.
Frequently Asked Questions
Is Aurora always faster than RDS?
Not always. Aurora uses a distributed storage system with 6-way replication across 3 Availability Zones, which provides higher durability and typically faster recovery from failures. For read-heavy workloads with Aurora Replicas, Aurora can deliver significantly higher throughput. However, for simple single-instance write-heavy workloads, the performance difference is often marginal. Aurora''s distributed storage also means higher I/O amplification — each write is written to 6 storage nodes, which generates more I/O operations than a standard RDS write to a single EBS volume.
Is Aurora more expensive than RDS?
Aurora instance pricing is approximately 20% higher than equivalent RDS instances. However, the bigger cost variable is Aurora''s I/O pricing on Aurora Standard: $0.20 per million I/O requests. For read-heavy workloads hitting millions of I/O operations per hour, this can add hundreds of dollars per month beyond instance costs. Aurora I/O-Optimized removes the I/O charge (replacing it with a 30-40% higher instance price) and is typically the better choice above ~1 billion I/Os per month. For low-traffic workloads, RDS is almost always cheaper.
Does Aurora support PostgreSQL?
Yes. Aurora supports two engines: Aurora MySQL (compatible with MySQL 5.7 and 8.0) and Aurora PostgreSQL (compatible with PostgreSQL 13 through 16). Aurora PostgreSQL is wire-compatible with standard PostgreSQL — most applications connect without any code changes. The trade-off is that Aurora PostgreSQL may lag behind the latest PostgreSQL minor version by a few months as AWS validates compatibility. Aurora also supports PostgreSQL-specific features like logical replication and extensions.
When should I use RDS instead of Aurora?
RDS is the right choice when: your workload is small or development-stage and Aurora''s minimum cost is too high; you need specific database engines Aurora does not support (Oracle, SQL Server, or MariaDB); you want simpler, more predictable pricing without per-I/O charges; you are running a single-AZ deployment where multi-AZ high availability is not required; or you need a specific RDS feature not yet available in Aurora, such as certain engine versions or parameter group configurations.
What is Aurora I/O-Optimized?
Aurora I/O-Optimized is a storage configuration option (available since 2023) that eliminates per-I/O charges in exchange for a higher instance and storage price — approximately 30-40% more than Aurora Standard. It is designed for I/O-intensive workloads where the per-I/O costs under Aurora Standard would exceed the premium. The break-even point is roughly 1 billion I/O requests per month for a db.r6g.large instance. Below this threshold, Aurora Standard is cheaper. Above it, I/O-Optimized saves money and makes costs more predictable.
Can I use logical replication from Amazon RDS for PostgreSQL to Aurora PostgreSQL?
Yes — but PostgreSQL logical replication assumes the publisher can resume from a WAL position that aligns with how the subscriber was seeded. RDS for PostgreSQL and Aurora PostgreSQL use different storage architectures, so restoring an RDS snapshot into Aurora resets the WAL / LSN story on the target. Naive setups often stall or silently diverge unless you deliberately choose a compatible seed — the pattern AWS documents as seeded logical replication. Follow the authoritative runbook here: Migrating RDS for PostgreSQL to Aurora PostgreSQL using seeded logical replication ([AWS Database Blog](https://aws.amazon.com/blogs/database/migrating-amazon-rds-for-postgresql-to-amazon-aurora-using-seeded-logical-replication/)).
Why does logical replication fail after I restore an RDS PostgreSQL snapshot to Aurora?
Because log sequence numbers (LSNs) on Aurora no longer correspond to WAL positions on the source RDS cluster the way they would after RDS-to-RDS restore. RDS keeps traditional PostgreSQL WAL semantics; Aurora's storage layer assigns its own LSN progression. Replication needs a deliberately chosen seed LSN at the snapshot point — behind means duplicate/conflicting rows; ahead means missing changes. Aurora surfaces utilities like aurora_vol_logical_start_lsn(), but that start LSN is not automatically the RDS snapshot-aligned cursor you need. For the corrective approach and prerequisites, rely on AWS's seeded logical replication article linked from this page's migration section.
Does an Aurora read replica give me the same options as seeded logical replication?
For many lift-and-shift moves, converting an RDS read replica path into Aurora is enough. Aurora read replicas replicate one reader topology tied to physical replication assumptions. When you must validate load against multiple readers, combine migration with a major version upgrade during one window, or subset tables cleanly, seeded logical replication (AWS DMS or native publisher/subscriber with correct seed handling) matches those goals better — see AWS' walkthrough linked from this comparison.
Quick Answer: Aurora wins for HA-critical, read-heavy workloads requiring fast failover. RDS wins for simpler, low-I/O workloads where Aurora’s I/O pricing adds unnecessary cost.
Freshness Check (June 2026)
Use this page as a decision framework, then validate the latest pricing, quotas, and region-level feature parity in AWS documentation before final sign-off.
This page was refreshed against official AWS announcements and service documentation published in the last 12 months. Confirm region support, quotas, and pricing before final architecture sign-off.
Amazon RDS and Aurora are both managed relational database services, but they are architecturally distinct products with different cost models, availability characteristics, and performance profiles. Aurora is often described as “RDS but faster” — that framing misses the nuance that matters for production architecture decisions.
This comparison focuses on the technical and economic differences that affect real workloads, including Aurora’s I/O pricing model that surprises teams when their first monthly bill arrives.
Architecture Differences
The most important difference between RDS and Aurora is the storage layer.
Standard RDS uses Amazon EBS volumes attached to the database instance. Replication (for Multi-AZ deployments) is handled at the storage level using synchronous EBS mirroring to a standby instance in a second Availability Zone. The storage grows in fixed increments and is bound to the instance’s EBS configuration.
Aurora uses a purpose-built distributed storage system that is decoupled from the compute layer. Aurora storage automatically replicates data 6 ways across 3 Availability Zones — this happens at the storage level, not the instance level. Aurora storage auto-scales in 10 GB increments up to 128 TiB. The compute (instances) and storage are independently scalable.
| Characteristic | RDS (Provisioned) | Aurora |
|---|---|---|
| Storage backend | EBS volumes | Distributed Aurora storage |
| Replication | Multi-AZ EBS mirror (optional) | Always 6-way, 3-AZ (built-in) |
| Storage scaling | Manual or auto in 10 GB increments | Auto-scales, up to 128 TiB |
| Read replicas | Up to 5 (separate storage per replica) | Up to 15 (shared storage volume) |
| Failover time | ~30-120 seconds (Multi-AZ) | ~30 seconds (Aurora Replica) |
| Storage cost | Based on EBS gp3/io1 pricing | Per-GB-month + I/O charges |
| I/O charges | No per-I/O charge | Yes (Aurora Standard) / No (I/O-Optimized) |
| Engines supported | MySQL, PostgreSQL, MariaDB, Oracle, SQL Server | MySQL-compatible, PostgreSQL-compatible |
Performance Comparison
Aurora’s distributed storage architecture provides concrete advantages for specific workload patterns:
- Read scaling: Aurora Replicas share the same underlying storage as the primary. Replication lag is typically under 100ms (often milliseconds). RDS read replicas replicate via binary log replication, which introduces higher lag under write load.
- Failover speed: Aurora fails over to a read replica in ~30 seconds because the replica is already attached to the same storage. RDS Multi-AZ failover involves remounting EBS to the standby, typically taking 30–120 seconds.
- Crash recovery: Aurora’s distributed storage architecture means the database does not need to replay a redo log after a crash. Recovery is near-instant.
For write-heavy single-instance workloads, RDS and Aurora perform similarly. The Aurora storage layer’s 6-way write amplification means more I/O operations per write — which is why the I/O cost model matters.
Cost Breakdown
This is where Aurora’s real cost differs from marketing comparisons.
Aurora Standard (per-I/O pricing):
- Instance: ~20% premium over equivalent RDS instance
- Storage: $0.10/GB-month
- I/O requests: $0.20 per million requests
- Backup storage: $0.021/GB-month (beyond free tier)
Aurora I/O-Optimized (no per-I/O charge):
- Instance: ~30-40% premium over equivalent RDS instance
- Storage: $0.225/GB-month
- I/O requests: Included (no charge)
- Backup storage: $0.021/GB-month
RDS Provisioned (PostgreSQL/MySQL, gp3 storage):
- Instance: Baseline pricing
- Storage: $0.115/GB-month (gp3)
- I/O requests: No per-I/O charge
- Backup storage: $0.095/GB-month (beyond free tier)
Estimated monthly cost — db.r6g.large, 100 GB storage, us-east-1:
| Configuration | Instance | Storage | I/O (500M/mo) | Total |
|---|---|---|---|---|
| RDS Multi-AZ | ~$185 | $23 | $0 | ~$208 |
| Aurora Standard | ~$222 | $10 | $100 | ~$332 |
| Aurora I/O-Optimized | ~$296 | $22.50 | $0 | ~$319 |
At 500 million I/O operations per month, Aurora Standard is more expensive than both RDS and Aurora I/O-Optimized. At 1 billion+ I/O operations per month, Aurora I/O-Optimized starts to deliver savings versus Aurora Standard, and its higher instance cost may still be less than RDS Multi-AZ for highly available deployments.
High-Availability Features
| Feature | RDS Multi-AZ | Aurora |
|---|---|---|
| Automatic failover | Yes (~30-120s) | Yes (~30s with replica) |
| Read replicas | Up to 5, separate storage | Up to 15, shared storage |
| Cross-region replicas | Read replicas | Aurora Global Database |
| RPO | Near-zero (synchronous) | Near-zero (6-way synchronous) |
| RTO | ~30-120 seconds | ~30 seconds |
| Multi-region active-active | No native support | Aurora Global Database (< 1s RPO) |
| Serverless option | No | Aurora Serverless v2 |
Aurora Global Database is a differentiated feature with no direct RDS equivalent — it replicates data to up to 5 secondary regions with typical replication lag under 1 second, enabling near-zero RPO cross-region disaster recovery and read traffic distribution to geographically distributed users.
When RDS Is the Right Choice
RDS is the appropriate choice when the workload does not justify Aurora’s cost or complexity premium.
Choose RDS when:
- Your workload is development, testing, or early-stage production (Aurora’s minimum cost is higher)
- You need Oracle or SQL Server (Aurora does not support these engines)
- Traffic and I/O volumes are low — Aurora Standard’s per-I/O charges add cost without proportional benefit
- You want the simplest pricing model without I/O charges
- A single-AZ deployment is acceptable and Multi-AZ cost is not justified
- You need a specific engine version not yet available in Aurora (Aurora PostgreSQL versions lag slightly)
When Aurora Is the Right Choice
Choose Aurora when:
- High availability with fast failover is a requirement (the 30-second vs 2-minute failover difference matters)
- You need more than 5 read replicas for read scaling
- Cross-region replication with sub-second RPO is required (Global Database)
- I/O workloads are high enough to justify the storage architecture benefits
- You want storage to auto-scale without manual provisioning
- Aurora Serverless v2 is attractive for variable workload patterns
Moving from RDS PostgreSQL to Aurora PostgreSQL
Aurora MySQL-compatible and Aurora PostgreSQL-compatible clusters are wire-compatible drop-ins for applications, but Postgres migration tooling has to respect WAL / LSN continuity. MySQL-heavy teams still lean on snapshot-restore promotion or AWS Database Migration Service (DMS), while PostgreSQL teams adding logical replication should read this section before production cutover.
Pick the migration shape that matches your outage budget
Each path solves a different bottleneck: brute-force downtime, replication lag, topology testing, schema filtering, or Major version uplift concurrent with migration.
| Path | Reach for it when… | Typical trade-offs |
|---|---|---|
| Snapshot restore + cutover | You accept a maintenance window or can tolerate longer read-only phases | Simplest Ops story; validates Aurora I/O-Optimized vs Standard upfront; downtime concentrated in cutover rehearsal |
| Aurora read replica from RDS | You want AWS-managed physical replication with minimal application change during steady state | Single reader topology mirrors default replica shape — fine for parity testing on one reader, weaker for validating multi reader fleets |
| DMS CDC | Mix of engines/schemas, selective tables, heterogeneous sources, ops already standardized on DMS | Extra pipeline cost and operational surface; excels at bounded datasets and monitoring via DMS metrics |
| Seed + logical replication (native publisher/subscriber) | Must mirror multiple readers, rehearse failover under Aurora layout, optionally bundle a major Postgres upgrade, or carve partial schemas/tables | Requires correct seed LSN bookkeeping — where RDS→Aurora diverges architecturally |
For PostgreSQL-specific prerequisites, conflict handling, and the exact seeded-handshake sequence, defer to Migrating RDS for PostgreSQL to Aurora PostgreSQL using seeded logical replication — AWS Database Blog.
Why “restore snapshot → start logical replication” surprises teams
PostgreSQL logical replication resumes from positions in the write-ahead log (WAL) tracked as log sequence numbers (LSNs). RDS for PostgreSQL rotates WAL locally with textbook PostgreSQL semantics. Aurora persists transaction logs through its six-way distributed storage. After you restore an RDS snapshot into Aurora, the target cluster starts a fresh LSN lineage that does not line-number the same WAL stream your source still speaks.
Mis-set seed LSNs produce duplicate key explosions when the subscriber replays inserts that already landed in your snapshot — or silent inconsistency without primary keys. Run ahead, and subsets of rows simply never arrive. That is why AWS documents seeded logical replication, not assumption-driven slot creation alone.
Treat the official post above as canonical for implementation; use this comparison to steer commercial sizing (instances, Aurora I/O-Optimized breakout, failover rehearsal) alongside that runbook.
Before you cut over
Work through Aurora parameter group diffs, connection limits versus RDS Proxy sizing, Aurora billing guardrails, and scripted fail-forward / fail-back rehearsals. Engagement teams routinely pair these checks with Observability dashboards on replication lag slots and Promotion guardrails.
Related Comparisons
Explore other technical comparisons:
Why Work With FactualMinds
FactualMinds is an AWS Select Tier Consulting Partner — a verified AWS designation earned through demonstrated technical expertise and customer success. Our architects have run production workloads for companies from seed-stage startups to enterprises.
- AWS Select Tier Partner — verified by AWS Partner Network
- Architecture-first approach — we evaluate your specific workload before recommending a solution
- No lock-in consulting — we document everything so your team can operate independently
- AWS Marketplace Seller
Related Comparisons
Other side-by-side breakdowns engineering teams read alongside this one.
DynamoDB vs RDS: NoSQL vs SQL on AWS
Technical comparison of Amazon DynamoDB vs RDS. Schema flexibility, query patterns, scaling, and when to choose each.
Aurora Serverless v2 vs Aurora Provisioned: Which Should You Choose?
Technical comparison of Aurora Serverless v2 vs Provisioned. ACU pricing, cold start behavior, scaling, and production readiness.
Model the cost side
Numbers from this comparison — plug your workload into our free calculators for a monthly estimate.
Frequently Asked Questions
Is Aurora always faster than RDS?
Is Aurora more expensive than RDS?
Does Aurora support PostgreSQL?
When should I use RDS instead of Aurora?
What is Aurora I/O-Optimized?
Can I use logical replication from Amazon RDS for PostgreSQL to Aurora PostgreSQL?
Why does logical replication fail after I restore an RDS PostgreSQL snapshot to Aurora?
Does an Aurora read replica give me the same options as seeded logical replication?
Not Sure Which AWS Service Is Right?
Our AWS-certified architects help engineering teams choose the right architecture for their workload, scale, and budget — before they build the wrong thing.