Re: setting up streaming replication

From: Ron <ronljohnsonjr(at)gmail(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: setting up streaming replication
Date: 2023-10-24 13:52:35
Message-ID: 08345d16-a49a-43e1-8dfd-b8bc9b04b314@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 10/24/23 08:14, b55white wrote:
>> On Oct 23, 2023 at 8:30 PM, Ron <ronljohnsonjr(at)gmail(dot)com> wrote:
>>
>> On 10/23/23 18:16, Brad White wrote:
>> > I'm stumped.
>> >
>> > Using this command to set up the slave and replication on PG v 15:
>> > "C:\Program Files\PostgreSQL\15\bin\pg_basebackup" -h 192.168.1.126 -U
>> > pgrep_user -p 5433 -D "C:\Program Files\PostgreSQL\15\data" -Fp -Xs -R
>> >
>> > If I have PG running on the remote server and the data directory is
>> > intact, then I get an error, Data exists and is not empty.
>> >
>> > If I shut down PG, delete data\*, restart PG, then it fails to start
>> > because the conf files are missing.
>> >
>> > If I leave PG shut down and run pg_basebackup, it times out and asks if pg
>> > is running and listening on the port. Of course it is not.
>> >
>> > I see lots of posts on how to use pg_basebackup, but apparently this isn't
>> > interesting because no one mentions whether pg should be running on
>> > the remote server.
>>
>> No, it should not.
>>
>> This is what works for me, in Linux on the standby system, where "buddy" and
>> "basebackup" are references in .pg_service.conf to the primary server:
>> PGHOST=...
>> pg_ctl status && pg_ctl stop -mfast
>> psql service=buddy -Xac "select pg_drop_replication_slot(slot_name)
>>                          from pg_replication_slots
>>                          where slot_name = 'pgstandby1';"
>> /usr/bin/rm -r $PGDATA/*
>> pg_basebackup --dbname=service=basebackup -D $PGDATA --progress \
>>               --checkpoint=fast -v \
>>               --write-recovery-conf --wal-method=stream \
>>               --create-slot --slot=pgstandby1 --compress=server-zstd
>> pg_ctl start -wt90 -l ${MajVer}/pgstart_standby.log
>>
>> Source:
>> https://www.tecmint.com/configure-postgresql-streaming-replication-in-centos-8/
>>

> It sounds like you are saying that pg_basebackup should be run on the backup server, not on the primary.

Correct.

> But a detail that important would be mentioned in the documentation. Especially since it is directly compared to pg_dump, which I only run on the primary.

pg_dump can be run anywhere that can get to the pg server via port 5432 (and
there's enough disk space).

> If you are running it from the secondary, how can you have a pg_service.conf since data is empty?

.pg_service.conf goes in $HOME, not $PGDATA.

> Is all that stuff with slots necessary since the backup will automatically create a temporary slot for replication?

I want a permanent slot so that replication automatically resumes if the
secondary must temporarily be taken down.

--
Born in Arizona, moved to Babylonia.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Carlos Alves 2023-10-24 16:27:35 Question about tuple´s lock
Previous Message David G. Johnston 2023-10-24 13:36:25 Re: setting up streaming replication