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 でデータベースのデフォルトの表領域を設定できます。