pg_ctl can't start db server

Started by Tanja Savicalmost 6 years ago6 messagesgeneral
Jump to latest
#1Tanja Savic
tanja.savic@crossmasters.com

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tanja Savic (#1)
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

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Tanja Savic (#1)
Re: pg_ctl can't start db server

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-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 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

#4Tanja Savic
tanja.savic@crossmasters.com
In reply to: Tom Lane (#2)
RE: pg_ctl can't start db server

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

#5Paul Förster
paul.foerster@gmail.com
In reply to: Tanja Savic (#4)
Re: pg_ctl can't start db server

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

#6Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Tanja Savic (#4)
Re: pg_ctl can't start db server

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.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

--
Adrian Klaver
adrian.klaver@aklaver.com