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

Tatsuo Ishii ishii at sraoss.co.jp
Thu Feb 10 11:02:04 JST 2022


> Hello Tatsuo
> 
> Thank you so much for such prompt fixes.
> 
> Since I am actually running the packaged version (4.2.2) of pgpool in my setup, I would like to know if you already have a timeline for releasing these new updates in a new packaged version?

You are using debian/Ubuntu package for Pgpool-II? Unfortunately I am
not in charge of creating/releasing them and I cannot answer the
question.

> That way I can wait for some time and upgrade to the latest packaged version instead of building from source.
> Thank you
> 
> Anirudh
> On 6 Feb 2022, 12:33 PM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>> 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