すべてのプロダクト
Search
ドキュメントセンター

PolarDB:論理デコードSQLインターフェイス

最終更新日:May 31, 2024

この記事では、論理デコード用のSQLインターフェイスについて説明します。

概要

論理的なデコードを操作するためのSQLレベルのAPIに関する詳細なドキュメント。

レプリケーション管理関数

レプリケーション元の関数の使用は、デフォルトでスーパーユーザーにのみ許可されます。レプリケーションスロットの関数の使用は、replication権限を持つスーパーユーザーとユーザーに制限されます。

Table1。レプリケーション管理関数

関数

説明

pg_create_physical_replication_slot (slot_name name [, すぐに予約boolean, temporary boolean] ) → record (slot_name name, lsn pg_lsn)

slot_nameという名前の新しい物理レプリケーションスロットを作成します。 オプションの2番目のパラメーター (trueの場合) は、このレプリケーションスロットのLSNを直ちに予約することを指定します。そうでない場合、LSNはストリーミングレプリケーションクライアントからの最初の接続で予約されます。 物理スロットからのストリーミング変更は、ストリーミング複製プロトコルでのみ可能です。 オプションの3番目のパラメーターであるtemporaryは、trueに設定すると、スロットをディスクに永続的に格納せず、現在のセッションでのみ使用することを指定します。 一時的なスロットは、エラー時にも解放されます。 この関数は、レプリケーションプロトコルコマンドCREATE_REPLICATION_SLOTに対応します。 物理的

pg_drop_replication_slot (slot_name name) → void

slot_nameという名前の物理または論理レプリケーションスロットを削除します。 レプリケーションプロトコルコマンドDROP_REPLICATION_SLOTと同じです。 論理スロットの場合、スロットが作成されたのと同じデータベースに接続している間にこれを呼び出す必要があります。

pg_create_logical_replication_slot (slot_name name, plugin name [, temporary boolean] ) → record (slot_name name, lsn pg_lsn)

出力プラグインプラグインを使用して、slot_nameという名前の新しい論理 (デコード) レプリケーションスロットを作成します。 オプションの3番目のパラメーターであるtemporaryは、trueに設定すると、スロットをディスクに永続的に格納せず、現在のセッションでのみ使用することを指定します。 一時的なスロットは、エラー時にも解放されます。 オプションの4番目のパラメーターである2フェーズは、trueに設定されている場合、準備されたトランザクションのデコードがこのスロットで有効になることを指定します。 この関数の呼び出しは、レプリケーションプロトコルコマンドCREATE_REPLICATION_SLOTと同じ効果があります。 ローカル

pg_copy_physical_replication_slot (src_slot_name, dst_slot_name name [, temporary boolean] )) → record (slot_name name, lsn pg_lsn)

src_slot_nameという名前の既存の物理レプリケーションスロットをdst_slot_nameという名前の物理レプリケーションスロットにコピーします。 コピーされた物理スロットは、ソーススロットと同じLSNからWALを予約し始める。temporaryはオプションです。 temporaryを省略すると、ソーススロットと同じ値が使用されます。

pg_copy_logical_replication_slot (src_slot_name, dst_slot_name name [, temporary boolean [, plugin name ]] )) → record (slot_name name, lsn pg_lsn)

src_slot_nameという名前の既存の論理レプリケーションスロットをdst_slot_nameという名前の論理レプリケーションスロットにコピーします。 コピーされた論理スロットは、ソース論理スロットと同じLSNから開始する。 temporarypluginはどちらもオプションです。省略されている場合は、ソーススロットの値が使用されます。

pg_logical_slot_get_changes (slot_name nameupto_lsn pg_lsnupto_nchanges integerVARIADIC options text []) → setof record (lsn pg_lsnxid xidtext)

変更が最後に消費された時点から始まるスロットslot_nameの変更を返します。 upto_lsnupto_nchangesがNULLの場合、論理復号はWALの終了まで継続されます。 up_lsnが非NULLである場合、復号は、指定されたlsnより前にコミットするトランザクションのみを含む。 upto_nchangesがNULL以外の場合、デコードによって生成された行数が指定された値を超えると、デコードは停止します。 ただし、返される行の実際の数は、新しいトランザクションコミットをデコードするときに生成された行を追加した後にのみこの制限がチェックされるため、より大きくなる場合があります。

pg_logical_slot_peek_changes (slot_name nameupto_lsn pg_lsnupto_nchanges integerVARIADIC options text [])

変更が消費されないことを除いて、pg_logical_slot_get_changes() 関数と同じように動作します。

