Amazon RDS Pros/Cons of Multiple DBs per instance

I run two completely independent websites. I am moving their MySQL databases to Amazon RDS.

I'm not going to do Multi A/Z deployment - let's remove that variable from this question.

I'm not sure whether to create a single RDS instance with two databases, or two Amazon RDS instances with a single database. Ignore cost for the sake of this question. I will not hit the 1 TB data limit so let's ignore that. However, it is extremely important that crashing one of the websites doesn't impact the other.

Based on this document - http://docs.amazonwebservices.com/AmazonRDS/latest/UserGuide/Concepts.DBInstance.html

I'm assuming that if I write terrible code that crashes one of the databases in a given RDS instance, it could possibly take down the entire RDS instance (and thus inadvertantly affect the other database). Is that correct?

In response to the comment, we're definitely entertaining the idea of two RDS instances, each with its own database. I just want to make sure that there is actually a benefit to doing that - I'm assuming the benefit is that these databases won't possibly affect each other when they're on separate instances. I thought there was a shot that even on the same instance, they couldn't impact each other, but it sounds like that's not the case.

--EDIT Hop3less - thanks for the answer - however, When I said a two RDS instances with a single database, i meant each having a single database. Just want to make sure you realize I don't mean two EC2 instances. I assume a single RDS instance is still a single point of failure?


Solution 1:

Right, if you have two instances with one database, your single-point-of-failure is the single database - anything that impacts on the database (like too much load, or accidentally deleting it, or what have you) will impact on both sites that use it.

If you have one instance with two databases, then your single-point-of-failure is the instance, and anything that impacts on the instance (such as running your OS out of disk space, for example) will impact on both sites that use it.

The only setup that allows for your sites to be completely independent of each other is to run each one on its own instance, with its own database. (And even that's not "completely" independent, just as completely independent as you can control - if something happens to hardware or infrastructure the two instances share, they'd both be impacted.)

Solution 2:

I agree with @HopelessN00b’s suggestion that in order for each of your sites to be completely independent, you should run each DB on its own instance. Yet, even that isn’t a completely independent setup, but using database(s) in the cloud can minimize certain risks. Since you are concerned with high availability of your DBs and you’re planning to move them to RDS, I thought to suggest you look into Xeround’s cloud DB option as an alternative to RDS. If I understand properly Xeround offers a DB that’s distributed over multiple servers and has replication as well, both are features that can deal with failover (here’s some wiki info about distributed systems and replication. :)