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

ApsaraDB RDS:WAL ログ管理機能を使用する

最終更新日:Mar 13, 2025

ApsaraDB RDS for PostgreSQL インスタンスで生成される WAL ログの数は、ピーク時に大幅に増加します。チェックポインタプロセスは、期限切れの WAL ログを定期的に削除します。ただし、多数の非アクティブなレプリケーションスロットが存在し、できるだけ早く削除されない場合、WAL ログは継続的に蓄積されます。WAL ログを効果的に管理するために、ApsaraDB RDS for PostgreSQL では、ApsaraDB RDS コンソールで、または API オペレーションを呼び出すことによって、レプリケーションスロットを表示および削除できます。WAL は先行書き込みログの略です。

背景情報

レプリケーションスロットは、PostgreSQL のメカニズムです。ストリーミングレプリケーションで再生できる変更のストリームを保持します。レプリケーションスロットを使用すると、ストリーミングレプリケーションでのデータ損失や重複レプリケーションを防ぎ、データレプリケーションの効率と信頼性を向上させることができます。

多数の非アクティブなレプリケーションスロットが存在し、できるだけ早く削除されない場合、WAL ログは継続的に蓄積され、大量のストレージリソースを消費します。蓄積された WAL ログはディスク容量を使い果たし、RDS インスタンスがロックされる可能性があります。RDS インスタンスがロックされると、RDS インスタンスは書き込みリクエストを処理できなくなり、ビジネスに影響します。

ApsaraDB RDS for PostgreSQL では、ApsaraDB RDS コンソールで、または API オペレーションを呼び出すことによって、非アクティブなレプリケーションスロットを削除できます。これにより、WAL ログが大量のディスク容量を占有するのを防ぎます。

使用上の注意

  • アクティブなレプリケーションスロットは削除できません。

  • 非アクティブなレプリケーションスロットをできるだけ早く削除しないと、WAL ログは継続的に蓄積され、大量のストレージリソースを消費します。蓄積された WAL ログがディスク容量を使い果たすと、RDS インスタンスはロックされ、書き込みリクエストを処理できなくなり、ビジネスに影響します。

影響

非アクティブなレプリケーションスロットが削除されると、次の影響が発生します。

  • RDS インスタンス上の非アクティブなレプリケーションスロットが原因で削除できなかった WAL ログは自動的に削除されます。

  • 削除されたレプリケーションスロットは再利用できません。

手順

  1. [インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。

  2. 表示されるページの左側のナビゲーションウィンドウで、ログ管理 をクリックします。

  3. WAL ログ管理 タブで、すべてのレプリケーションスロットに関する情報を表示します。

    レプリケーションスロットに関する情報は、PostgreSQL の pg_replication_slots テーブルのフィールドにマッピングされます。次の表にマッピングを示します。

    パラメーター

    pg_replication_slots テーブルのフィールド

    説明

    スロット名

    slot_name

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

    スロットタイプ

    slot_type

    レプリケーションスロットのタイプ。有効な値:

    • physical

    • logical

    プラグイン

    plugin

    デフォルトでは、ApsaraDB RDS for PostgreSQL は次の拡張機能をサポートしています。

    • test_decoding

    • pgoutput

    • wal2json

    一時スロット(temporary)

    temporary

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

    • true: 一時スロット

    • false: 永続スロット

    データベース名

    database

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

    Wal の蓄積量

    フィールドはマッピングされていません。

    パラメーターは AliPG によって計算されます。

    計算方法

    SELECT pg_size_pretty(
      pg_wal_lsn_diff(
        pg_current_wal_insert_lsn(), 
        restart_lsn)
    	) AS wal_delay 
    FROM pg_replication_slots;

    レプリケーション スロット用に累積された WAL ログの数です。単位:MB。

    論理サブスクリプションの遅延

    フィールドはマッピングされていません。

    パラメーターは AliPG によって計算されます。

    計算方法

    SELECT *, CAST(extract(epoch FROM replay_lag) AS BIGINT) 
    AS sub_replay_lag 
    FROM pg_stat_replication;

    現在のレプリケーションスロットに対応するサブスクライバーノードの論理サブスクリプションの待機時間。単位:秒。

    アクティブかどうか

    active

    レプリケーションスロットが使用中かどうかを指定します。有効な値:

    • INACTIVE

    • ACTIVE

  4. オプション。 [非アクティブ]アクティブかどうか 列に表示されているレプリケーションスロットを管理します。 レプリケーションスロットの WAL ログは継続的に蓄積されるため、非アクティブなレプリケーションスロットはできるだけ早く管理する必要があります。

    • レプリケーションスロットが使用中の場合は、状態を [アクティブ] に変更します。

    • レプリケーションスロットが使用中でない場合は、[アクション] 列の [削除] をクリックします。

説明

スロットとスロットの作成方法の詳細については、以下のトピックをご参照ください。

関連操作

  • DescribeSlots: インスタンスのすべてのレプリケーションスロットに関する情報をクエリします。

  • DeleteSlot: インスタンスからレプリケーションスロットを削除します。

関連情報

  • PostgreSQL で WAL ログが蓄積される問題のトラブルシューティング」に記載されている手順に基づいて、プライマリ RDS インスタンスと読み取り専用 RDS インスタンスで WAL ログの蓄積に関する問題を特定できます。

  • 次のパラメーターは、WAL ログ関連のサイズと自動削除メカニズムを指定するために使用されます。「ApsaraDB RDS for PostgreSQL インスタンスのパラメーターを変更する」に記載されている手順に基づいて、パラメーターを設定できます。

    • max_wal_size: チェックポイントをトリガーする WAL ログのサイズを指定します。

    • min_wal_size: 将来のチェックポイントで再利用するためにリサイクルする WAL ログの最小サイズを指定します。WAL ディスク使用率がこの設定値を下回っている限り、古い WAL ログは削除されずに、将来のチェックポイントで再利用するためにリサイクルされます。

    • wal_buffers: WAL ログの共有メモリ内のディスクページバッファーのサイズを指定します。このサイズは、ディスクに書き込まれていない WAL データに使用される共有メモリの量を示します。