データベースの代替領域

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

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

Note: 前バージョンの Postgres では代替記憶領域 を指定する絶対パス名も同様許されていました。 サイト管理者がより柔軟にディスク管理を行えることから、環境変数 での設定が好まれるとはいっても、代替領域の指定に絶対パスを使う ことが出来ます。 管理者ガイドにはこの機能を使う方法についての記載があります。

セキュリティと完全性の理由から、指定されたパスや環境変数には 付加的なパスフィールドが加えられます。 代替のデータベース領域は initlocation を走らせることで準備されなければなりません。

(この例のように /alt/postgres に)データ記憶領域 を環境変数 PGDATA2 をつかって作成するには、 /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.