[pgpool-general: 3835] Re: PGPool-II 3.4.2-1 not saving db state on node detach

Tatsuo Ishii ishii at postgresql.org
Sat Jun 27 12:54:07 JST 2015


I have tested with 3.4.2 and could not reproduce your problem.
(I do not use rpm init file but do use pgpool_setup which comes with
pgpool source tree for testing purpose).

t-ishii at localhost: cat log/pgpool_status  <--- check initial pgpool_status. Both node up.
up
up
t-ishii at localhost: sh startall
waiting for server to start....24428 2015-06-27 12:49:00 JST LOG:  redirecting log output to logging collector process
24428 2015-06-27 12:49:00 JST HINT:  Future log output will appear in directory "pg_log".
 done
server started
waiting for server to start....24442 2015-06-27 12:49:01 JST LOG:  redirecting log output to logging collector process
24442 2015-06-27 12:49:01 JST HINT:  Future log output will appear in directory "pg_log".
 done
server started
t-ishii at localhost: pcp_detach_node 0 localhost 11001 t-ishii t-ishii 1 < --- let node 1 down.
t-ishii at localhost: psql -p 11000 -c "show pool_nodes" test <-- confirm it.
 node_id | hostname  | port  | status | lb_weight |  role   
---------+-----------+-------+--------+-----------+---------
 0       | /tmp      | 11002 | 2      | 0.500000  | primary
 1       | localhost | 11003 | 3      | 0.500000  | standby
(2 rows)

t-ishii at localhost: sh shutdownall <-- shudown pgpool and PostgreSQL.
2015-06-27 12:49:21: pid 25079: LOG:  stop request sent to pgpool. waiting for termination...
.done.
waiting for server to shut down.... done
server stopped
waiting for server to shut down.... done
server stopped
t-ishii at localhost: cat log/pgpool_status <--- check pgpool_status
up
down
t-ishii at localhost: sh startall <-- restart pgpool and PostgreSQL
waiting for server to start....25093 2015-06-27 12:49:32 JST LOG:  redirecting log output to logging collector process
25093 2015-06-27 12:49:32 JST HINT:  Future log output will appear in directory "pg_log".
 done
server started
waiting for server to start....25107 2015-06-27 12:49:33 JST LOG:  redirecting log output to logging collector process
25107 2015-06-27 12:49:33 JST HINT:  Future log output will appear in directory "pg_log".
 done
server started
t-ishii at localhost: psql -p 11000 -c "show pool_nodes" test <-- check pgpool status
 node_id | hostname  | port  | status | lb_weight |  role   
---------+-----------+-------+--------+-----------+---------
 0       | /tmp      | 11002 | 2      | 0.500000  | primary
 1       | localhost | 11003 | 3      | 0.500000  | standby
(2 rows)

> Thanks Tatsuo,
> What I am seeing is that the status file is *not* updated after a
> pcp_detatch_node so after a restart, the node is considered up again.
> 
> When pgpool detects the node is down by itself however, it is written to
> file as expected.
> 
> Regards,
> James Elsdon
> 
> On Thursday, 25 June 2015, Tatsuo Ishii <ishii at postgresql.org> wrote:
> 
>> > Hi there,
>> >
>> > I'm not sure if it's the intended behavior, but I'm seeing on PGPool-II
>> > 3.4.2-1 that if I use pcp_detach_node - it works successfully but is not
>> > persistent across pgpool restarts.
>> >
>> > When the node dies naturally (pgpool detaches it), the status file works
>> > correctly - this is only on a manual pcp_detach_node
>> >
>> > [me at host ~]$ /usr/pgsql-9.2/bin/psql -U psgsuser -h psghost -p pgport -c
>> > 'show pool_nodes'
>> >  node_id |    hostname    | port | status | lb_weight |  role
>> > ---------+----------------+------+--------+-----------+--------
>> >  0       | host1          | 5432 | 2      | 0.500000  | master
>> >  1       | host2          | 5432 | 2      | 0.500000  | slave
>> > (2 rows)
>> >
>> > [me at host ~]$ /usr/pgpool-9.2/bin/pcp_detach_node 10 localhost 9898
>> pcpuser
>> > pcppass 1
>> >
>> > [me at host ~]$ /usr/pgsql-9.2/bin/psql -U psgsuser -h psghost -p pgport -c
>> > 'show pool_nodes'
>> >  node_id |    hostname    | port | status | lb_weight |  role
>> > ---------+----------------+------+--------+-----------+--------
>> >  0       | host1          | 5432 | 2      | 0.500000  | master
>> >  1       | host2          | 5432 | 3      | 0.500000  | slave
>> > (2 rows)
>> >
>> > [me at host ~]$ sudo cat /var/log/pgpool/pgpool_status
>> > up
>> > up
>> >
>> > [me at host ~]$ sudo /etc/init.d/pgpool-II-92 stop
>> > Stopping pgpool-II-92 service:                             [  OK  ]
>> >
>> > [me at host ~]$ sudo cat /var/log/pgpool/pgpool_status
>> > up
>> > up
>> >
>> > [me at host ~]$ sudo /etc/init.d/pgpool-II-92 start
>> > Starting pgpool-II-92 service:                             [  OK  ]
>> >
>> > [me at host ~]$ /usr/pgsql-9.2/bin/psql -U psgsuser -h psghost -p pgport -c
>> > 'show pool_nodes'
>> >  node_id |    hostname    | port | status | lb_weight |  role
>> > ---------+----------------+------+--------+-----------+--------
>> >  0       | host1          | 5432 | 2      | 0.500000  | master
>> >  1       | host2          | 5432 | 2      | 0.500000  | slave
>> > (2 rows)
>> >
>> > [me at host ~]$ sudo cat /var/log/pgpool/pgpool_status
>> > up
>> > up
>> >
>> >
>> > Is this the intended behavior of pcp_detach_node ?
>>
>> Yes. pgpool-II will not change the contents of the status file until
>> it is told a failover event (it could be triggered by either
>> pcp_detach_node or failover caused by PostgreSQL backend down).
>>
>> If you do not like it, you can discard the status file and rebuild the
>> file by using current status, which is maintained by health checking.
>> (hint: pgpool -D)
>>
>> 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