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 ログは自動的に削除されます。
削除されたレプリケーションスロットは再利用できません。
手順
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
表示されるページの左側のナビゲーションウィンドウで、ログ管理 をクリックします。
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 によって計算されます。
レプリケーション スロット用に累積された WAL ログの数です。単位:MB。
論理サブスクリプションの遅延
フィールドはマッピングされていません。
パラメーターは AliPG によって計算されます。
現在のレプリケーションスロットに対応するサブスクライバーノードの論理サブスクリプションの待機時間。単位:秒。
アクティブかどうか
active
レプリケーションスロットが使用中かどうかを指定します。有効な値:
INACTIVE
ACTIVE
オプション。 [非アクティブ] が アクティブかどうか 列に表示されているレプリケーションスロットを管理します。 レプリケーションスロットの 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 データに使用される共有メモリの量を示します。