pg_logical_slot_get_binary_changes(slot_name 名前,upto_lsn pg_lsn,upto_nchanges 整数,VARIADIC オプション text[]) →setofレコード(lsn pg_lsn,xid xid,データ ビテア)

変更がbyteaとして返されることを除いて、pg_logical_slot_get_changes() 関数と同じように動作します。

pg_logical_slot_peek_binary_changes(slot_name 名前,upto_lsn pg_lsn,upto_nchanges 整数,VARIADIC オプション text[]) →setofレコード(lsn pg_lsn,xid xid,データ ビテア)

変更がbyteaとして返されることを除いて、pg_logical_slot_peek_changes() 関数と同じように動作します。

pg_replication_slot_advance (slot_name name, upto_lsn pg_lsn) → record (slot_name, end_lsn pg_lsn)

slot_nameという名前のレプリケーションスロットの現在の確定位置を進めます。 スロットは後方に移動されず、現在の挿入位置を越えて移動されることはない。 スロットの名前と、それが進められた実際の位置を返します。 更新されたスロット位置情報は、何らかの進行が行われた場合、次のチェックポイントで書き出される。 したがって、クラッシュの場合、スロットは以前の位置に戻る可能性があります。

pg_replication_origin_create (node_name text) → oid

指定された外部名を持つレプリケーションオリジンを作成し、割り当てられた内部IDを返します。

pg_replication_origin_drop (node_name text) → void

関連付けられたリプレイの進行状況を含め、以前に作成したレプリケーションオリジンを削除します。

pg_replication_origin_oid (node_name text) → oid

名前でレプリケーション元を検索し、内部IDを返します。 そのようなレプリケーション起点が見つからない場合は、NULLが返されます。

pg_replication_origin_session_setup (node_name text) → void

現在のセッションを指定されたオリジンからのリプレイとしてマークし、リプレイの進行状況を追跡できます。 オリジンが現在選択されていない場合にのみ使用できます。 元に戻すには、pg_replication_origin_session_resetを使用します。

pg_replication_origin_session_reset () → void

pg_replication_origin_session_setup() の効果をキャンセルします。

pg_replication_origin_session_is_setup () → boolean

現在のセッションでレプリケーション起点が選択されている場合はtrueを返します。

pg_replication_origin_session_progress (flush boolean) → pg_lsn

現在のセッションで選択されているレプリケーション起点の再生場所を返します。 パラメータflushは、対応するローカルトランザクションがディスクにフラッシュされたことが保証されるかどうかを決定する。

pg_replication_origin_xact_setup (origin_lsn pg_lsn, origin_timestamp timestamp with time zone) → void

現在のトランザクションを、指定されたLSNとタイムスタンプでコミットしたトランザクションの再生としてマークします。 pg_replication_origin_session_setupを使用してレプリケーション起点が選択されている場合にのみ呼び出すことができます。

pg_replication_origin_xact_reset () → void

pg_replication_origin_xact_setup() の効果をキャンセルします。

pg_replication_origin_advance (node_name text, lsn pg_lsn) → void

指定されたノードのレプリケーションの進行状況を指定された場所に設定します。 これは、最初の場所を設定する場合、または構成変更後に新しい場所を設定する場合などに主に役立ちます。 この関数を不注意に使用すると、データの複製が一貫しなくなる可能性があります。

pg_replication_origin_progress (node_name text, flush boolean) → pg_lsn

指定されたレプリケーションオリジンの再生場所を返します。 パラメータflushは、対応するローカルトランザクションがディスクにフラッシュされたことが保証されるかどうかを決定する。

pg_logical_emit_message (transactional booleanprefix textcontent text) → pg_lsn

pg_logical_emit_message (transactional booleanprefix textcontent bytea) → pg_lsn

論理復号メッセージを出力します。 これを使用して、汎用メッセージをWALを介して論理復号プラグインに渡すことができます。 transactionalパラメータは、メッセージが現在のトランザクションの一部であるかどうか、または論理デコーダがレコードを読み取るとすぐに、メッセージを直ちに書き込み、デコードするかどうかを指定します。 prefixパラメーターは、論理復号プラグインが興味のあるメッセージを簡単に認識するために使用できるテキストプレフィックスです。 contentパラメーターはメッセージの内容で、テキスト形式またはバイナリ形式で指定されます。

同期レプリケーションは、ストリームレプリケーションインターフェイスを使用するレプリケーションスロットでのみサポートされます。 関数インターフェイスおよび追加の非コアインターフェイスは、同期レプリケーションをサポートしません。