pg_rewind: ERROR: could not fetch remote file "global/pg_control": ERROR: permission denied

Поиск
Список
Период
Сортировка
От Zhaoxun Yan
Тема pg_rewind: ERROR: could not fetch remote file "global/pg_control": ERROR: permission denied
Дата
Msg-id CADEX6_UmT-uPk=W7HmD=t+8rNWQwtG+z1Ug_EDb_ejr9EsZ55g@mail.gmail.com
обсуждение исходный текст
Ответы Re: pg_rewind: ERROR: could not fetch remote file "global/pg_control": ERROR: permission denied  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-bugs
I came across this error by using repmgr5.4 for pg15, but the problem arose in pg_rewind, so I installed pg16 and tried again, the error persists like this:

$ /usr/pgsql-16/bin/pg_rewind -D '/pgdata' --source-server='host=172.17.1.2 port=5432 user=rep dbname=repmgr connect_timeout=5'
pg_rewind: error: could not fetch remote file "global/pg_control": ERROR:  permission denied for function pg_read_binary_file

Originally the server here at 172.17.0.2 was the primary and 172.17.1.2 was the standby replication server.  I have created the user 'rep' with full replication privilege as described on page:
https://www.postgresql.org/docs/16/app-pgrewind.html

CREATE EXTENSION repmgr;
GRANT pg_checkpoint TO rep;
GRANT pg_read_all_stats TO rep;
GRANT EXECUTE ON function pg_catalog.pg_ls_dir(text, boolean, boolean) TO rep;
GRANT EXECUTE ON function pg_catalog.pg_stat_file(text, boolean) TO rep;
GRANT EXECUTE ON function pg_catalog.pg_read_binary_file(text) TO rep;
GRANT EXECUTE ON function pg_catalog.pg_read_binary_file(text, bigint, bigint, boolean
And I have made it 'trust' among the intranet 172.17.0.0/16 in pg_hba.conf:

#host    all             all      127.0.0.1/32            ident

#host    replication     all       127.0.0.1/32            ident

host    all             rep             172.17.0.0/16           trust

host    all             postgres        172.17.0.0/16           trust


I have also made changes in postgresql.conf:

#wal_level = 'replica'

#full_page_writes = on

wal_log_hints = on

synchronous_standby_names = '*'


I used repmgr -h 172.17.0.2 -U rep -d repmgr standby clone to make the replica/standby on 172.17.1.2 and basically it called pg_basebackup to do the job. Checking the replication status from the old primary @172.17.0.2 with

SELECT * FROM pg_stat_replication; would return a table containing:
state=streaming, sync_state=async


After that, I shut down the postgresql server on the old primary. And ordered `pg_ctl  -w -D '/pgdata' promote` to turn it into the new primary.

After that is where the issue occured - the pg_rewind on the old primary won't function and threw out the error code.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Jet Zhang
Дата:
Сообщение: RE: Bug of psql meta-command \sf & \sv
Следующее
От: Patrick Frießnegg
Дата:
Сообщение: Re: PG_DUMPALL not executable within docker container