EDB Postgres Distributed configuration#
TPAは、 EDB Postgres DistributedPGD、旧名BDR双方向レプリケーションバージョン3.7、4.x、および5.xをインストールおよび構成できます。
PGDパッケージへのアクセスは、EDBのパッケージリポジトリを介してのみです。パッケージをダウンロードするには、有効なEDBサブスクリプショントークンが必要です。
このドキュメントでは、 PGD構成のいくつかの側面について触れていますが、詳細の信頼できる説明については PGDdocumentation を参照してください。
はじめに#
TPAは、 Postgres自分自身とともにPGDと依存関係をすべてのPGDインスタンスにインストールします。
基本的なPostgresのセットアップを完了し、Postgresを起動した後、TPAはbdr_database
を作成し、以下で説明するさまざまな手順を介してPGDクラスターのセットアップを続行します。
インストール#
TPAは、使用中のPostgresのバージョンとフレーバーPostgres、Postgres Extended、またはEPASなどに応じて、正しいPGDパッケージをインストールします。
bdr_version
を設定して、PGDのどのメジャーバージョン3、4、5をインストールするかを決定します。
bdr_package_version
を設定して、インストールする正確なパッケージを決定しますたとえば、最新の5.0.xをインストールする場合は
‘5.0*’ 。
クラスターセットアップの概要#
必要なパッケージをインストールし、PGDをロードするようにPostgresを構成し、サーバーを起動した後、TPAはPGDノード、グループ、レプリケーションセット、およびその他のリソースのセットアップを続行します。
次に、TPAが実行する手順の概要を示します。
参加するインスタンスごとにPGDノードを作成します bdr.create_node()
bdr_node_groupsに応じて、1つ以上のPGDノードグループを作成しますbdr.create_node_group()を使用必要に応じて、レプリケーションセットを作成して、どの変更をレプリケートするかを正確に制御しますノードグループタイプとメンバーシップによって異なります。たとえば、サブスクライバ専用ノードと監視ノードは特別な処理が必要な場合があります。
個々のインスタンスで関連するノードグループに参加する
サブグループRAFTまたはプロキシルーティングを有効にするなど、追加構成を実行します。
このプロセスには、クエリの複雑なシーケンスの実行が含まれます。一部は各インスタンスで順番に、他はパラレルで。手順を簡単に行うために、TPAは任意のPGDプライマリインスタンスをクラスターの「first_bdr_primary」として指定し、これを使用しますインスタンスを使用して、これらのクエリのほとんどを実行します。インスタンスはそれ以外の点では特別ではなく、そのIDはPGD構成自分自身にとって重要ではありません。
インスタンスロール#
role にbdr
を含むすべてのインスタンスはPGDインスタンスであり、暗黙的にpostgres
サーバーインスタンスでもあります。
ロールにreadonly
が含まれるPGDインスタンスは、ロジカルスタンバイノード
pause_in_standby
設定でPGDノードグループに参加します。昇格の対象です。
ロールにsubscriber-only
を持つPGDインスタンスはサブスクライバー専用ノードであり、レプリケートされた変更を受信しますが、公開しません。
ロールにwitness が含まれるPGDインスタンスは、監視ノードです。
上記のすべてのPGDインスタンスは、暗黙的にprimary
インスタンスでもあります。例外は、ロールにreplica
を持つインスタンスです。これは、上流のPGDインスタンスの物理的ストリーミングレプリカを示します。このようなインスタンスは、推奨されるPGDアーキテクチャには含まれておらず、現在TPAではサポートされていません。
構成設定#
以下で説明する設定は、クラスター内のすべてのPGDインスタンスに均一に設定されるように、通常はcluster_vars
で設定する必要があります。一部の場合bdr_database
など、さまざまなインスタンスに異なる値を設定できますが、他の場合、結果は未定義ですたとえば、すべてのインスタンスが完全に同じ値のbdr_node_groups
を持つ必要があります。
cluster_vars
の下でクラスター全体の均一な値を設定することにより、PGD構成を定義することを強くお勧めします。
bdr_database#
bdr_database デフォルトbdrdbはPGDで初期化されます。
bdr_client_dsn_attributes#
bdr_client_dsn_attributes には、 追加
の parameter keywords supported by libpq を含めることができます。
host 、port 、dbname 、およびuser
は含めないでください。これらは既に接続文字列に含まれています。
注釈
pgd-proxyおよびpgd-cliがインストールされている場合 pgd-proxyおよびpgd-cliはGoで書かれているため、Postgresへの接続にGoドライバーを使用します。 これらのドライバーは、libpqCライブラリが提供するDSN属性の完全なセットをサポートしていません。
pgd-proxyおよび/またはpgd-cliがインストールされ、 bdr_client_dsn_attributes にGoドライバーで サポートされていない パラメータータイムアウトなどが含まれている場合、2つの新しい変数をクラスター構成に含める必要があります。
pgd_proxy_dsn_attributespgd-proxy-confで接続文字列を作成するために使用されますpgd_cli_dsn_attributespgd-cli-confで接続文字列を作成するために使用されます
これらの2つの文字列には、Goドライバーと互換性のあるパラメーターキーワードのみが含まれている必要があります。
bdr_client_dsn_attributes
がサポートされていないパラメーターを含まない場合、これは無視でき、
bdr_client_dsn_attributes はpgd-proxy-conf
およびpgd-cli-conf の接続文字列に含まれます。
bdr_node_group
の設定デフォルトクラスター名に基づいて、インスタンスがどのPGDクラスターに参加するかを指定します。外部コンポーネントたとえば、pgd-proxyまたはharp-proxyなどの特定のクラスターを識別するためにも使用されます。
bdr_node_groups#
これは、グループ参加ステージ前に作成する必要があるPGDノードグループのリストですクラスターに追加のサブグループが必要な場合。
通常、tpaexec configure
は、選択したアーキテクチャに基づいて適切な値を生成します。
cluster_vars:
bdr_node_groups:
- name: topgroup
- name: abc_subgroup
node_group_type: data
parent_group_name: topgroup
options:
location: abc
…
最初のエントリーは、クラスターのbdr_node_group
用である必要があります。
リストの後続の各エントリはparent_group_name を指定する必要があり、
node_group_type オプショナルを指定する場合があります。
各エントリは、グループオプションのオプションのキー/値のマッピングを持つ場合があります。使用可能なオプションはPGDバージョンによって異なります。
bdr_child_group#
インスタンスにbdr_node_groups
で記載されているグループの名前にbdr_child_group
が設定されている場合、bdr_node_group
の代わりにそのグループに参加します。
bdr_commit_scopes#
これは commit scopes のオプショナルリストです
PGDデータベースPGD 4.1以降で利用可能に存在する必要があります。
cluster_vars:
bdr_commit_scopes:
- name: somescope
origin: somegroup
rule: ALL (somegroup) ON received …`
- name: otherscope
origin: othergroup
rule: …
…
各エントリは、コミットスコープのname 、origin
グループの名前、およびコミットスコープrule
を指定する必要があります。グループはbdr_node_groups
のエントリに対応する必要があります。
bdr_commit_scopes
を明示的に設定すると、TPAは必要に応じてコミットスコープを作成、変更、またはドロップして、データベースが構成と一致することを確認します。設定しない場合、既存のコミットスコープはそのままになります。
その他のノート#
フック#
TPAは、 PGDクラスターセットアッププロセス中にbdr-node-pre-creation、bdr-post-group-creation、およびbdr-pre-group-join TPA hooks を呼び出します。
データベースの照合順序#
TPAは、クラスター内のすべてのインスタンスのPGDデータベースが同じ照合順序LC_COLLATE設定があることを確認します。同じPGDクラスター内のデータベースに異なる照合順序があると、データ損失のリスクが発生します。
PGDの古いバージョン#
TPAは、 BDR v1 Postgres 9.4のパッチ適用バージョンを使用、v2 Postgres 9.6、またはv3.7より前のPGDバージョンの展開を積極的にサポートまたはテストしなくなりました。