Choosing a MySQL Replication / High Availability Solution

Clustrix Fusion-io Adfonic Continuent Facebook GenieDB Schooner Information Technology Severalnines SkySQL Scalebase Couchbase FromDual Monty Program Sphinx Tokutek Devart Ivinco Virident Webyog Drizzle Apress New York PHP O'Reilly PalominoDB Stackware

October 25th, 11:45 PM
Walbrook Suite


Like many things in MySQL, choosing a high-availability solution for MySQL has traditionally been an excercise in tradeoffs. There are many alternatives to choose from, many good enough but none perfect.

MySQL statement based replication is widely used, yet error prone. It is easy to end up with slaves having different data from the master (non-deterministic functions).

MySQL 5.1 row based replication was an improvement on the above, but is still asynchronous. This means you can actually lose committed data on a failure - not desirable for a high availability solution.

MySQL Cluster offers synchronous replication with the NDB engine, but is is not widely used as it replaces the InnoDB engine and gives very different behavior (such as performance).

Disk-level DRBD replication then became popular since it offered synchronous replication with no data-loss on failover. The tradeoff with DRBD then is that you only have a cold standby, and the recovery time during a failover can be minutes - again not perfect for today's online requirements.

MySQL 5.5 introduces semi-sync replication, an improvement over MySQL asynchronous replication. The main drawback remaining here is mostly in the complexity and poor manageability, such as lack of a global transaction id.

3rd party solutions like Tungsten and Galera bid to improve on the available solutions. Tungsten brings you global transaction id's and other user friendliness, and more throughput with parallel and multi-master replication streams. Galera adds to that list also synchronous replication.

In this session we'll look at all of these alternatives, in search of the ultimate MySQL high availability solution, without any tradeoffs. It is often said that clustering is complex and complexity is itself the enemy of high availability. We'll find in this talk that sometimes complexity can just be a symptom of a poor implementation and you need to look elsewhere for the right clustering solution.



Henrik Ingo

Henrik Ingo

Senior Performance Architect, Nokia

Henrik works at Nokia as the resident MySQL expert. Prior to Nokia he worked with MySQL Cluster at Sun Microsystems. He is an active contributor to Drupal and the MySQL forks and is the author of the book "Open Life: The Philosophy of Open Source".


]]> ]]>