3

I use postgresql 9.1, on ubuntu 12.04. I had installed the depot package.

I have added a new partition to my system, and I would like to create a postgresql database on this partition ( which will be entirely dedicated to this database).

My pgdata is located in var/lib/postgresql/9.1/main. I plan to stop the postgresql service, copy the pgdata content to the new partition, then make a symbolic link to the new partition, chown the new directory to postgres user, restart postgresql... but I'm afraid this all looks more like a hack.

Is there a way to create a database specifically on a specified partition ? Something more "canonical" (not a play of word with ubuntu)

Stephane Rolland
  • 8,641
  • 10
  • 32
  • 40

1 Answers1

8

CREATE TABLESPACE could be used.

create tablespace dedicated_datastore owner postgres location '/my/mount/point/'

and now the tablespace can be used as parameter when creating a database, (or a table, or an index)

create database my_database tablespace dedicated_datastore
Stephane Rolland
  • 8,641
  • 10
  • 32
  • 40
  • 2
    I'm not sure about using the phrase should be used!! If you only have one database (and/or cluster) then it might be better to use either mount points, symlinks, or change the PGDATA location (in order of preference from various guides). Tablespaces have lots of caveats when it comes to backing up where as having the whole data directory mapped does not. – Adam Gent Nov 30 '16 at 15:37
  • @AdamGent noticed your comment only today. I changed it to "could"/ – Stephane Rolland Jul 10 '20 at 12:16