Node management interfaces

SQLインターフェースを使用して、ノードを動的に追加および削除できます。

bdr.create_node

この関数はノードを作成します。

概要

bdr.create_node(node_name text, local_dsn text)

パラメータ

  • node_name —新しいノードの名前。データベースごとに許可されるノードは1つだけです。有効なノード名は、小文字、数字、ハイフン、およびアンダースコアで構成されます。

  • local_dsn —ノードへの接続文字列。

注意事項

この関数は、関連付けられたパブリック接続文字列を使用してローカルノードのレコードを作成します。ローカルレコードは1つしか存在できないため、作成されると、関数は再度実行されるとエラーを報告します。

この関数はトランザクション関数です。ロールバックでき、それによって加えられた変更は現在のトランザクションで表示されます。

この関数は、トランザクションが終了するまで、新しく作成されたbdrノードのロックを保持します。

bdr.drop_node

ノードをドロップします。

警告

この関数は、通常の使用を対象としていません。テクニカルサポートから指示された場合にのみ実行してください。

この関数は、指定されたノードのメタデータをローカルデータベースから削除します。ノードは次のいずれかです。

  • ローカルノード。この場合、リモートノードに関する情報を含む、すべてのノードメタデータが削除されます。

  • リモートノード。その場合、その特定のノードのメタデータのみが削除されます。

概要

bdr.drop_node(node_name text, cascade boolean DEFAULT false, force boolean DEFAULT false)

パラメータ

  • node_name —既存のノードの名前。

  • cascade —非推奨、将来的に削除されます。

  • force —すべての健全性チェックを回避し、矛盾を引き起こす危険性があるにもかかわらず、指定されたPGDノードのすべてのメタデータを強制的に削除します。テクニカルサポートのみが、別れに関連する緊急事態に備えて強制ノードドロップを使用します。

注意事項

これを実行する前に、 bdr.part_node() を使用してノードを分割します。

この関数は、ローカルデータベースから特定のノードのメタデータを削除します。ノードはローカルノードにすることができます。その場合、リモートノードに関する情報を含むすべてのノードメタデータが削除されます。または、リモートノードにすることもできます。その場合、その特定のノードのメタデータのみが削除されます。

注釈

PGD4は、スノーフレークIDおよびタイムハードシーケンスで使用するために、各ノードに一意のシーケンス番号が割り当てられているため、一度に最大1024個のノードレコード(ACTIVEとPARTEDの両方)を持つことができます。 PARTEDノードは自動的にクリーンアップされません。これが問題になった場合は、この機能を使用してこれらのレコードを削除できます。

bdr.create_node_group

この関数は、ローカルノードをグループの唯一のメンバーとして持つPGDグループを作成します。

概要

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 —サブグループの親グループの名前。

  • join_node_group —このパラメーターは、ノードが作成中のグループに参加するかどうかを決定するのに役立ちます。デフォルト値はtrue です。これは、ノードが参加したくないシャードグループを作成しているときに使用されます。これは、parent_group_name を指定した場合にのみfalse にすることができます。

  • node_group_type —有効な値は、NULL 、subscriber-only 、datanode 、read coordinator 、およびwrite coordinator です。 subscriber-only タイプは、クラスター内の完全に参加したノードからのみ変更を受信しますが、レプリケーションの変更を他のノードに送信しないノードのグループを作成するために使用されます。詳細については、 購読者専用グループ を参照してください。 Datanode は、グループがシャードを表すことを意味しますが、他の値は、グループがそれぞれのコーディネーターを表すことを意味します。 subscriber-only を除き、他の値は将来の使用のために予約されています。 NULL は、通常の汎用ノードグループが作成されることを意味します。

注意事項

この関数は、ローカルノードで実行されているローカルコンセンサスワーカーにリクエストを渡します。

この関数はトランザクションではありません。グループの作成はバックグラウンドプロセスであるため、機能が終了すると、変更をロールバックできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。 bdr.wait_for_join_completion を呼び出して、それらが完了するまで待つことができます。

グループの作成にはロックはありません。

bdr.alter_node_group_config

この機能は、既存のPGDグループの構成パラメーターを変更します。 NULL値(すべてのデフォルト)を持つオプションは変更されません。

概要

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 —レプリケート・データを書き込むときに適用プロセスが制約をチェックするかどうか。このオプションは非推奨であり、PGDの将来のバージョンでは無効または削除されます。

  • num_writers —このノードグループをバッキングするサブスクリプションの並列ライターの数。 -1は、デフォルト(GUC bdr.writers_per_subscription で指定)が使用されることを意味します。有効な値は、-1または正の整数です。

  • enable_wal_decoder —デコードワーカープロセスを有効/無効にします。 streaming_mode が既に有効になっている場合、デコードワーカープロセスを有効にすることはできません。

  • streaming_mode —大規模なトランザクションのストリーミングを有効/無効にします。 off に設定すると、ストリーミングは無効になります。他の値に設定されている場合、大規模なトランザクションは進行中にデコードされ、変更はダウンストリームに送信されます。値がfile に設定されている場合、ストリーミングトランザクションの着信変更はファイルに保存され、トランザクションがアップストリームでコミットされた後にのみ適用されます。値がwriter に設定されている場合、着信変更はライターの1つに直接送信されます(使用可能な場合)。パラレル適用が無効になっているか、ライタがストリーミングトランザクションを自由に処理できない場合、変更はファイルに書き込まれ、トランザクションがコミットされた後に適用されます。値がauto に設定されている場合、PGDは、トランザクションプロパティと使用可能なリソースに応じて、 file とwriter の間でインテリジェントに選択しようとします。 WALデコーダーが既に有効になっている場合、 streaming_mode を有効にすることはできません。

