[pgpool-general: 4197] Re: failover: set new primary node: -1

Tatsuo Ishii ishii at postgresql.org
Fri Nov 13 07:56:42 JST 2015


> Hello Tatsuo
> 
> Thank you very much for quick reply!
> 
> After the pgpool set the new primary node : -1
> Then it set the master node 0,
> 
> Then it start to direct the update request to the node 0, which is read-only
> 
> 
> 2015-11-07 08:43:52: pid 6378: LOG:  failover: set new primary node: -1
> 2015-11-07 08:43:52: pid 6378: LOG:  failover: set new master node: 0
> ...
> 
> 2015-11-07 08:44:05: pid 1698: LOG:  pool_send_and_wait: Error or notice message from backend: : DB node id: 0 backend pid: 8651 statement: "update mdnowner.MDN_COMPONENT_PROCESS set MDN_COMPONENT_ID=$1, CREATED_AT=$2, NAME=$3, RUNNING=$4, STATUS=$5, UPDATED_AT=$6, version=$7 where id=$8 and version=$9" message: "cannot execute UPDATE in a read-only transaction"
> 
> At this point, pgpool was completed confused itself. It was not able to detect the proper master and slave node. 
> 
> After I restart the pgpool, the problem is gone.
> 
> But we have saw the pgpool find primary node -1 many times.
> 
> My question is , what cause the pgpool find the primary node "-1"?

Without pgpool log (with debugging option enabled is preferred) it is
hard to tell.

> And if The master node is a live node which has the youngest node id, how pgpool decide where to send the update?

Because there's no primary node.

Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

> Thanks!/Audrey
> 
> 
> -----Original Message-----
> From: Tatsuo Ishii [mailto:ishii at postgresql.org] 
> Sent: November-09-15 6:20 PM
> To: Ziyun Audrey Wang
> Cc: pgpool-general at pgpool.net
> Subject: Re: [pgpool-general: 4176] failover: set new primary node: -1
> 
>> Hello,
>> 
>> We are using pgpool II
>> # pgpool -version
>> pgpool-II version 3.4.2 (tataraboshi)
>> 
>> we have the following setup:
>> 
>> one pgpool node, with one master DB and 3 slave nodes
>> 
>> during our failover testing, after server failover happened,
>> 
>> we got the following:
>> 2015-11-07 08:43:52: pid 6378: LOG:  failover: set new primary node: 
>> -1
>> 2015-11-07 08:43:52: pid 6378: LOG:  failover: set new master node: 0
>> 
>> But at this point the master node is actually node 1, the pgpool set the wrong node as master node.
> 
> "master node" != "primary node" in pgpool-II terms. The master node is a live node which has the youngest node id. So if node 0 is alive, your master node is 0.
> 
>> Can someone help to answer why the pgpool will set the new primary node: -1?
>> 
>> Is this a known bug?
> 
> Probably pgpool-II fails to detect the node is actually a primary. See below to know how pgpool-II detects a primary node.
> 
> http://pgpool.net/mediawiki/index.php/FAQ#How_does_pgpool-II_find_the_primary_node.3F
> 
> Also enabling debug mode (-d) will generate help us to see what's going on when failover occurs.
> 
> Best regards,
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp


More information about the pgpool-general mailing list