Node management interfaces#
SQLインターフェイスを使用して、ノードを動的に追加および削除できます。
bdr.alter_node_group_config#
この機能は、既存のPGDグループの構成パラメーターを変更します。 NULL値を持つオプションすべてのデフォルトは変更されません。
警告
このファンクションは、PGD4および3.7との互換性のためのみに存在します。代わりに bdr.alter_node_group_option を使用してください。
概要#
bdr.alter_node_group_config(node_group_name text,
insert_to_update boolean DEFAULT NULL,
update_to_insert boolean DEFAULT NULL,
ignore_redundant_updates boolean DEFAULT NULL,
check_full_tuple boolean DEFAULT NULL,
apply_delay interval DEFAULT NULL,
check_constraints boolean DEFAULT NULL,
num_writers int DEFAULT NULL,
enable_wal_decoder boolean DEFAULT NULL,
streaming_mode text DEFAULT NULL,
default_commit_scope text DEFAULT NULL)
パラメーター#
node_group_name—既存のPGDグループの名前。ローカルノードはグループの一部である必要があります。insert_to_update—下位互換性のために予約されています。update_to_insert—下位互換性のために予約されています。このオプションは非推奨であり、PGDの将来のバージョンでは無効になるか削除される予定です。代わりにbdr.alter_node_set_conflict_resolverを使用してください。ignore_redundant_updates—下位互換性のために予約されています。check_full_tuple—下位互換性のために予約されています。apply_delay—下位互換性のために予約されています。check_constraints—適用プロセスがレプリケートデータを書き込むときに制約をチェックするかどうか。num_writers—このノードグループをバッキングするサブスクリプションの並列ライターの数。 -1は、デフォルトGUCbdr.writers_per_subscriptionで指定されたとおりに使用されることを意味します。有効な値は-1または正の整数です。enable_wal_decoder—デコードワーカープロセスを有効/無効にします。streaming_modeが既に有効になっている場合、デコードワーカープロセスを有効にすることはできません。streaming_mode—大規模なトランザクションのストリーミングを有効/無効にします。offに設定すると、ストリーミングが無効になります。他の値に設定されている場合、大規模なトランザクションは進行中にデコードされ、変更がダウンストリームに送信されます。値がfileに設定されている場合、ストリーミングトランザクションの着信変更はファイルに保存され、上流でトランザクションがコミットされた後にのみ適用されます。値がwriterに設定されている場合、着信変更はライターのいずれか利用可能な場合に直接送信されます。並列適用が無効になっている場合、またはストリーミングトランザクションを処理できるライタがない場合、変更はファイルに書き込まれ、トランザクションがコミットされた後に適用されます。値がautoに設定されている場合、 PGDは、トランザクションプロパティと使用可能なリソースに応じて、fileとwriterの間でインテリジェントに選択しようとします。 WALデコーダーが既に有効になっている場合、streaming_modeを有効にすることはできません。
詳細については、 トランザクションストリーミング を参照してください。
default_commit_scope—デフォルトで使用するコミットスコープ、最初はlocalコミットスコープです。これは、トップレベルのノードグループにのみ適用されます。同じコミットスコープの異なるオリジングループに個々のルールを使用できます。詳細は、 オリジングループ を参照してください。
注#
このファンクションは、デフォルトを変更するように要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムを使用してグローバルに複製されます。
ファンクションはトランザクションではありません。要求はバックグラウンドで処理されるため、ファンクション呼び出しをロールバックすることはできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。
このファンクションはロックを保持しません。
警告
このファンクションを使用して`apply_delay` 値を変更する場合、変更は既にグループのメンバーであるノードに適用されません。
bdr.alter_node_group_option#
PGDノードグループのルーティング構成を変更します。
概要#
bdr.alter_node_group_option(node_group_name text,
config_key text,
config_value text)
パラメーター#
node_group_name—変更するグループの名前。config_key—変更するノードグループのオプションのキー。config_value—指定されたキーに設定される新しい値。
config_value
は、オプションに適切なデータ型に解析されます。一部のパラメーターは、トップレベルのノードグループにのみ適用できることに注意してください。
この機能を使用して変更できるグループオプションは次のとおりです。
apply_delay(interval) —着信変更を適用するまでノードが待機する時間。これは、主に遅延加入者専用ノードを使用して特別なサブグループをセットアップする場合に役立ちます。データノードを含むグループまたはトップレベルのグループでは、これを設定しないでください。デフォルトは0sです。check_constraints(boolean) —適用プロセスがレプリケートデータを書き込むときに制約をチェックするかどうか。これをデフォルト値のままにすることをお勧めします。そうしないと、データが失われる危険があります。有効な値はonまたはoffです。デフォルトはonです。このオプションは、トップレベルのノードグループでのみ変更できます。default_commit_scope(text) —デフォルトで使用するコミットスコープ、最初はlocalコミットスコープです。これは、トップレベルのノードグループにのみ適用されます。同じコミットスコープの異なるオリジングループに個々のルールを使用できます。詳細については、 オリジングループ を参照してください。enable_proxy_routing(boolean) — pgd-proxy
グループリーダーを介した機能は、特定のグループで有効になっています。有効な値はon
またはoff です。デフォルトはoff です。
enable_raft(boolean) —グループが独自のRaftコンセンサスを持つかどうか。これは、enable_proxy_routingをonに設定するために必要です。トップレベルグループの場合、これは常にonです。有効な値はonまたはoffです。サブグループのデフォルトはoffです。enable_wal_decoder(boolean) —デコードワーカープロセスを有効/無効にします。streaming_modeが既に有効になっている場合、デコードワーカープロセスを有効にすることはできません。有効な値はonまたはoffです。デフォルトはoffです。location(text) —ノードの場所に関する情報。これは純粋に監視のためのメタデータです。デフォルトは''空の文字列です。num_writers(integer) —このノードグループをバッキングするサブスクリプションの並列ライターの数。有効な値は-1または正の整数です。-1は、 GUCで指定された値を意味します bdr.writers_per_subscription
が使用されます。 -1
はデフォルトです。このオプションは、トップレベルのノードグループでのみ変更できます。
route_reader_max_lag(integer) —ノードが実行可能な読み取り専用ノードと考えられるバイト単位の最大遅延。将来の使用のために現在予約されています。route_writer_max_lag(integer) —書き込みリーダーとして選択される新しい書き込み候補のバイト単位の最大遅延。これを通過した候補者がない場合、ライタは自動的に選択されません。デフォルトは-1です。route_writer_wait_flush(boolean) —フラッシュを待機する必要がある場合にスイッチするかどうか。将来の使用のために現在予約されています。streaming_mode(text) —大規模なトランザクションのストリーミングを有効/無効にします。offに設定すると、ストリーミングが無効になります。他の値に設定されている場合、大規模なトランザクションは進行中にデコードされ、変更がダウンストリームに送信されます。値がfileに設定されている場合、ストリーミングトランザクションの着信変更はファイルに保存され、上流でトランザクションがコミットされた後にのみ適用されます。値がwriterに設定されている場合、着信変更はライターのいずれか利用可能な場合に直接送信されます。 Parallel Apply の場合
が無効になっているか、ストリーミングトランザクションを自由に処理できるライタがない場合、変更はファイルに書き込まれ、トランザクションがコミットされた後に適用されます。値がauto
に設定されている場合、
PGDは、トランザクションプロパティと使用可能なリソースに応じて、file
とwriter の間でインテリジェントに選択しようとします。
WALデコーダーが既に有効になっている場合、streaming_mode
を有効にすることはできません。デフォルトはauto です
詳細については、 トランザクションストリーミング を参照してください。
戻り値#
bdr.alter_node_group_option() は、成功するとVOID を返します。
提供されたパラメーターのいずれかが無効な場合、 ERROR が発生します。
注#
ノードグループオプションの現在の状態は、ビュー bdr.node_group_summary を介して確認できます。
このファンクションは、デフォルトを変更するように要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムを使用してグローバルに複製されます。
ファンクションはトランザクションではありません。要求はバックグラウンドで処理されるため、ファンクション呼び出しをロールバックすることはできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。
このファンクションはロックを保持しません。
bdr.alter_node_interface#
このファンクションは、指定されたノードの接続文字列DSN
を変更します。
概要#
bdr.alter_node_interface(node_name text, interface_dsn text)
パラメーター#
node_name—変更する既存のノードの名前。interface_dsn—ノードの新しい接続文字列。
注#
このファンクションを実行し、ローカルノードでのみ変更を加えます。これは、通常、変更されるノードを含む、PGDグループ内のすべてのノードで実行することを意味します。
このファンクションはトランザクションです。ロールバックできます。変更は現在のトランザクションに表示されます。
ファンクションはローカルノードでロックを保持します。
bdr.alter_node_option#
PGDノードのルーティング構成を変更する
概要#
bdr.alter_node_option(node_name text,
config_key text,
config_value text);
パラメーター#
node_name—変更するノードの名前。config_key—変更するノードのオプションのキー。config_value—指定されたキーに設定される新しい値。
この機能を使用して変更できるノードオプションは次のとおりです。
route_priority—同じノードグループ内の他のノードに対するノードの相対ルーティング優先度。デフォルトは’-1’です。route_fence—ノードがルーティングからフェンスされているかどうか。 trueの場合、ノードはPGDプロキシから接続を受信できません。デフォルトは’f’falseです。route_writes—書き込みをこのノードにルーティングできるかどうか、つまりノードが書き込みリーダーになることができるかどうか。デフォルトは、データノードの場合は’t’true、他のノードタイプの場合は’f’falseです。route_reads—読み取り専用接続をこのノードにルーティングできるかどうか。将来の使用のために現在予約されています。デフォルトは、データおよびサブスクライバ専用ノードの場合は’t’true、監視ノードおよびスタンバイノードの場合は’f’falseです。route_dsn—プロキシがこのノードに接続するために使用するdsn。これはオプショナル。設定されていない場合、デフォルトでノードのnode_dsn値が使用されます。
bdr.alter_subscription_enable#
この機能は、指定されたサブスクリプションまたはローカルPGDノードのすべてのサブスクリプションを有効にします。これは、再開サブスクリプションとも呼ばれます。サブスクリプションが既に有効になっている場合、エラーはスローされません。このオペレーションの影響を受けるサブスクリプションの数を返します。
概要#
bdr.alter_subscription_enable(
subscription_name name DEFAULT NULL,
immediate boolean DEFAULT false
)
パラメーター#
subscription_name—有効にするサブスクリプションの名前。 NULLの場合デフォルト、ローカルノードのすべてのサブスクリプションが有効になります。immediate—これは現在効果がありません。
注#
この機能はレプリケートされず、ローカルノードサブスクリプション特定のノードまたはすべてのノードにのみ影響します。
このファンクションはトランザクションです。ロールバックできます。現在のトランザクションは、カタログの変更を確認できます。サブスクリプションワーカーは、トランザクションがコミットされた後、バックグラウンドプロセスによって起動されます。
bdr.alter_subscription_disable#
このファンクションは、指定されたサブスクリプションまたはローカルPGDノードのすべてのサブスクリプションを無効にします。オプションで、無効なサブスクリプションに関連付けられているすべてのワーカーをすぐに停止することもできます。これは、サブスクリプションの一時停止とも呼ばれます。サブスクリプションが既に無効になっている場合、エラーはスローされません。このオペレーションの影響を受けるサブスクリプションの数を返します。
概要#
bdr.alter_subscription_disable(
subscription_name name DEFAULT NULL,
immediate boolean DEFAULT false,
fast boolean DEFAULT true
)
パラメーター#
subscription_name—無効にするサブスクリプションの名前。 NULLの場合デフォルト、ローカルノードのすべてのサブスクリプションが無効になります。immediate—アクションをすぐに強制し、無効になったサブスクリプションに関連付けられているすべてのワーカーを停止するために使用されます。このオプションがtrueの場合、トランザクションブロック内でこのファンクションを実行できません。fast—この引数は、immediateの動作に影響を与えます。trueデフォルトに設定されている場合、現在の作業が完了するのを待たずに、無効なサブスクリプションに関連付けられているすべてのワーカーを停止します。
注#
このファンクションはレプリケートされず、ローカルノードサブスクリプション特定のサブスクリプションまたはすべてのサブスクリプションにのみ影響します。
このファンクションはトランザクションです。ロールバックできます。現在のトランザクションは、カタログの変更を確認できます。ただし、サブスクリプションワーカーが停止するタイミングは、
immediate の値に依存します。 true
に設定されている場合、ワーカーはCOMMIT
を待たずにstopを受け取ります。 fast 引数がtrue
に設定されている場合、ワーカーの中断は、現在の作業が完了するまで待機しません。
bdr.create_node#
このファンクションはノードを作成します。
概要#
bdr.create_node(node_name text,
local_dsn text,
node_kind DEFAULT NULL)
パラメーター#
node_name—新しいノードの名前。データベースごとに1つのノードのみが許可されます。有効なノード名は、小文字、数字、ハイフン、アンダースコアで構成されます。local_dsn—ノードへの接続文字列。node_kind—dataデフォルト、standby、subscriber-only、またはwitnessのいずれか。このパラメーターを設定しない場合、またはNULLを提供する場合、デフォルトのdataノード種類が使用されます。
注#
このファンクションは、関連するパブリック接続文字列を使用してローカルノードのレコードを作成します。ローカルレコードは1つだけであるため、作成されると、ファンクションは再度実行されるとエラーを報告します。
このファンクションはトランザクションファンクションです。ロールバックできます。これによる変更は、現在のトランザクションに表示されます。
ファンクションは、トランザクションが終了するまで、新しく作成されたノードのロックを保持します。
bdr.create_node_group#
- このファンクションは、PGDノードグループを作成します。デフォルトでは、ローカルノードは唯一のメンバーとしてグループに参加する必要があります。
bdr.join_node_group() を使用してグループにノードを追加できます。
概要#
bdr.create_node_group(node_group_name text,
parent_group_name text DEFAULT NULL,
join_node_group boolean DEFAULT true,
node_group_type text DEFAULT NULL)
パラメーター#
node_group_name—新しいPGDグループの名前。ノード名と同様に、有効なグループ名は小文字、数字、アンダースコアのみで構成されている必要があります。parent_group_name—ノードサブグループを作成する場合、これは親グループの名前である必要があります。クラスターのメインノードグループを作成するときにNULLデフォルトを提供します。join_node_group—このパラメーターは、ノードが作成中のグループに参加するかどうかを決定します。デフォルト値はtrueです。サブグループを作成するときにfalseを提供することは、たとえば、独立したリモートグループを作成する場合、ローカルノードが新しいグループに参加しないことを意味します。この場合、parent_group_nameを指定する必要があります。node_group_type—有効な値はNULL、subscriber-only、およびshardです。NULLデフォルトは、通常の汎用ノードグループを作成するためです。subscriber-onlyは、 購読者専用グループ を作成するためのものです
そのメンバーは、クラスター内の完全に参加したノードからのみ変更を受信しますが、他のノードに変更を送信することはありません。
shard は、将来の使用のために予約されています。
注#
このファンクションは、ローカルノードで実行されているローカルコンセンサスワーカーに要求を渡します。
ファンクションはトランザクションではありません。グループの作成はバックグラウンドプロセスであるため、機能が完了すると、変更をロールバックすることはできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。
bdr.wait_for_join_completion
を呼び出して、そうなるまで待機できます。
グループの作成では、ロックは保持されません。
bdr.join_node_group#
この機能は、ローカルノードを既存のPGDグループに参加させます。
概要#
bdr.join_node_group (
join_target_dsn text,
node_group_name text DEFAULT NULL,
pause_in_standby boolean DEFAULT NULL,
wait_for_completion boolean DEFAULT true,
synchronize_structure text DEFAULT all
)
パラメーター#
join_target_dsn—ローカルノードを追加するPGDグループ内の既存のソースノードへの接続文字列を指定します。node_group_name— PGDグループのオプションの名前。デフォルトはNULLで、ソースノードに存在する情報からグループ名を検出しようとします。wait_for_completion—戻る前に、参加プロセスが完了するのを待ちます。デフォルトtruesynchronize_structure—結合中に実行する構造スキーマ同期の種類を設定します。デフォルト設定はallで、完全なデータベース構造を同期します。他の使用可能な設定はnoneで、構造を同期しません。ただし、データは引き続き同期しますデザインでデータを同期しない監視ノードを除きます。pause_in_standby—オプションで、論理スタンバイノードとしてのみ参加するように参加プロセスに指示します。これは、後で完全なメンバーに昇格できます。このオプションは非推奨であり、PGDの将来のバージョンでは無効になるか削除される予定です。
警告
pause_in_standby は、 BDR 5.0以降非推奨です。ロジカルスタンバイを作成する推奨方法は、 bdr.create_node でノードを作成するときに node_kind を`standby` に設定することです。
wait_for_completion がfalse
として指定された場合、ファンクション呼び出しは、参加プロシージャが開始されるとすぐに返されます。結合の進行状況はログファイルと bdr.event_summary で確認できます。
情報ビュー。ファンクション bdr.wait_for_join_completion() を呼び出すことができます
bdr.join_node_group() の後、結合操作が完了するまで待機します。
verbose_progress をtrue
に設定して呼び出された場合、進行状況情報を出力できます。
注#
このファンクションは、join_target_dsn
接続文字列がポイントするノードを介して、グループコンセンサスメカニズムに要求を渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。
ファンクションはトランザクションではありません。参加プロセスはバックグラウンドで発生し、ロールバックすることはできません。
wait_for_completion がtrue
に設定されている場合、または後でbdr.wait_for_join_completion
を呼び出した場合、変更はローカルトランザクションにのみ可視されます。
ノードは1つのグループのみに所属できるため、各ノードで1回だけこのファンクションを呼び出すことができます。
ノード参加は、PGDグループのロックを保持しません。
bdr.part_node#
PGDグループからノードを削除しますが、ノードからデータは削除されません。
削除するノードを含む、PGDグループ内の任意のアクティブノードからファンクションを呼び出すことができます。ただし、ノードが分離されると、クラスター内の他のノードを分離することはできません。
注釈
ローカルノードを分離する場合、wait_for_completion から`false` に設定する必要があります。それ以外の場合、エラーが報告されます。
警告
このアクションは永続的です。ノードへのレプリケーションを一時的に停止する場合は、 bdr.alter_subscription_disable() を参照してください。
概要#
bdr.part_node (
node_name text,
wait_for_completion boolean DEFAULT true,
force boolean DEFAULT false
)
パラメーター#
node_name—パートへの既存のノードの名前。wait_for_completion—trueの場合、ノードがクラスターから完全に分離されるまで、ファンクションは返されません。それ以外の場合、ファンクションは分割プロシージャを開始し、待機せずにすぐに戻ります。ローカルノードで実行する場合、またはforceを使用する場合、常にfalseに設定します。force—ローカルノードでノードを強制的に削除します。これにより、コンセンサスに到達できない場合、またはノード分割プロセスがスタックしている場合、ノードの状態をローカルに設定します。
警告
force = true を使用すると、PGDグループが一貫性のない状態になる場合があります。他の方法でノードを削除できない障害から回復するためにのみ使用します。
注#
このファンクションは、グループコンセンサスメカニズムに要求を渡して、特定のノードを分割します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。分離プロセスはバックグラウンドで発生し、ロールバックすることはできません。
wait_for_completion がtrue
に設定されている場合、分割プロセスによって行われた変更はローカルトランザクションにのみ可視されます。
force がtrue
に設定されている場合、コンセンサスが失敗すると、このファンクションはローカルノードでのみ特定のノードの状態を設定します。このような場合、ファンクションはトランザクションであり、ファンクションがノードの状態を変更するため、ロールバックできます。
force がtrue
に設定されて既に分離処理中のノードでファンクションが呼び出された場合、指定されたノードをローカルに分離済みとしてマークして、終了します。これは、クラスターでコンセンサスに到達できない場合つまりノードの大部分がダウンしている場合、または分割プロセスがスタックしている場合にのみ役立ちます。ただし、書き込みを受信していた分離ノードが書き込みを行った場合、分離プロセスはフリーズせずに長時間かかる場合があることを考慮することが重要です。他のノードは、特定のノードからの欠落データを再同期する必要があります。強制分離はこの再同期を完全にスキップし、他のノードを一貫性のない状態のままにする可能性があります。
分離プロセスはロックを保持しません。
bdr.promote_node#
この機能は、ローカル論理スタンバイノードをPGDグループの完全なメンバーに昇格させます。
概要#
bdr.promote_node(wait_for_completion boolean DEFAULT true)
注#
このファンクションは、デフォルトを変更するように要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。
ファンクションはトランザクションではありません。プロモーションプロセスはバックグラウンドで発生し、ロールバックすることはできません。
wait_for_completion がtrue
に設定されている場合、または後でbdr.wait_for_join_completion
を呼び出した場合、変更はローカルトランザクションにのみ可視されます。
プロモーションプロセスは、他のプロモーションに対してロックを保持します。このロックは他のbdr.promote_node
呼び出しをブロックしませんが、プロモーションのバックグラウンドプロセスが一度に複数のノードで進行することを防ぎます。
bdr.switch_node_group#
この機能は、ローカルノードを現在のサブグループから同じ既存のPGDノードグループ内の別のサブグループに切り替えます。
概要#
bdr.switch_node_group (
node_group_name text,
wait_for_completion boolean DEFAULT true
)
パラメーター#
node_group_name— PGDグループまたはサブグループの名前。wait_for_completion—戻る前に、スイッチプロセスが完了するのを待ちます。デフォルトtrue
wait_for_completion がfalse
として指定された場合、これは非同期呼び出しであり、スイッチングプロシージャが開始するとすぐに返されます。スイッチの進行状況は、ログとbdr.event_summary
情報ビューで、またはbdr.switch_node_group()
が戻った後にbdr.wait_for_join_completion()
ファンクションを呼び出すことで確認できます。
注#
このファンクションは、要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。
ファンクションはトランザクションではありません。スイッチングプロセスはバックグラウンドで発生し、ロールバックすることはできません。
wait_for_completion がtrue
に設定されている場合、または後でbdr.wait_for_join_completion
を呼び出した場合、変更はローカルトランザクションにのみ可視されます。
ローカルノードは、クラスターを分割する必要なく、現在のサブグループから同じPGDノードグループ内の別のサブグループにメンバーシップを変更します。ノードの種類は、ターゲットサブグループ内の既存のノードの種類と一致する必要があります。
ノードスイッチングは、PGDグループのロックを保持しません。
制限 現在、この機能では、サブグループとそのPGDノードグループ間の切り替えのみが許可されています。サブグループ間の移動を有効にするには、2つの別個の呼び出しを行う必要があります。1)サブグループからノードグループにスイッチし、2)ノードグループから他のサブグループにスイッチします。
bdr.wait_for_join_completion#
このファンクションは、ローカルノードの参加手順が完了するのを待機します。
概要#
bdr.wait_for_join_completion(verbose_progress boolean DEFAULT false)
パラメーター#
verbose_progress—オプションで、参加プロシージャ中に実行される個々のステップに関する情報を出力します。
注#
このファンクションは、ローカルノードのチェック状態がbdr.create_node_group
、bdr.join_node_group 、またはbdr.promote_node
で設定されたターゲット状態に到達するまで待機します。