詳細については、 トランザクションストリーミング を参照してください。

  • default_commit_scope —デフォルトで使用するコミットスコープ、最初はlocal コミットスコープ。これは、トップレベルのノードグループにのみ適用されます。同じコミットスコープの異なるオリジングループに個々のルールを使用できます。詳細については、 オリジングループ を参照してください。

注意事項

この関数は、デフォルトを変更するリクエストをグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムを使用してグローバルに複製されます。

この関数はトランザクションではありません。要求はバックグラウンドで処理されるため、関数呼び出しをロールバックすることはできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。

この関数はロックを保持しません。

警告

この関数を使用して`apply_delay` 値を変更する場合、その変更は既にグループのメンバーであるノードには適用されません。この値は通常テスト以外では使用されないため、この制限は実稼働での使用にはほとんど影響しません。

bdr.join_node_group

この関数は、ローカルノードを既存のPGDグループに参加させます。

概要

bdr.join_node_group (
    join_target_dsn text,
    node_group_name text DEFAULT NULL,
    pause_in_standby boolean DEFAULT false,
    wait_for_completion boolean DEFAULT true,
    synchronize_structure text DEFAULT all
)

パラメータ

  • join_target_dsn —ローカルノードを追加するPGDグループ内の既存の(ソース)ノードへの接続文字列を指定します。

  • node_group_name — PGDグループのオプションの名前。デフォルトはNULLで、ソースノードに存在する情報からグループ名を検出しようとします。

  • pause_in_standby —オプションで、ロジカルスタンバイノードとしてのみ参加するように参加プロセスに指示します。これは、後でフルメンバーに昇格できます。

  • wait_for_completion —参加プロセスが完了するまで待ってから、戻ります。デフォルトはtrue です。

  • synchronize_structure —結合中に実行する構造(スキーマ)同期の種類を設定します。有効なオプションは、完全なデータベース構造を同期するall 、および構造を同期しないnone です。ただし、データは引き続き同期されます。

wait_for_completion がfalse として指定されている場合、これは非同期呼び出しであり、参加プロシージャーが開始されるとすぐに戻ります。結合の進行状況は、ログとbdr.event_summary 情報ビューで確認するか、 bdr.join_node_group() が戻った後にbdr.wait_for_join_completion() 関数を呼び出すことで確認できます。

注意事項

この関数は、 join_target_dsn 接続文字列が指すノードを介して、グループコンセンサスメカニズムにリクエストを渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。

この関数はトランザクションではありません。参加プロセスはバックグラウンドで行われ、ロールバックすることはできません。 wait_for_completion がtrue に設定されている場合、または後でbdr.wait_for_join_completion を呼び出すことによって、変更はローカルトランザクションにのみ可視です。

ノードは単一のグループのみに属することができるため、この関数は各ノードで1回のみ呼び出すことができます。

ノード参加は、PGDグループでロックを保持しません。

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.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.wait_for_join_completion

この関数は、ローカルノードのjoin手続きが完了するのを待ちます。

概要

bdr.wait_for_join_completion(verbose_progress boolean DEFAULT false)

パラメータ

  • verbose_progress —オプションで、結合手順中に実行された個々のステップに関する情報を出力します。

注意事項

この関数は、ローカルノードのチェック状態がbdr.create_node_group 、bdr.join_node_group 、またはbdr.promote_node で設定されたターゲット状態に到達するまで待機します。

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 に設定された状態で既に別れの処理中のノードで関数が呼び出された場合、また、指定されたノードをローカルでpartedとしてマークして終了します。これは、クラスターでコンセンサスに到達できない場合(つまり、ノードの大部分がダウンしている場合)、または分割プロセスがスタックしている場合にのみ役立ちます。ただし、受信していた分割ノードが書き込みを行うと、分割プロセスはスタックせずに長い時間がかかる可能性があることを考慮することが重要です。他のノードは、特定のノードから欠落しているデータを再同期する必要があります。強制的な別れはこの再同期を完全にスキップし、他のノードを矛盾した状態のままにする可能性があります。

分割プロセスはロックを保持しません。

bdr.alter_node_interface

この関数は、指定されたノードの接続文字列(DSN )を変更します。

概要

bdr.alter_node_interface(node_name text, interface_dsn text)

パラメータ

  • node_name —変更する既存のノードの名前。

  • interface_dsn —ノードの新しい接続文字列。

注意事項

この関数を実行し、ローカルノードでのみ変更を加えます。これは、通常、変更中のノードを含むPGDグループ内のすべてのノードで実行することを意味します。

この関数はトランザクションです。ロールバックでき、変更は現在のトランザクションで表示されます。

この関数は、ローカルノードでロックを保持します。

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 を待たずにストップを受け取ります。 fast 引数がtrue に設定されている場合、ワーカーの中断は現在の作業が完了するまで待機しません。

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 —指定されたキーに設定される新しい値。

bdr.alter_node_option

PGDノードのルーティング構成を変更する

概要

bdr.alter_node_option(node_name text,
    config_key text,
    config_value text);

パラメータ

  • node_name —変更するノードの名前。

  • config_key —変更するノードのオプションのキー。

  • config_value —指定されたキーに設定される新しい値。