The other major HS TODO: standby promotion

From: Josh Berkus <josh(at)agliodbs(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: The other major HS TODO: standby promotion
Date: 2010-09-03 20:02:12
Message-ID: 4C815444.8050608@agliodbs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

All,

As far as I'm concerned, the other big "missing feature" for HS is the
ability to promote standbys to become the new master. If we had that
feature, then HS can be the backbone of a large-scale PostgreSQL
"cloud"; if we don't have it, then HS does not contribute very much to
scalability beyond a couple of servers.

It also seems like it ought to be relatively easy to do, if I understand
the issues correctly. Please advise me if I understand the two
obstacles for this:

a) for a standby to become a master to another standby, the promoted
standby must be equal to or ahead of the nonpromoted standby in the
replication stream.

b) when we bring a standby up, it comes up on a new timeline. Since the
other standbys don't have this new timeline, they are incompatible with it.

c) when we promote a standby, it would also need to save all of its
transaction logs until the other standbys connect.

(a) seems easily enough solved by giving two steps: giving the DBA a way
to check where in the replication stream each standby is (I think we
already have this) and by having the re-mastering mechanism check for
regressions in timestamps or the XID sequence.

I can see two ways to tackle (b). One would be NOT to start a new
timeline (as an option) when we promote the standby. That method
probably has complications we don't want to get into.

The second method would be by giving standbys a way to "subscribe" to a
new timeline. This seems like the better approach, as it would
logically be part of the re-mastering command. What changes would be
required to do this?

(c) can actually already be dealt with by setting an archive_command on
each standby. Beyond that, I don't think that we really need to do
anything; DBAs can have a choice between archiving logs to allow for
remastering of all standbys, or saving space and bandwidth, and forcing
some standbys to be re-cloned if you run out of time. It would be nice,
eventually, to have a way to tell PostgreSQL to retain more or less WAL
segments without restarting the server, but I don't see this as critical.

--
-- Josh Berkus
PostgreSQL Experts Inc.
http://www.pgexperts.com

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2010-09-03 20:07:03 Re: returning multiple result sets from a stored procedure
Previous Message Martijn van Oosterhout 2010-09-03 19:30:42 Re: Streaming a base backup from master