[Pgpool-general] inconsistency when using two pgpool instances in warm standby?
Tatsuo Ishii
ishii at sraoss.co.jp
Mon Dec 15 15:59:25 UTC 2008
Marcelo,
Great. Please post!
--
Tatsuo Ishii
SRA OSS, Inc. Japan
> Tatsuo,
>
> I also have some online-recory scripts that I have been meaning to
> post on the list that perhaps some could use it as another example
> together with the ones you currently provide
>
>
> Marcelo
> PostgreSQL DBA
> Linux/Solaris System Administrator
> http://www.zeroaccess.org
>
> On Dec 13, 2008, at 6:58 AM, Tatsuo Ishii wrote:
>
> > [snip]
> >
> >> I can prepare ./contrib/ branch of heartbeat configuration
> >> resources to the
> >> 2.2 relese if you are interested in.
> >
> > Great. I'd like to include your contributions into 2.2 release. I
> > will create ./contrib/heartbeat directory and will put files you
> > provide under it. Please provide a tar ball along with README.
> >
> > I'm almost ready for 2.2. F.Y.I. here is the NEWS file of 2.2.
> > ----------------------------------------------------------------------
> > 2.2 (urukiboshi) 2008/12/?
> > * Version 2.2
> >
> > This version enhances on line recovery and fixes important bugs
> > in handling serializable transactions which could cause data
> > inconsistency among DB nodes.
> >
> > * New features
> >
> > - Add client_idle_limit_in_recovery directive. This will
> > prevent 2nd stage of on line recovery from not going forward
> > by idle clients sitting forever(Tatsuo)
> >
> > - Allow to load balance DECLARE, FETCH and CLOSE(Tatsuo)
> >
> > * Bug fixes
> >
> > - Close all file descriptors when running in daemon mode.
> > Otherwise we inherit sockets from apache when it's started by
> > pgpoolAdmin. This results in that port 80 is occupied for
> > example. Patch provided by Akio Ishida. Also add
> > chdir("/"). This is always good for daemon programs(Tatsuo)
> >
> > - Allow MD5 authentication in raw mode as stated in
> > docs(Tatsuo)
> >
> > - Check transaction serialization failure error in
> > serializable mode and abort all nodes if so. Otherwise we
> > allow data inconsistency among DB nodes(Tatsuo).
> >
> > See following scenario: (M:master, S:slave)
> >
> > M:S1:BEGIN;
> > M:S2:BEGIN;
> > S:S1:BEGIN;
> > S:S2:BEGIN;
> > M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > M:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > S:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > M:S1:UPDATE t1 SET i = i + 1;
> > S:S1:UPDATE t1 SET i = i + 1;
> > M:S2:UPDATE t1 SET i = i + 1; <-- blocked
> > S:S1:COMMIT;
> > M:S1:COMMIT;
> > M:S2:ERROR: could not serialize access due to concurrent update
> > S:S2:UPDATE t1 SET i = i + 1; <-- success in UPDATE and data
> > becomes inconsistent!
> >
> > - avoid kind mismatch error caused by "SET TRANSACTION
> > ISOLATION LEVEL must be called before any query"(Tatsuo).
> >
> > This could happen in following scenario:
> >
> > M:S1:BEGIN;
> > S:S1:BEGIN;
> > M:S1:SELECT 1; <-- only sent to MASTER
> > M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > M: <-- error
> > S: <-- ok since no previous SELECT is sent. kind mismatch error
> > occurs!
> >
> > * Incompatible changes
> >
> > - Always fail over and restart all children. Before we do
> > restart only if master has not been changed. This is
> > wrong. If we have trouble with network cable or something,
> > TCP/IP stack keeps on retrying for long time and the only
> > way to prevent it is restarting process(Tatsuo)
> > ----------------------------------------------------------------------
> > --
> > Tatsuo Ishii
> > SRA OSS, Inc. Japan
> > _______________________________________________
> > Pgpool-general mailing list
> > Pgpool-general at pgfoundry.org
> > http://pgfoundry.org/mailman/listinfo/pgpool-general
>
More information about the Pgpool-general
mailing list