This post originated from an RSS feed registered with Python Buzz
by Phillip Pearson.
Original Post: Semi-synchronous replication for MySQL (courtesy Google)
Feed Title: Second p0st
Feed URL: http://www.myelin.co.nz/post/rss.xml
Feed Description: Tech notes and web hackery from the guy that brought you bzero, Python Community Server, the Blogging Ecosystem and the Internet Topic Exchange
The detail: MySQL replication is good for scalability, but being asynchronous, it lacks one important feature that would make it more or less a complete high availability solution. If a transaction succeeds on the master, then the master dies and takes its disk with it, the transaction may not have been fully replicated to any slaves.
One way around this is to use DRBD, which blocks fsync() until the data has been replicated. However DRBD has the opposite problem - it's good for HA but doesn't help you scale!
Semi-synchronous replication gives you the transaction replication guarantee by blocking transaction commits until the transaction has been replicated to at least one slave, i.e. gives you high availability *and* scaling.