Re: How to start slave after pg_basebackup. Why min_wal_size and wal_keep_segments are duplicated
| От | Andrus |
|---|---|
| Тема | Re: How to start slave after pg_basebackup. Why min_wal_size and wal_keep_segments are duplicated |
| Дата | |
| Msg-id | D1C2C9E316ED41149A8D2C5751797621@dell2 обсуждение исходный текст |
| Ответ на | Re: How to start slave after pg_basebackup. Why min_wal_size andwal_keep_segments are duplicated (Paul Förster <paul.foerster@gmail.com>) |
| Ответы |
Re: How to start slave after pg_basebackup. Why min_wal_size andwal_keep_segments are duplicated
|
| Список | pgsql-general |
Hi!
> How to create replication server ?
>I always do it this way and it work for me:
>$ pg_basebackup -h ${PGHOST} -p ${PGPORT} -U replicator -W -R -D ${PGDATA} -P -v -Fp -Xs
>After that, I edit ${PGDATA}/postgresql.conf and (w/ PostgreSQL 11 and older ${PGDATA}/recovery.conf) to make it do
whatI want and
>then I just launch it:
>$ pg_ctl start
My script does the same thing as your comands.
>From that moment onward, it replicates and applies to the replica. Checks in pg_stat_replication on the master and
>pg_stat_wal_receiver on the replica >confirm that. They also show the WAL switches.
>To provoke a WAL switch I always do:
>postgres=# checkpoint; select pg_switch_wal();
>CHECKPOINT
> pg_switch_wal
>I just don't understand what you're trying to achieve here.
I want to create replication server.
>My guess is, you want to stop and backup the old database cluster,
Old cluster is empty, from initdb. Backup is not needed
>then create a new one in its old directory, right?
pg_basebackup creates new main directory.
>In this case, you probably need to change your script to something like this:
>PGHOST=remote.example.com
>PGPASSWORD=mypass
>PGUSER=replikaator
>PGDATA=/var/lib/postgresql/12/main
>export PGHOST PGPASSWORD PGUSER PGDATA
>/etc/init.d/postgresql stop
>mv ${PGDATA} /var/lib/postgresql/12/mainennebaasbakuppi
>pg_basebackup -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -W -R -D ${PGDATA} -P -v -Fp -Xs
>/etc/init.d/postgresql start
pg_basebackup uses environment varuables if not specified in command line. So my script does the same thing.
>Note that my invocation of pg_basebackup asks for the replicator password. This is intended. You'd probably want to
changethat.
>Also, no need to play around with ownership and permissions. Do it as "postgres", not as "root".
I tried
sudo --user=postgres pg_basebackup ....
but got error
could not change directory to "/root": Permission denied
Andrus.
В списке pgsql-general по дате отправления: