Distributed Replicated Block Device (http://www.drbd.org/) can be used in conjunction with something like Linux HA (http://www.linux-ha.org/) to create a systematic high availability clustering approach for stateful (and transactional) applications such as a database. Lots of sites use it (e.g. github.com IIRC) and up until now, you've had to run a patched kernel to take advantage of it.