Wednesday, August 18, 2010

Review of MySQL High Availability by Charles Bell, Mats Kindahl and Lars Thalmann


The kind folks at O'Reilly sent me MySQL High Availability by Charles Bell, Mats Kindahl and Lars Thalmann . In summary, the book is awesome. Personally I didn't think that Replication was enough of a feature in mySQL to fill up 500+ pages about it, BUT, they did and not with fillers or info that is NOT actually important to you as the end designer. In Mark Callaghan's forward he states that this book "adequately" explains MySQL replication, this is a huge low-ball, I dare say if you did not look at the replication code (prior to row-based replication there was not a lot of it) your questions can be answered with this book. There are three parts to this book: Replication (roughly 50% of the book), Monitoring and Disaster Recovery, then finally High Availability Environments. Each part is well written and accurate. I have been using mySQL before Replication existed. When it was first released I have been using it and been to many talk about it, from the original author talks to Brian Aker’s talks to asking Jeremy Zawodny about it to giving my own talks about Scale-Out, replication, etc.
My experience with mySQL Replication is rather robust. I broke holes in it, found bugs with it, and even wrote a quick C client (when it was still statement based replication only on the 4.1 branch) that would act as a proxy to gather all the replication feeds of all boxes onto a single box (it was a proof of concept). The book goes into clear detail about the common approaches and use cases of replication scaling out the apps reads. It even talks about data sharding that I must say I am an expert at (done it for Flickr/RockYou, for friends etc). The examples are clear although I would not recommend deploying their examples verbatim. The reason you never want to mod based on the number of shards in your system, because if you add more shards you are going to have to move your data all around. Central dictionaries are perfect to control balance. They go into this, but not how to lock a user to migrate to a lightly loaded shard. The example that they have creates holes in the flow, race conditions as well as downtime to move data, this is a nitpick, the book is good.

I do not want to give away the book, it is a good read and the quality is what you expect from O’Reilly. If you want to know about various replication techniques, replication shortcomings, building fail-over systems, and exploring other technologies that are comparable to replication, this is a great book for you. Oh and of note, they even go into exotic features that I rarely use in production and how that effects replication. Awesome.

2 comments:

Rohit said...

Hi Dathan:

I hope things are going well for you. I find your book reviews very helpful and just got this book reading your review. Thanks!

I wonder if you have any post on Geniedb. I am very interested to know your take on http://www.cloudbook.net/jack-kreindler

On a different note I hope you will be able to visit us in Spring 2011 as well.

Best,
Rohit

Rohit said...

This is in continuity to my previous post. It will be interesting to compare the sharding/replication capabilities of MySql sharding, MySql NDB, MongoDB, and GenieDB.

My understanding is that making database setup transparent to application creates substantial overhead. If I remember correctly this is what you mentioned during your visit.

It will be great if you can cover some comparison in terms of extra hardware needed in each setup as compared to MySql sharding-aware application. Would love to discuss this in class and cite your work.

Best,
Rohit