10.2. データベースの代替領域

インストールの際のデフォルトの領域以外にデータベースを作成する ことが可能です。しかし、全てのデータベースアクセスはデータベース バックエンドを通じて発生するため、指定されたいかなる領域も バックエンドからアクセス出来る必要があります。

作成された代替のデータベース領域へは、意図された記憶領域への絶対パスを 指定する環境変数を使って参照されます。環境変数はpostmasterが 起動する前に設定され、postgres の管理者アカウントで書き込めなければなりません。 既に設定済みの代替のデータベース領域に関しては、サイト管理者に相談して下さい。 代替領域を参照するためには、いかなる環境変数名も使用できますが 混乱と他の変数との抵触を避けるため、PGDATA と先頭に付けた変数名を 使うことを推奨します。

Note: 前のバージョンの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';
のように入力します。

データベースを作成する権限がなかった場合は以下のメッセージが出ます。

ERROR:  CREATE DATABASE: permission denied

指定した場所が存在しない、あるいはデータベースバックエンドがそこへ アクセスする権限がない、あるいはそのディレクトリ下に書き込む権限がない場合には 下記のようなメッセージがでます。

ERROR:  The database path '/no/where' is invalid. This may be due to a character that is not allowed or because the chosen path isn't permitted for databases.