Ваши проблемы абсолютно верны.Реплика создает слот репликации на основном сервере, где хранится restart_lsn
.Согласно документам, restart_lsn
- это:
Адрес (LSN) самого старого WAL, который все еще может потребоваться потребителю этого слота и, следовательно, не будет автоматически удаляться во время контрольных точек.
Если реплика не продвигает LSN в этом слоте репликации, основной будет сохранять все сегменты WAL, начиная с этой позиции и игнорируя предел max_wal_size
.
Если вы хотите удалить реплику и включитьВращение WAL, затем вы также должны удалить слот репликации:
postgres=# SELECT * FROM pg_replication_slots;
postgres=# SELECT pg_drop_replication_slot('replication_slot_name');
На Postgres Commitfest имеется патч , который вводит новый GUC для ограничения объема WAL, удерживаемого слотом репликации.,Тем не менее, патч является долгоживущим и еще не выпущен.