<div dir="ltr"><div dir="ltr">On Wed, Mar 26, 2025 at 9:43 PM Tatsuo Ishii <<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>> wrote:</div><div class="gmail_quote gmail_quote_container"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> On Wed, Mar 26, 2025 at 7:56 PM Tatsuo Ishii <<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>> wrote:<br>
> <br>
>> > PgPool 4.5.4<br>
>> ><br>
>> > Three node pgpool cluster:<br>
>> > Node0 = Postgresql primary<br>
>> > Node1 = Postgresql streaming replica<br>
>> > Node2 = PgPool leader, where the VIP sits.<br>
>> ><br>
>> ><br>
>> <a href="https://www.pgpool.net/docs/45/en/html/runtime-config-backend-settings.html" rel="noreferrer" target="_blank">https://www.pgpool.net/docs/45/en/html/runtime-config-backend-settings.html</a><br>
>> ><br>
>> > The docs consistently refer to setting backend_application_nameX to<br>
>> > "serverX", so that's what I did:<br>
>><br>
>> "serverX" is just an example. You can use arbitrary name for<br>
>> backend_application_nameX as long as:<br>
>><br>
>> a) It matches with the application name set in the primary_conninfo in<br>
>> postgresql.conf.<br>
>><br>
> <br>
> On the replica (aka Node 1), there is no primary_coninfo in either<br>
> postgresql.conf or postgresql.auto.conf.<br>
<br>
Maybe you are using older version of PostgreSQL (11 or earlier)? Then<br>
you will have recovery.conf instead.<br></blockquote><div><br></div><div>Nope.  PG 16.8.</div><div><br></div><div>This is all I need to do on Node 1 to get replication running from Node 0.</div><div><br></div><div><font face="monospace">rm -r $PGDATA</font></div><div><font face="monospace">pg_basebackup \<br>            --pgdata=$PGDATA \<br>            --dbname=service=basebackup \<br>            --verbose --progress \<br>            --checkpoint=fast \<br>            --write-recovery-conf \<br>            --wal-method=stream \<br>            --create-slot --slot=pgstandby1 \<br>            --compress=server-zstd<br>pg_ctl start -wt999</font></div><div> </div><div>pg_basebackup appends a conninfo string to $PGDATA/postgresql.auto.conf.</div><div><br></div><div>Should I move that to postgresql.conf and then add an application_name="mumble" clause before the "pg_ctl start"?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> pg_stat_wal_receiver.conninfo has this section:<br>
> fallback_application_name="walreceiver".<br>
> <br>
> (I initiate replication using "pg_basebackup --wal-method=stream<br>
> --create-slot --slot=foo.)<br>
> <br>
> <br>
>><br>
>> b) No same application names are used in all primary_conninfo.<br>
>><br>
>> > But should it really be set to "walreceiver"?  Should both<br>
>> > backend_application_name0 and backend_application_name1 be set to<br>
>> > "walreceiver" even though it's only running on Node1?<br>
>><br>
>> I never tried it but probably yes. However I recommend in general to<br>
>> set unique application names for each<br>
>> backend_application_nameX. Someday you might want to add more replica.<br>
>><br>
> <br>
> How does the second replica know to set it's name different from the first?<br>
<br>
I do not understand your question. Maybe I should have explained the<br>
background:<br>
<br>
The application name uniqueness is necessary requirement for streaming<br>
replication check process to show pool_status's replication_state and<br>
replication_sync_state columns. The process sends "SELECT<br>
pg_stat_replication" to the primary PostgreSQL to know the synchronous<br>
state. In this query the application name is used to distinguish each<br>
standby's information. So if same application names are used, the<br>
states will not be correctly shown.</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
>> > cdsmultip=# pgpool show backend_application_name2;<br>
>> >  backend_application_name2<br>
>> > ---------------------------<br>
>> ><br>
>> > (1 row)<br>
>><br>
>> What's this? You said you only have one replica.<br>
>><br>
>><br>
> You can successfully run "pgpool show backend_application_name2;" even<br>
> though only _name0 and _name1 are defined in pgpool.conf.<br>
> <br>
> I ran the command just for completeness.<br>
<br>
Oh, I didn't know that! "pgpool show" should errors out in this case.<br>
<br>
Best reagards,<br>
--<br>
Tatsuo Ishii<br>
SRA OSS K.K.<br>
English: <a href="http://www.sraoss.co.jp/index_en/" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_en/</a><br>
Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.jp</a><br>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Death to <Redacted>, and butter sauce.<div>Don't boil me, I'm still alive.<br><div><div><Redacted> lobster!</div></div></div></div></div></div>