From:
Hannu Krosing <hannu(at)2ndquadrant(dot)com>
To:
Robert Haas <robertmhaas(at)gmail(dot)com>
Cc:
Simon Riggs <simon(at)2ndquadrant(dot)com>,
Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>,
greg(at)2ndquadrant(dot)com, Josh Berkus <josh(at)postgresql(dot)org>,
Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>,
pgsql-hackers(at)postgresql(dot)org
Subject:
Re: Sync Rep Design
Date:
2011-01-02 10:59:32
Message-ID:
4D205A94.6070205@2ndquadrant.com (view raw or flat )
Thread:
2010-12-30 17:26:12 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 17:42:22 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-30 19:04:13 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 20:07:16 from Robert Treat <rob(at)xzilla(dot)net>
2010-12-30 20:24:09 from Aidan Van Dyk <aidan(at)highrise(dot)ca>
2010-12-31 03:26:51 from Joshua Tolley <eggyknap(at)gmail(dot)com>
2010-12-31 11:51:55 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 20:36:30 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 20:51:19 from Robert Treat <rob(at)xzilla(dot)net>
2010-12-30 21:01:18 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 21:08:50 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-30 21:27:11 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 08:15:41 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-30 20:39:05 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 20:55:28 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 20:11:40 from Marti Raudsepp <marti(at)juffo(dot)org>
2010-12-30 21:10:00 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 20:42:23 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-30 21:23:55 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 08:27:29 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-31 10:26:11 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 12:33:19 from Aidan Van Dyk <aidan(at)highrise(dot)ca>
2010-12-31 16:56:38 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 13:13:07 from Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
2011-01-01 14:03:35 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-01 14:15:45 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-01 15:12:19 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-01 16:55:57 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 17:13:24 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-01 17:29:20 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 17:49:44 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-01 19:03:30 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 16:35:59 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 20:27:10 from Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
2010-12-30 21:47:42 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-12-31 01:15:10 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 01:57:34 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 05:02:13 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-12-31 07:50:43 from Hannu Krosing <hannu(at)2ndquadrant(dot)com>
2011-01-02 20:13:46 from MARK CALLAGHAN <mdcallag(at)gmail(dot)com>
2011-01-02 20:53:23 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-03 11:10:40 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-30 21:27:03 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-12-31 00:47:37 from Jim Nasby <jim(at)nasby(dot)net>
2010-12-31 01:38:32 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 01:07:53 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 07:50:07 from Hannu Krosing <hannu(at)2ndquadrant(dot)com>
2010-12-31 10:06:12 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-12-31 10:39:32 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-31 10:42:15 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 11:48:57 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-12-31 12:40:15 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-12-31 12:57:30 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-12-31 13:39:19 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-12-31 13:48:41 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-12-31 14:13:50 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-01 00:20:54 from Josh Berkus <josh(at)postgresql(dot)org>
2010-12-31 12:40:58 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-12-31 19:15:59 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 13:59:06 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-01 16:28:42 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-01-01 16:37:12 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-01 17:03:48 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 19:29:45 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2011-01-01 17:30:29 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-01 22:40:21 from Josh Berkus <josh(at)postgresql(dot)org>
2011-01-01 23:08:42 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 03:11:10 from Aidan Van Dyk <aidan(at)highrise(dot)ca>
2011-01-02 10:39:45 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 08:35:07 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2011-01-02 09:20:39 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-02 09:20:40 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 10:39:51 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 12:47:17 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-01-02 16:44:01 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2011-01-02 17:53:51 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-01-02 20:58:35 from Magnus Hagander <magnus(at)hagander(dot)net>
2011-01-02 21:24:27 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-01-04 18:40:25 from Josh Berkus <josh(at)postgresql(dot)org>
2011-01-04 22:00:53 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-01-04 22:18:13 from Josh Berkus <josh(at)postgresql(dot)org>
2011-01-04 22:24:43 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-01-04 23:20:21 from Josh Berkus <josh(at)agliodbs(dot)com>
2010-12-31 21:18:15 from Hannu Krosing <hannu(at)2ndquadrant(dot)com>
2011-01-01 11:54:35 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 04:36:10 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-02 10:59:32 from Hannu Krosing <hannu(at)2ndquadrant(dot)com>
2011-01-02 13:41:13 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-02 16:54:29 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2011-01-02 21:19:46 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-04 18:28:30 from Josh Berkus <josh(at)agliodbs(dot)com>
2011-01-04 18:51:45 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2011-01-04 19:04:21 from "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
2011-01-04 19:50:17 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2011-01-04 19:54:04 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-05 01:59:57 from Greg Smith <greg(at)2ndquadrant(dot)com>
2011-01-04 19:04:37 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-03 01:30:12 from Hannu Krosing <hannu(at)2ndquadrant(dot)com>
2011-01-01 19:41:55 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2011-01-01 22:41:10 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
Lists:
pgsql-hackers
On 2.1.2011 5:36, Robert Haas wrote:
> On Sat, Jan 1, 2011 at 6:54 AM, Simon Riggs<simon(at)2ndquadrant(dot)com> wrote:
>> Yes, working out the math is a good idea. Things are much clearer if we
>> do that.
>>
>> Let's assume we have 98% availability on any single server.
>>
>> 1. Having one primary and 2 standbys, either of which can acknowledge,
>> and we never lock up if both standbys fail, then we will have 99.9992%
>> server availability. (So PostgreSQL hits "5 Nines", with data
>> guarantees). ("Maximised availability")
> I don't agree with this math. If the master and one standby fail
> simultaneously, the other standby is useless, because it may or may
> not be caught up with the master. You know that the last transaction
> acknowledged as committed by the master is on at least one of the two
> standbys, but you don't know which one, and so you can't safely
> promote the surviving standby.
> (If you are working in an environment where promoting the surviving
> standby when it's possibly not caught up is OK, then you don't need
> sync rep in the first place: you can just run async rep and get much
> better performance.)
> So the availability is 98% (you are up when the master is up) + 98%^2
> * 2% (you are up when both slaves are up and the master is down) =
> 99.92%. If you had only a single standby, then you could be certain
> that any commit acknowledged by the master was on that standby. Thus
> your availability would be 98% (up when master is up) + 98% * 2% (you
> are up when the master is down and the slave is up) = 99.96%.
>
OTOH, in the case where you need _all_ the slaves to confirm any failing
slave brings
the master down, so adding a slave brings down availability by extra 2%
The solution to achieving good durability AND availability is requiring
N past the
post instead of 1 past the post.
In this case you can get to 99.9992% availability with master + 3 sync
slaves, 2 of which have ACK.
---------------------------------------
Hannu Krosing
Performance and Infinite Scalability Consultant
http://www.2ndQuadrant.com/books/
In response to
pgsql-hackers by date
Next :From: Jan UrbaĆskiDate: 2011-01-02 11:41:24
Subject : Re: pl/python refactoring
Previous :From : Dimitri FontaineDate : 2011-01-02 10:57:02
Subject : Re: Extension upgrade, patch v0: debug help needed