There are essentially two main choices for scaling MySQL - cluster (NDB) or replication.
For many people replication works fine because their application is mostly read based. Just throw a few MySQL slave servers into the mix and you can scale out pretty well.
My guess is that this only works well for about 80-90% of users.
You update your database on the master but perform queries on the slaves. If you need more queries you can just add more slaves.
The problem with replication is that you can't scale your writes. If you buy an expensive RAID array you can probably get 1500 transactions per second (maybe more) out of your IO array but that's the best you can do for the whole cluster.
As soon as you hit 100% of your transactions as writes you're done. You've hit a scaling wall with replication and you can't go any farther.
You can of course go with vertical replication partitioning which works …
[Read more]