[pgpool-general: 8594] Re: PgPool thinks node 0 is in recovery.

Tatsuo Ishii ishii at sraoss.co.jp
Sat Feb 4 14:17:26 JST 2023


You can stop pgpool and remove pgpool_status file then start pgpool so
that it recognizes backend 0. pgpool_status is recreated upon starting
up of pgpool.

pgpool_status should be located under "logdir" (in your case /tmp).

> Correct.  It's as if pgpool doesn't even see backend_hostname0.  (I
> tried commenting out all of the backend_*1 config items, and pgpool
> didn't see *anything*. "psql --port=9999" refused connection.)
> 
> $ psql --port=9999 -c "\x" -c "show pool_nodes;"
> Expanded display is on.
> -[ RECORD 1 ]----------+--------------------
> node_id                | 0
> hostname               | FISPCCPGS405a
> port                   | 5432
> status                 | down <<<<<<<<<<<<<<<<<<<
> pg_status              | up
> lb_weight              | 0.666667
> role                   | primary
> pg_role                | primary
> select_cnt             | 0
> load_balance_node      | false
> replication_delay      | 0
> replication_state      |
> replication_sync_state |
> last_status_change     | 2023-02-03 23:07:59
> -[ RECORD 2 ]----------+--------------------
> node_id                | 1
> hostname               | FISPCCPGS405b
> port                   | 5432
> status                 | up
> pg_status              | up
> lb_weight              | 0.333333
> role                   | standby
> pg_role                | standby
> select_cnt             | 0
> load_balance_node      | true
> replication_delay      | 0
> replication_state      |
> replication_sync_state |
> last_status_change     | 2023-02-03 23:07:59
> 
> 
> On 2/3/23 18:15, Tatsuo Ishii wrote:
>> It seems pgpool thinks backend node 0 is down. To confirm this, can
>> you share pool_status file and the result of show pool_nodes?
>>
>>> Logs attached, with log_statement = 'all'.
>>>
>>> I don't see any attempted connections to the primary server when
>>> pgpool is starting up.
>>>
>>> On 2/3/23 03:25, Tatsuo Ishii wrote:
>>>> Can you share PostgreSQL log of the primary with log_statement =
>>>> 'all'?  I would like to confirm that queries sent from sr_check worker
>>>> are reached to the primary. If so, you should see something like:
>>>>
>>>> 1771450 2023-02-03 18:19:05.585 JST LOG: statement: SELECT
>>>> pg_is_in_recovery()
>>>> 1771463 2023-02-03 18:19:15.597 JST LOG: statement: SELECT
>>>> pg_current_wal_lsn()
>>>>
>>>> Best reagards,
>>>> --
>>>> Tatsuo Ishii
>>>> SRA OSS LLC
>>>> English:http://www.sraoss.co.jp/index_en/
>>>> Japanese:http://www.sraoss.co.jp
>>>>
>>>>> Attached are three log files (pgpool, the primary and replicated
>>>>> servers).
>>>>>
>>>>> The primary is definitely not in replication mode.
>>>>>
>>>>> On 2/1/23 00:04, Tatsuo Ishii wrote:
>>>>>>> There must have been a miscommunication; I thought I attached my
>>>>>>> pgpool.conf and the log file to a previous email, but maybe not.
>>>>>>>
>>>>>>> I fixed the backend_port0 problem last week.
>>>>>> Ok.
>>>>>>
>>>>>>> pgppol is already running with pgpool.conf log_min_messages=debug3. Is
>>>>>>> that sufficient?
>>>>>> Yes.
>>>>>>
>>>>>>> Attached is the error log from when I last started pgpool, and the
>>>>>>> pgpool.conf from that time.
>>>>>> I see some errors with streaming replication check process:
>>>>>>
>>>>>> 2023-01-26 13:31:04.594: sr_check_worker pid 796880: DEBUG: do_query:
>>>>>> extended:0 query:"SELECT pg_current_wal_lsn()"
>>>>>> 2023-01-26 13:31:04.594: sr_check_worker pid 796880: CONTEXT: while
>>>>>> checking replication time lag
>>>>>> 2023-01-26 13:31:09.594: health_check1 pid 796881: DEBUG: health
>>>>>> check: clearing alarm
>>>>>> 2023-01-26 13:31:09.603: health_check1 pid 796881: DEBUG: authenticate
>>>>>> kind = 10
>>>>>> 2023-01-26 13:31:09.612: health_check1 pid 796881: DEBUG: SCRAM
>>>>>> authentication successful for user:pool_health_check
>>>>>> 2023-01-26 13:31:09.612: health_check1 pid 796881: DEBUG: authenticate
>>>>>> backend: key data received
>>>>>> 2023-01-26 13:31:09.612: health_check1 pid 796881: DEBUG: authenticate
>>>>>> backend: transaction state: I
>>>>>> 2023-01-26 13:31:09.612: health_check1 pid 796881: DEBUG: health
>>>>>> check: clearing alarm
>>>>>> 2023-01-26 13:31:09.612: health_check1 pid 796881: DEBUG: health
>>>>>> check: clearing alarm
>>>>>> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: FATAL: Backend
>>>>>> throw an error message
>>>>>> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: DETAIL: Exiting
>>>>>> current session because of an error from backend
>>>>>> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: HINT: BACKEND
>>>>>> Error: "recovery is in progress"
>>>>>> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: CONTEXT: while
>>>>>> checking replication time lag
>>>>>>
>>>>>> sr_check_process tried to dtermin WAL LSN on backend0 by issuing
>>>>>> "SELECT pg_current_wal_lsn()" to backend0 but failed with:
>>>>>>
>>>>>>> 2023-01-26 13:31:14.595: sr_check_worker pid 796880: HINT: BACKEND
>>>>>>> Error: "recovery is in progress"
>>>>>> This suggests that backend0 is running as a standby server. I guess
>>>>>> there's something wrong with the setting in backend0.  Maybe
>>>>>> standby.signal exists?  Can you share PostgreSQL log of backend0 at
>>>>>> it's start up?
>>>>>>
>>>>>> Best reagards,
>>>>>> --
>>>>>> Tatsuo Ishii
>>>>>> SRA OSS LLC
>>>>>> English:http://www.sraoss.co.jp/index_en/
>>>>>> Japanese:http://www.sraoss.co.jp
>>>>> -- 
>>>>> Born in Arizona, moved to Babylonia.
>>> -- 
>>> Born in Arizona, moved to Babylonia.
> 
> -- 
> Born in Arizona, moved to Babylonia.


More information about the pgpool-general mailing list