4

I would like to point the PostgreSQL server to a particular non-default data directory upon startup. Right now, I have to (either manually or in a script) use pg_ctl to stop and restart the database with my /new/path/to/data.

OS is Ubuntu where the default data directory is /var/lib/postgresql/8.4/main

1 Answer 1

6

Open /etc/postgresql/8.4/main/postgresql.confand adjust data_directory property to your new data path and restart the server using (preffered) pg_ctlcluster 8.4 main stop/start or pg_ctl if you want in that way.

Make sure that /new/path/to/data is accessible only for postgres user:

chown postgres.postgres /new/path/to/data
chmod 700 /new/path/to/data
11
  • 1
    Note that you must move the data directory (or do a new initdb to create a new cluster) or Postgres will throw a fit...
    – voretaq7
    May 25, 2011 at 16:06
  • 1
    Yap, must move or copy data from previous directory to that new before server start (don't try to move or copy data if postmaster is still running using previous dir). May 25, 2011 at 16:13
  • 2
    yes - stop, move, then restart. Otherwise the universe will end (Or your database will be corrupted beyond the point of repair. Not a good thing either way)
    – voretaq7
    May 25, 2011 at 16:15
  • 1
    What is your output from pg_lsclusters command ? May 26, 2011 at 4:28
  • 1
    If you don't use SSL connections, then simply turn off ssl property in postgresql.conf. If you need SSL, then make symbolic link server.crt in data directory as server.crt -> /etc/ssl/certs/ssl-cert-snakeoil.pem. Also you need root.crt -> /etc/postgresql-common/root.crt and server.key -> /etc/ssl/private/ssl-cert-snakeoil.key as well there. May 26, 2011 at 5:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .