[pgpool-hackers: 4121] Re: Failover on starting up

Tatsuo Ishii ishii at sraoss.co.jp
Sun Feb 6 20:32:36 JST 2022


I have found multiple issues with Pgpool-II in your scenario
(i.e. primary PostgreSQL is not up when pgpool starts).

1) I assume your failover.sh is based on the script coming with
Pgpool-II. The script does not promote standby node if old primary
node (%P) is -1. You need to fix the script.

Change this line:

if [ $FAILED_NODE_ID -ne $OLD_PRIMARY_NODE_ID ]; then

to:

if [ $OLD_PRIMARY_NODE_ID != "-1" -a $FAILED_NODE_ID -ne $OLD_PRIMARY_NODE_ID ]; then


2) Even if #1 is fixed, Pgpool-II has a bug: after failover.sh gets
executed (thus one of standby node has been promoted), the new primary
node is not detected by Pgpool-II.

3) After failover is done, follow primary command is executed (if
set). Pgpool-II fails to execute the command in the scenario.

I have already pushed the fix for #2 and #3 for all supported
branches. For example the commit for 4.3 is here:

https://git.postgresql.org/gitweb/?p=pgpool2.git;a=blobdiff;f=src/main/pgpool_main.c;h=13049e1f9b4520e709ab0cdcea6ed29a8a2faef2;hp=80a25d00f20f9ef0a893e89f1b824fa1fc3db225;hb=5028a50d718944a6a1d19f8fa984b4c30d8f7dae;hpb=8e5e49426aeb89cdf2bd5c18928261ad2311e5b4

> I have looked into pgpool.conf. You need to set other than 0 to
> search_primary_node_timeout. pgpool will not start up until
> search_primary_node_timeout is expired.
> 
>> I have attached both, logs and conf file.
>> On 6 Feb 2022, 2:46 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>>> Have you enabled health check?
>>> Can you share pgpool.conf?
>>>
>>> > But that’s the issue - pgpool didn’t perform a failover.
>>> >
>>> > It just said this and then gave up:
>>> > 2022-02-04 16:48:53: pid 9: LOG: ignoring the failover request, since we are still starting up
>>> > On 6 Feb 2022, 2:32 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>>> > > But after starting up pgpool will detect that the primary went down by
>>> > > health check and perform failover anyway, no?
>>> > >
>>> > > > Thank you Tatsuo for your reply but can’t pgpool setup the other resources regardless of the primary being up and then perform the failover?
>>> > > >
>>> > > > I need this behaviour because I cannot pgpool in cluster mode due to infrastructure limitations.
>>> > > >
>>> > > > Cheers
>>> > > >
>>> > > > Anirudh
>>> > > > On 6 Feb 2022, 1:51 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>>> > > > > > Hello
>>> > > > > >
>>> > > > > > I have a setup with 1 pgpool and 2 postgresql primary-replica nodes.
>>> > > > > >
>>> > > > > > I am testing a certain scenario - what if the pgpool goes down, then the primary goes down and then the pgpool comes back up.
>>> > > > > >
>>> > > > > > I was expecting that pgpool would perform a failover after it comes back up but instead it says this:
>>> > > > > > 2022-02-04 16:48:53: pid 9: LOG: Pgpool-II parent process has received failover request
>>> > > > > > 2022-02-04 16:48:53: pid 9: LOG: ignoring the failover request, since we are still starting up
>>> > > > > >
>>> > > > > > So my question is, is there a parameter or some way that we can tell pgpool to perform a failover if the primary is down while pgpool is starting up?
>>> > > > > >
>>> > > > > > I tried looking at the code but according to https://github.com/pgpool/pgpool2/blob/master/src/main/pgpool_main.c#L1329, I don¢t see a parameter other than processState.
>>> > > > > >
>>> > > > > > Is there a logical reason why pgpool cannot/won't perform a failover during startup?
>>> > > > >
>>> > > > > Because pgpool needs to setup various resouses including shared memory
>>> > > > > and others for managing failover.
>>> > > > >
>>> > > > > Best reagards,
>>> > > > > --
>>> > > > > Tatsuo Ishii
>>> > > > > SRA OSS, Inc. Japan
>>> > > > > English: http://www.sraoss.co.jp/index_en.php
>>> > > > > Japanese:http://www.sraoss.co.jp
> _______________________________________________
> pgpool-hackers mailing list
> pgpool-hackers at pgpool.net
> http://www.pgpool.net/mailman/listinfo/pgpool-hackers


More information about the pgpool-hackers mailing list