Wednesday, March 26, 2008

High Availability and MobiLink

Here's a recent article about using MobiLink with Hot Failover (er, Database Mirroring, um, High Availability):

A High Availability Data Synchronization Architecture, Joshua Savill, March 4, 2008
This is an overview article, with some code snippets and lots of extra study required if you're going to put it into practice: Database synchronization is complex no matter what software you use, and while it's a wonderful thing to add High Availability at the central and/or remote sites, the complexity just got more so.

As an overview, the article's excellent. So it's not really fair for me to rant about one single statement:
"A database mirroring system is a configuration of either two or three database servers, each running on separate computers, which cooperate to maintain copies of a database."
That statement is lifted from the Help (not the whole article, just that sentence), and it is actually correct as written, sort of... if you're a lawyer and you're reading it out of context.

First of all, you have to "configure" or set up three software servers, not two: the arbiter, the primary database, and the secondary database.

Second, it is possible to put those three software servers on one, two or three separate hardware computers (more on the "correct" number later).

Third, when the database mirroring system is up and running, it is possible for it to keep running when one of the three software servers goes missing. That may be where the "either two or three" is coming from, but it's an important distinction: Mirroring needs three software servers to start running, and it can keep going on two.

I propose this edit:
"A database mirroring system is a configuration of three software servers which cooperate to maintain two copies of a database and provide continuous availability to one copy if one of the three software servers becomes unavailable."
Can you tell I spent two weeks in a Texas courtroom as "expert witness" in a civil case involving database software? Can you say "Denny Crane"?
Now, the revised statement might confuse the reader a bit (three servers? two copies? which is it, two or three?) but that's OK if the next few statements clarify other points:
  • How many physical hardware computers can, and should, be used (hint: the correct answer is "three"),

  • What roles are played by the arbiter, primary and secondary software servers.
It's not the role of Joshua's article to go into that detail, and the SQL Anywhere Help does an excellent job once you plow into it.
My only quibble with the Help is the High Availability tutorial uses a single computer instead of three, as if there is some kind of shortage of computers these days...
But enough ranting! Go read Joshua's article if want to get started removing those single-points-of-failure in a MobiLink environment.

And for what it's worth, here's a somewhat older article that includes a three-computer demonstration of High Availability (not Mobilink, just the database mirroring part):
Top 10 Cool New Features In SQL Anywhere 10
If it comes up all blue on your screen, scroll down or shrink the display to see more of the page. Then scroll down some more, to point 10 on page 10, "Hot Failover (Database Mirroring)".

No comments: