Thread: pg_ctl can't start db server

pg_ctl can't start db server

From
Tanja Savic
Date:

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  

 

Re: pg_ctl can't start db server

From
Tom Lane
Date:
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



Re: pg_ctl can't start db server

From
Adrian Klaver
Date:
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



RE: pg_ctl can't start db server

From
Tanja Savic
Date:
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
theway 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
witha parameter within postgresql.conf. 

(Note that pg_ctl probably only understands this way, even though theoretically the postmaster can deal with other
approachesto setting up an external config file.) 

            regards, tom lane



Re: pg_ctl can't start db server

From
Paul Förster
Date:
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


Re: pg_ctl can't start db server

From
Adrian Klaver
Date:
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
theway 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
witha parameter within postgresql.conf.
 
> 
> (Note that pg_ctl probably only understands this way, even though theoretically the postmaster can deal with other
approachesto setting up an external config file.)
 
> 
>             regards, tom lane
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com