このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

サブスクリプション管理

更新日時2025-04-11 17:14

先行書き込みログ(WAL)ファイルを効果的に管理するために、PolarDB for PostgreSQL では、PolarDB コンソールから論理レプリケーションスロットを表示できます。

背景情報

多くの非アクティブな論理レプリケーションスロットがタイムリーにクリーンアップされない場合、WAL ファイルは蓄積し続けます。これは、大量のストレージ容量を消費し、ディスクがいっぱいになってクラスターがロックされることさえあります。  クラスターがロックされると、データの書き込みができなくなり、ビジネス運用が中断される可能性があります。

PolarDB for PostgreSQL では、PolarDB コンソールから論理レプリケーションスロットを表示できます。論理レプリケーションスロットのアクティブ状態を監視し、非アクティブなスロットを削除して、蓄積された WAL ファイルをクリアできます。

前提条件

PolarDB for PostgreSQL 集中式クラスター(データベースエディションEnterprise Edition または Standard Edition)の場合、PolarDB コンソールから wal_level パラメーターを設定するwal_level パラメーターを に設定できます。このパラメーターを変更すると、クラスターが再起動します。パラメーターを変更する前に適切なビジネス上の準備を行い、慎重に進んでください。

説明

デフォルトでは、PolarDB for PostgreSQL 分散クラスターの wal_level パラメーターは logical に設定されています。

論理レプリケーションスロットを表示する

説明
  • クラスターに論理レプリケーションスロットが存在しない場合は、最初に関連リソースを作成する必要があります。

  • PolarDB コンソールで論理レプリケーションスロットを表示する場合は、お問い合わせください

  1. PolarDB コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] を選択します。表示されるページでクラスターのリージョンを選択し、[クラスター] リストでクラスターの ID をクリックして、クラスターの基本情報ページに移動します。

  2. 左側のナビゲーションウィンドウで、[設定と管理] > [サブスクリプション管理] を選択します。[WAL ファイル管理] タブで、論理レプリケーションスロットに関する情報を表示できます。

    WAL ファイル管理パラメーター

    説明

    WAL ファイル管理パラメーター

    説明

    スロット名

    論理レプリケーションスロットの名前。

    スロットタイプ

    論理レプリケーションスロットのタイプ。logical のみがサポートされています。

    プラグインの使用

    デフォルトでは、PolarDB for PostgreSQL は次のプラグインをサポートしています。

    • decoderbufs

    • decoder_raw

    • wal2json

    • pgoutput

    一時スロット

    レプリケーションスロットが一時スロットかどうかを指定します。一時スロットは、現在のセッション中にのみ存在する特別なタイプの スロットであり、セッション終了後に自動的に削除されます。

    • true: スロットは一時スロットです。

    • false: スロットは永続スロットです。

    データベース名

    論理レプリケーションスロットが存在するデータベース。

    累積 WAL ファイル

    論理レプリケーションスロットのために累積された WAL ログの量。単位:MB。

    論理サブスクリプションレイテンシ

    現在の論理レプリケーションスロットのパブリッシャーとサブスクライバー間の遅延。単位:秒。

    アクティブかどうか

    論理レプリケーションスロットが現在使用中かどうかを示します。

    • INACTIVE

    • ACTIVE

  3. (オプション) 論理レプリケーションスロットの アクティブかどうか フィールドが INACTIVE の場合、WAL ファイルは継続的に蓄積されます。次のいずれかの方法を使用して、できるだけ早くこの問題に対処してください。

    • スロットをアクティブ化して、ステータスを ACTIVE に変更します。

    • このスロットが不要になった場合、または冗長な場合は、SELECT pg_drop_replication_slot('slot_name'); 文を使用して削除します。

(オプション) 論理レプリケーションスロットを作成する

  1. パブリッシャーデータベースにパブリケーションを作成します。

    CREATE PUBLICATION <パブリケーション名> FOR TABLE <テーブル名>;

    例:

    CREATE PUBLICATION pub1 FOR TABLE public.t1;
    説明

    クラスター内の既存のパブリケーションを表示するには、SELECT * FROM pg_publication; 文を実行します。

  2. サブスクライバーデータベースにサブスクリプションを作成します。この例では、パブリッシャーとサブスクライバーは同じクラスター内の異なるデータベースです。

    1. 特権アカウントを使用して、パブリッシャーデータベースに論理レプリケーションスロットを作成します。

      SELECT pg_create_logical_replication_slot('', 'pgoutput');
    2. サブスクライバーデータベースで、パブリッシャーデータベースからレプリケートするテーブルと同じスキーマと名前のテーブルを作成します。

    3. サブスクライバーデータベースに論理サブスクリプションを作成します。

      CREATE SUBSCRIPTION my_subscription
      CONNECTION 'channel_name=localhost dbname=<パブリッシャーデータベース> user=<特権アカウント> password=<パスワード>'
      PUBLICATION pub1 WITH (create_slot=false,slot_name=);
      重要

      パブリッシャーデータベースとサブスクライバーデータベースが同じクラスター内にある場合は、WITH (create_slot=false) を追加して、サブスクライバーに新しいレプリケーションスロットを作成せずに既存の スロットを使用するように指示する必要があります。

  • 目次 (1, M)
  • 背景情報
  • 前提条件
  • 論理レプリケーションスロットを表示する
  • (オプション) 論理レプリケーションスロットを作成する
フィードバック