Thread: BUG #16783: pg_rewind: option -c does not work when configuration files are outside data directory

The following bug has been logged on the website:

Bug reference:      16783
Logged by:          Edwin Polkerman
Email address:      edwin.polkerman@splendiddata.com
PostgreSQL version: 13.1
Operating system:   Centos7/8, RHEL7/8, SUSE12/15
Description:

To my opinion this report is more an improvement then a real bug.

We use PostgreSQL in such way that the configuration files are outside the
data directory. So for target location following applies:
 - data location          : /var/postgres/13/data
 - config files location: /etc/postgres/13/data

On the target location 'restore_command' is filled in postgresql.conf.
Trying pg_rewind with following command:
pg_rewind --target-pgdata=/var/postgres/13/data -P -R -c
--source-server='host=<ip-address> port=5432 user=<user> password=<passwd>
dbname=postgres'

Following Fatal message is shown:
pg_rewind: fatal: restore_command is not set in the target cluster

pg_rewind looks at the postgresql.conf in /var/postgres/13/data in stead of
the location where the configuration files reside (/etc/postgres/13/data).
It would be nice to add an option to tell pg_rewind that configuration files
are on a different location.


On Mon, Dec 21, 2020 at 03:14:14PM +0000, PG Bug reporting form wrote:
> Following Fatal message is shown:
> pg_rewind: fatal: restore_command is not set in the target cluster
>
> pg_rewind looks at the postgresql.conf in /var/postgres/13/data in stead of
> the location where the configuration files reside (/etc/postgres/13/data).
> It would be nice to add an option to tell pg_rewind that configuration files
> are on a different location.

pg_rewind uses the command "postgres -C restore_command -D
DATA_FOLDER" to grab the configuration in this case (see
getRestoreCommand() in pg_rewind.c), but here you have a service
startup configuration where the logic makes use of -c
config_file=/etc/postgres/13/data/postgresql.conf, right?  Indeed, we
would need an extra option to be able to support this case and pass
down the configuration file path down to the postgres command used in
pg_rewind.  We could name this option for example --target-conf, that
can only be used when --restore-target-wal is specified.  Would you
like to write a patch?
--
Michael

Attachment