Creating Postgres tablespaces¶
デプロイメント中にPostgresテーブルスペースを作成するには、それらの名前と場所をcluster_vars
の下のpostgres_tablespaces
、またはconfig.ymlの特定のインスタンスのvars 定義します。
volume_for: postgres_tablespace を設定し、 tablespace_name
を定義して define volumes を実行すると、それらはデフォルトのエントリとしてpostgres_tablespaces
に追加されます。
cluster_vars:
postgres_tablespaces:
explicit:
location: /some/path
instances:
- Name: example
…
volumes:
- device_name: /dev/xvdh
…
vars:
volume_for: postgres_tablespace
tablespace_name: implicit
上記の例では、2つのテーブルスペースが作成されます:明示的(/some/path)および暗黙的(ボリュームに別のマウントポイントを指定しない限り、デフォルトで/opt/postgres/tablespaces/implicit/tablespace_data)。
すべてのpostgres_tablespace ボリュームにはtablespace_name
が定義されている必要があります。表領域の場所は、ボリュームのマウントポイントから導出されます。
postgres_tablespaces
のすべてのエントリは、テーブルスペース名(キーとして)とそのlocation
を指定する必要があります。テーブルスペースの場所を明示的に指定する場合は、テーブルスペースをPGDATA内に置かないでください。また、ボリュームマウントポイントをテーブルスペースの場所として直接使用しないでください(lost+found
は、一部のツールを混乱させて、ディレクトリが空でないと判断します)。
デフォルトでは、表領域owner はpostgres
ですが、任意の有効なユーザー名( postgres_users のユーザー
この時点で作成されます)。
ストリーミングレプリカには、上流のインスタンスと同じpostgres_tablespace
ボリュームとpostgres_tablespaces 設定が必要です
postgres_databases でデータベースのデフォルトの表領域を設定できます。