可替换的数据库位置是通过环境变量创建和引用的,该变量给出准备使用的存储位置的绝对路径。此环境变量必须在后端启动之前定义而且该路径必须为 postgres 管理员帐户可写。尽管我们建议使用前缀是 PGDATA 的变量名以避免与其他变量冲突,但实际上任何有效的环境变量名称都可以用于引用一个可替换的位置。
注意:以前版本的 Postgres 还允许使用一个绝对路径名来声明一个可替换的存储位置。更好的办法是采用环境变量风格的声明方式,因为这样就允许节点管理员在管理磁盘存储时更灵活。如果你喜欢用绝对路径,你可以通过定义 "ALLOW_ABSOLUTE_DBPATHS" 然后重新编译 Postgres 来实现这个目的。要定义该宏,你可以把下面这行#define ALLOW_ABSOLUTE_DBPATHS 1加到文件 src/include/config.h,或者在你的 Makefile.custom 里声明CFLAGS+= -DALLOW_ABSOLUTE_DBPATHS
% setenv PGDATA2 /home/postgres/data定义用于后继命令的环境变量。通常,你将希望把环境变量定义在 Postgres 超级用户的 .profile 或 .cshrc 初始化文件里,以确保在系统起来以后它就已经定义了.任何有效的环境变量名称都可以用于引用一个可替换的位置,尽管我们建议使用前缀是 "PGDATA" 的变量名以避免混淆和与其他变量冲突或覆盖其他变量。
要在 PGDATA2 里创建一个数据存储区,确保 /home/postgres 已经存在而且可被 postgres 管理员写.然后在命令行上键入
% setenv PGDATA2 /home/postgres/data % initlocation $PGDATA2 Creating Postgres database system directory /home/postgres/data Creating Postgres database system directory /home/postgres/data/base要测试新的位置,键入下面命令创建数据库 test
% createdb -D PGDATA2 test % dropdb test