pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: edwin.polkerman@splendiddata.com
Subject: BUG #16982: pg_rewind cannot deal with configuration files (postgresql.conf) located outside data directory
Date: Fri, 23 Apr 2021 13:36:31 +0000
Message-ID: <16982-f12294cccd221480@postgresql.org> (raw)

The following bug has been logged on the website:

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

In the used PostgreSQL setup the configuration files (postgresql.conf,
pg_hha.conf and pg_ident.conf) are located in another location than the data
directory: /etc/database/postgres/13/data

In postgresql.conf following locations are updated:
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------

# The default values of these variables are driven from the -D
command-line
# option or PGDATA environment variable, represented here as ConfigDir.
data_directory = '/var/database/postgres/13/data'             
hba_file = '/etc/database/postgres/13/data/pg_hba.conf'                     
                                                                            
  
ident_file = '/etc/database/postgres/13/data/pg_ident.conf'       

The cluster can be started with pg_ctl and use the path to postgresql.conf
in -D:
> pg_ctl -D /etc/database/postgres/13/data start                            
          

Trying to use pg_rewind to synchronize a PostgreSQL data directory (e.g.
bringing back failed master)
> pg_rewind --target-pgdata=/etc/database/postgres/13/data -P -R -c
--source-server='host=<ip-address source> port=5432 user=rewind_user
password=rewind_user dbname=postgres' 

Observed result:
==========
pg_rewind: connected to server
pg_rewind: fatal: could not open file
"/etc/database/postgres/13/data/global/pg_control" for reading: No such file
or directory

Change --target-pgdata to point to data directory:
> pg_rewind --target-pgdata=/var/database/postgres/13/data -P -R -c
--source-server='host=<ip-address source> port=5432 user=rewind_user
password=rewind_user dbname=postgres' 

Now the result is:
pg_rewind: fatal: restore_command is not set in the target cluster

Which is another proof that pg_rewind does not look at
/etc/database/postgres/13/data/postgresql.conf (in which restore_command was
set) but to the one located in the data directory.

Improvement:
It would be nice to have pg_rewind support postgresql.conf being located
somewhere else than in the data directory, just like pg_ctl does. 

Of course it is possible to workaround the issue but it takes more steps
than would be necessary (with increased error risk of copying and moving
configuration files around).

Not only applicable for PostgreSQL 13, but also for the other versions as
well



view thread (2+ messages)  latest in thread

Message-ID: <16982-f12294cccd221480@postgresql.org>
Permalink:  ../16982-f12294cccd221480@postgresql.org/
Also on:    postgresql.org/message-id/16982-f12294cccd221480@postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, edwin.polkerman@splendiddata.com
  Subject: Re: BUG #16982: pg_rewind cannot deal with configuration files (postgresql.conf) located outside data directory
  In-Reply-To: <16982-f12294cccd221480@postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox