12.2. 备选数据库位置
可以在安装的默认位置之外的位置创建数据库。请记住,所有数据库访问实际上都是通过数据库后端进行的,因此所指定的任何位置都必须是后端可以访问的。
备选数据库位置由一个给出预期存储位置绝对路径的环境变量创建和引用。这个环境变量必须在后端启动之前已经定义,而且它指向的位置必须可被 postgres 管理员账号写入。关于预先配置的备选数据库位置,请咨询站点管理员。任何有效的环境变量名都可以用来引用一个备选位置,不过建议使用带 “PGDATA” 前缀的变量名,以避免混淆以及与其他变量的冲突。
注意
在以前的 Postgres 版本中,也允许使用绝对路径名来指定备选存储位置。虽然环境变量风格的指定方式更可取,因为它让站点管理员在管理磁盘存储时有更大的灵活性,但也可以使用绝对路径来指定一个备选位置。管理员指南讨论了如何启用这一特性。
出于安全和完整性原因,所指定的任何路径或环境变量都会被追加一些额外的路径字段。备选数据库位置必须通过运行 initlocation 来准备。
要使用环境变量
PGDATA2(本例中设为 /alt/postgres)创建一个数据存储区,请确保 /alt/postgres 已经存在并且可被
Postgres 管理员账号写入。然后,在命令行输入
% initlocation $PGDATA2
Creating Postgres database system directory /alt/postgres/data
Creating Postgres database system directory /alt/postgres/data/base
要从命令行在备选存储区 PGDATA2 中创建数据库,使用下面的命令:
% createdb -D PGDATA2 mydb
要在 psql 内做同样的事,输入
* CREATE DATABASE mydb WITH LOCATION = 'PGDATA2';
如果你没有创建数据库所需的权限,你会看到下列消息:
% createdb mydb
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mydb.
如果指定的位置不存在,或者数据库后端没有权限访问它或写入其下的目录,你会看到下列消息:
% createdb -D /alt/postgres/data mydb
ERROR: Unable to create database directory /alt/postgres/data/base/mydb
createdb: database creation failed on mydb.