Postgres репликация через слот, почему возникает ошибка запрошенный сегмент Wall уже удалён?

Имею настроенную репликацию через слот, между 2-мя кластерами PG
Master-Slave

Master

archive_mode = off               
max_wal_senders = 2            
wal_level = replica                     
wal_log_hints = on    
max_slot_wal_keep_size = 20GB


На slave делал так

pg_basebackup -R -h 192.168.250.182 -U rep_user -D /var/lib/pgpro/1c-16/data -P -v -R -X stream -C -S pgstandby1

Канал между серверами - 50 mb/s

С маленькими базами - все ок, репликация работает.

Но когда из dump лью на Master большую базу (80 gb) в ходе репликации отваливается
Slave с ошибкой
2024-02-15 11:53:23.417 MSK [563] СООБЩЕНИЕ:  начало передачи журнала с главного сервера, с позиции AD/34000000 на линии времени 1
2024-02-15 11:53:23.417 MSK [563] ВАЖНО:  не удалось получить данные из потока WAL: ОШИБКА:  запрошенный сегмент WAL 00000001000000AD00000034 уже удалён
2024-02-15 11:53:23.418 MSK [456] СООБЩЕНИЕ:  waiting for WAL to become available at AD/34061612

Почему так происходит?
Насколько я понял при использовании слотов репликации wal не должен удаляться то того как он отреплицируется?
Или я не правильно понял, и нужно просто увеличить размер max_slot_wal_keep_size?
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Сколько, по-вашему, при ресторе БД весом 80 ГБ накапливается WAL, больше или меньше значения, указанного вами в max_slot_wal_keep_size? К каким последствиям это может привести и почему?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы