レプリケーションスロット
PostgreSQLの仕組み。特定のコンシューマー(レプリカや論理デコードのクライアント)が受信を確認するまで、サーバーがWALセグメントを確保しておく。コンシューマーがデータを取りこぼさないことは保証されるが、コンシューマーが死ぬとディスクが膨らむ危険がある。
作成は、レプリカ用なら SELECT pg_create_physical_replication_slot('replica1')、Debeziumなど向けなら論理スロットで行う。レプリカが遅れるとWALを保持し続けなければならず、pg_walディレクトリが膨らむ。典型的な障害は、週末にレプリカが落ち、WALが200 GB膨張して、マスターのディスクが満杯になることだ。監視は必須で、pg_replication_slots.confirmed_flush_lsn を見る。max_slot_wal_keep_size(PG 13以降)で膨張に上限をかけられるが、上限に達するとスロットは破棄され、レプリカは再同期が必要になる。