MySQL replication really isn't inherently hard to setup.. However it's not really what most people think it us. Mysql 4 makes this way easier, and removes a lot of the bugs we've run across doing it. At least in theory, we havn't upgraded yet.. Huge project coming up to do that though.
The problem is you have to design your applications to support multiple databases. Essentially you have one big "master" server, which handles all writes (inserts, deletes, and updates), and one or more slaves that handle all reads (select's, etc.). Almost all apps are much more heavy read than write, so it works out well. You can go a step further by having a slave server dedicated for long queries, etc. But instead of say, in PHP having one database handle you need to have two, and make sure you use the correct one for updates, and the other one for select's.
In that setup, you can scale mysql way past what you can do on any sized single machine. We have a dual xeon w/ 10 seagate X15.3's (15,000 RPM drives) in a RAID 10 configuration, as our master. This handles the updates easily, and then we have a few single P4 systems that handle select's. You can load balance the slave machines behind a load balancer of some type, so you can then have a redundant cluster. A bit more complex, and you can have auto failover for the master server, with a slave server taking over the masters duties in the event of a failure.
This setup handles around 30-40 writes/sec, and around 1500-2500 queries/sec during peak times. We don't utilize much code-based caching since our app doesn't really lend itself well to that, and it was simply cheaper to spend the money on a couple slave servers than design the code (and modify the base we already had) to support that.
And we have a few tables that are getting close to 20GB in size.
Overall I'm fairly happy with it, other than some mysql annoyances/bugs they have in replication (such as DO NOT create a temporary table in a replicated database.. Seemingly half the time this totally fucks shit up, and you have to go manually resync the slaves), just stupid shit like that. And like I said, they focused a lot on replication in mysql 4, so we're moving towards that platform shortly.
-Phil