Amazon RDS FAQs stated that it is up my application to distribute traffic to the read replica.

My websites have mostly visitors - non-logged in users. So, I suppose most database activities are read. I am supposed to set the MySQL database connection to the read replica for non-logged in users and the source RDS instance for logged-in ones?

My single RDS instance which power several websites just went bottleneck so I'm a little panicking and don't know where to start right now.

If the direction I'm going is not correct, kindly point me to the correct path then

  • Have you enabled the read replicas in your database. Also, did you try the Provisioned IOPS ?
    – Napster_X
    Dec 14, 2012 at 7:51

4 Answers 4


That all depends on what your application(s) are and how they go about connecting to the database and running their queries.

Most applications I have seen setup two database connection pools/strings. One for reading and one for writing and the application code directs it's queries to whichever pool suits the query. Most applications are not written like this until they need failover though so this is probably going to need some coding.

You might be able to use mysql-proxy to filter particular queries to a read only back end.

You also might have more immediate gains by running a separate database instance for each of the applications rather than splitting the load via reads, if your load profile allows it.

  • I have not seen people using mysql-proxy in production systems. The other option to develop the login in your application to where to connect is a right choice.
    – Wasif
    Dec 18, 2012 at 13:16

You can use route 53 to distribute traffic to your read replicas. Basically you create a domain name in your vpc, and configure route 53 to forward requests to that domain to the N replicas you place behind it. The link below has a video walkthrough of setting up the process, it only takes a few seconds to set up.


Then use the route 53 domain name in your db connection urls.


Multi-AZ != Read Replicas, two different things. MultiAZ creates an "invisible" standby that is only used during failover / maintenance ie=AVAILABILITY. Read replicas are purely for load/performance.


I don't think you can specify that where your traffic will go for read or write operations. That's a tradeoff you need to do when you use RDS.

But for the Load issue, I think you should enable (which I believe you already did) the Multi-AZ replication in the RDS.

That will create read replicas and will also be used for the failover and redundancy purposes.

Also, if still your traffic is getting affected, you should consider using provisioned-IOPS. That will very much increase the efficiency and performance of your DB.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.