Amazon RDS Read Replicas provide enhanced performance and durability for database (DB) instances. This feature makes it easy to elastically scale out beyond the capacity constraints of a single DB instance for read-heavy database workloads. You can create one or more replicas of a given source DB Instance and serve high-volume application read traffic from multiple copies of your data, thereby increasing aggregate read throughput. Read replicas can also be promoted when needed to become standalone DB instances. Read replicas are available in Amazon RDS for MySQL, MariaDB, and PostgreSQL as well as Amazon Aurora.

For the MySQL, MariaDB and PostgreSQL database engines, Amazon RDS creates a second DB instance using a snapshot of the source DB instance. It then uses the engines' native asynchronous replication to update the read replica whenever there is a change to the source DB instance. The read replica operates as a DB instance that allows only read-only connections; applications can connect to a read replica just as they would to any DB instance. Amazon RDS replicates all databases in the source DB instance.

Amazon Aurora employs an SSD-backed virtualized storage layer purpose-built for database workloads. Amazon Aurora replicas share the same underlying storage as the source instance, lowering costs and avoiding the need to copy data to the replica nodes. For more information about replication with Amazon Aurora, see the online documentation.

Get Started with AWS for Free

Create a Free Account

AWS Free Tier includes 750hrs of Micro DB Instance each month for one year, 20GB of Storage, and 20GB for Backups with Amazon Relational Database Service (RDS).

View AWS Free Tier Details »

You can reduce the load on your source DB Instance by routing read queries from your applications to the read replica. Read replicas allow you to elastically scale out beyond the capacity constraints of a single DB instance for read-heavy database workloads.

To further maximize read performance, Amazon RDS for MySQL allows you to add table indexes directly to Read Replicas, without those indexes being present on the master.

Because read replicas can be promoted to master status, they are useful as part of a sharding implementation. To shard your database, add a read replica and promote it to master status, then, from each of the resulting DB Instances, delete the data that belongs to the other shard.

Because the Amazon RDS for MySQL engine also allows you to perform table-wide actions like adding indexes or new columns to read replicas, you can use its replica-promotion capability to minimize the impact of these actions. You would direct the DDL for the action to a read replica, promote that read replica to master status, and then redirect database traffic to the new master.

Read replicas in Amazon RDS for MySQL, MariaDB, and PostgreSQL provide a complementary availability mechanism to Amazon RDS Multi-AZ Deployments. You can promote a read replica if the source DB instance fails. You can also replicate DB instances across AWS Regions as part of your disaster recovery strategy. This functionality complements the synchronous replication, automatic failure detection, and failover provided with Multi-AZ deployments.

When you create a read replica for Amazon RDS for MySQL, MariaDB and PostgreSQL, Amazon RDS sets up a secure communications channel using public key encryption between the source DB instance and the read replica, even when replicating across regions. Amazon RDS establishes any AWS security configurations, such as adding security group entries, needed to enable the secure channel.

You can also create read replicas within a Region or between Regions for your Amazon RDS for MySQL, MariaDB and PostgreSQL database instances encrypted at rest with AWS Key Management Service (KMS).

Read Replicas are billed at the same rates as standard DB Instances, and standard DB Instance reservations (RDS Reserved Instances) of the same DB Instance class and Region can be applied to Read Replicas. For details, please refer to the Amazon RDS pricing page.

Using the AWS Management Console, you can easily add read replicas to existing DB Instances. Use the "Create Read Replica" option corresponding to your DB Instance in the AWS Management Console. Amazon RDS for MySQL, MariaDB and PostgreSQL allow you to add up to 5 read replicas to each DB Instance.

Amazon RDS for MySQL, MariaDB and PostgreSQL offer you three choices for database storage: General Purpose (SSD), Provisioned IOPS (SSD), and Magnetic. Read replicas for these engines need not use the same type of storage as their master DB Instances. You may be able to optimize your performance or your spending by selecting an alternate storage type for read replicas.

For the MySQL, MariaDB and PostgreSQL engines, Amazon RDS allows you to combine read replicas with Multi-AZ deployments. In Multi-AZ deployments, the data in your primary DB Instance is synchronously replicated to a standby instance in a different Availability Zone (AZ).  

You can use Multi-AZ deployments and read replicas in conjunction to enjoy the complementary benefits of each. You simply configure the source DB Instance for your read replicas in a Multi-AZ deployment. That way you gain both the data durability and availability benefits of Multi-AZ deployments and the read scaling benefits of read replicas. Note that you cannot configure a read replicas in a Multi-AZ configuration.

For even more redundancy, you have the option to create your read replica in an AZ other than that of the primary and the standby used in your Multi-AZ deployments. You can identify the AZ corresponding to your standby by looking at the "Secondary Zone" field of your DB Instance in the AWS Management Console.