You could rsync on a regular basis, and run mysql with replication. If someone is going to be there to swap the IP addresses, that's a pretty inexpensive way to do that.
You could run Coda or AFS or one of the other distributed filesystems (GFS from Sistina was purchased by RedHat and later released opensource in the RedHat packages). This would replicate the filesystems.
http://www.it.uc3m.es/ptb/fr1/
http://opengfs.sourceforge.net/
http://www.cubit.at/index.epl?cms_ol...ernkompetenzen
You could buy some ISCSI cards and have a shared storage machine that both shared, and turn off locking in mysql so that you could run mysql at the same time on both, and then flip the switch. You could set up an NFS shared storage machine (watch out for apache and its mmapped lock files if you use NFS)
Adaptec sells ISCSI cards that are fairly well supported in Linux.
Once you have the machines synced so that the data is identical on both, you could put a hardware load balancer in the front.
If you wanted something a little more automatic,
http://www.linux-ha.org/
http://www.linuxvirtualserver.org/
https://mcg.motorola.com/cfm/templat...&ProductID=202
Many different ways to do it.