pg_ctl can't start db server
Hi,
We did the upgrade of PostgreSQL 10 to 12 on linux server. Everything was fine (can connect via pgAdmin, data is there...) except two tablespaces which are still in directory for PostgreSQL 10.
So we followed these steps to move tablespaces: https://www.enterprisedb.com/blog/moving-tablespaces-postgresql
The problem was at the end while executing:
$ pg_ctl start
This is the error trace:
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....postgres: could not access the server configuration file "/var/lib/postgresql/12/main/postgresql.conf": No such file or directory
stopped waiting
pg_ctl: could not start server
Examine the log output.
The configuration file path is /etc/postgresql/12/main/ postgresql.conf and it is configured in /var/lib/postgresql/12/main/postmaster.opts:
"/usr/lib/postgresql/12/bin/postgres "-D" "/var/lib/postgresql/12/main" "-c" "config_file=/etc/postgresql/12/main/postgresql.conf"
Why does pg_ctl complains about the postgresql.conf path?
Thank you,
Tanja
Tanja Savic <tanja.savic@crossmasters.com> writes:
The configuration file path is /etc/postgresql/12/main/ postgresql.conf and it is configured in /var/lib/postgresql/12/main/postmaster.opts:
"/usr/lib/postgresql/12/bin/postgres "-D" "/var/lib/postgresql/12/main" "-c" "config_file=/etc/postgresql/12/main/postgresql.conf"
Why does pg_ctl complains about the postgresql.conf path?
I don't remember the exact interaction between -D and an explicit
config_file setting, but evidently it's not working the way you wish.
See
https://www.postgresql.org/docs/current/runtime-config-file-locations.html
which suggests that you should use -D to point at the directory where
postgresql.conf is, and set the data directory with a parameter within
postgresql.conf.
(Note that pg_ctl probably only understands this way, even though
theoretically the postmaster can deal with other approaches to
setting up an external config file.)
regards, tom lane
On 5/29/20 8:19 AM, Tanja Savic wrote:
Hi,
We did the upgrade of PostgreSQL 10 to 12 on linux server. Everything
was fine (can connect via pgAdmin, data is there�) except two
tablespaces which are still in directory for PostgreSQL 10.So we followed these steps to move tablespaces:
https://www.enterprisedb.com/blog/moving-tablespaces-postgresqlThe problem was at the end while executing:
$ pg_ctl start
This is the error trace:
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....postgres: could not access the server
configuration file "/var/lib/postgresql/12/main/postgresql.conf": No
such file or directorystopped waiting
pg_ctl: could not start server
Examine the log output.
The configuration file path is /etc/postgresql/12/main/ postgresql.conf
and it is configured in /var/lib/postgresql/12/main/postmaster.opts:�/usr/lib/postgresql/12/bin/postgres "-D" "/var/lib/postgresql/12/main"
"-c" "config_file=/etc/postgresql/12/main/postgresql.conf"Why does pg_ctl complains about thepostgresql.conf path?
I'm guessing you are on Debian/Ubuntu?
If so what does the below show?:
pg_lsclusters
If it shows clusters then do:
sudo pg_ctlcluster 12 main start
If the above is not correct, then what user where you doing:
pg_ctl start
as?
Thank you,
Tanja
--
Adrian Klaver
adrian.klaver@aklaver.com
Hi,
@Tom Adding -D in command worked. I just used
pg_ctl start -D [data-directory ]
PGDATA was not set permanently although I tried to set it (with postgres user):
export PGDATA=" /var/lib/postgresql/12/main"
@Adrian It's Ubuntu and output of pg_lsclusters was this:
12 main 24538 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
Thank you for your replies.
BR,
Tanja
-----Original Message-----
From: Tom Lane <tgl@sss.pgh.pa.us>
Sent: Friday, May 29, 2020 5:32 PM
To: Tanja Savic <tanja.savic@crossmasters.com>
Cc: pgsql-general@lists.postgresql.org
Subject: Re: pg_ctl can't start db server
Tanja Savic <tanja.savic@crossmasters.com> writes:
The configuration file path is /etc/postgresql/12/main/ postgresql.conf and it is configured in /var/lib/postgresql/12/main/postmaster.opts:
"/usr/lib/postgresql/12/bin/postgres "-D" "/var/lib/postgresql/12/main" "-c" "config_file=/etc/postgresql/12/main/postgresql.conf"
Why does pg_ctl complains about the postgresql.conf path?
I don't remember the exact interaction between -D and an explicit config_file setting, but evidently it's not working the way you wish.
See
https://www.postgresql.org/docs/current/runtime-config-file-locations.html
which suggests that you should use -D to point at the directory where postgresql.conf is, and set the data directory with a parameter within postgresql.conf.
(Note that pg_ctl probably only understands this way, even though theoretically the postmaster can deal with other approaches to setting up an external config file.)
regards, tom lane
Hi Tanja,
On 01. Jun, 2020, at 09:04, Tanja Savic <tanja.savic@crossmasters.com> export PGDATA=" /var/lib/postgresql/12/main"
my wild guess is that the blank should not be there.
Cheers,
Paul
On 6/1/20 12:04 AM, Tanja Savic wrote:
Hi,
@Tom Adding -D in command worked. I just used
pg_ctl start -D [data-directory ]
You would be better off using the tools provided to manage clusters with
the Ubuntu/Debian packaging:
https://wiki.debian.org/PostgreSql
So as I mentioned previously:
sudo pg_ctlcluster 12 main stop
sudo pg_ctlcluster 12 main start
The wrapper script that drives the above takes care of the below.
PGDATA was not set permanently although I tried to set it (with postgres user):
export PGDATA=" /var/lib/postgresql/12/main"@Adrian It's Ubuntu and output of pg_lsclusters was this:
12 main 24538 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.logThank you for your replies.
BR,
Tanja-----Original Message-----
From: Tom Lane <tgl@sss.pgh.pa.us>
Sent: Friday, May 29, 2020 5:32 PM
To: Tanja Savic <tanja.savic@crossmasters.com>
Cc: pgsql-general@lists.postgresql.org
Subject: Re: pg_ctl can't start db serverTanja Savic <tanja.savic@crossmasters.com> writes:
The configuration file path is /etc/postgresql/12/main/ postgresql.conf and it is configured in /var/lib/postgresql/12/main/postmaster.opts:
"/usr/lib/postgresql/12/bin/postgres "-D" "/var/lib/postgresql/12/main" "-c" "config_file=/etc/postgresql/12/main/postgresql.conf"
Why does pg_ctl complains about the postgresql.conf path?
I don't remember the exact interaction between -D and an explicit config_file setting, but evidently it's not working the way you wish.
Seehttps://www.postgresql.org/docs/current/runtime-config-file-locations.html
which suggests that you should use -D to point at the directory where postgresql.conf is, and set the data directory with a parameter within postgresql.conf.
(Note that pg_ctl probably only understands this way, even though theoretically the postmaster can deal with other approaches to setting up an external config file.)
regards, tom lane
--
Adrian Klaver
adrian.klaver@aklaver.com