Как избежать ошибки запрошенный segment wal уже удалён?

Собственно есть настроенная потоковая репликация Master-Slave
На мастере postgresql.conf

archive_mode = off
#archive_command = '/bin/true'
max_wal_senders = 10
max_wal_size=4GB
wal_keep_size=3GB
wal_level = replica
wal_log_hints = on

На slave

Ocтанавливаем службу postgres, удаляем каталог data целиком.
Затем заупскаем репликацию data с мастера pg_basebackup

от пользака postgres
sudo -i -u postgres запускаем
pg_basebackup -R -h 192.168.250.182 -U rep_user -D /var/lib/pgpro/1c-16/data -P
По заверщшению стартуем сервак

Собственно на маленькой базах все ок (15 гб).

решил потестить большую базу -95ГБ. Заливаю её на мастер - стартует репликация . Но в процессе заливки базы - ломается репликация на Slave

В логах мастера

2024-02-14 13:28:17.752 MSK [771] ОПЕРАТОР: START_REPLICATION 36/C7000000 TIMELINE 1
2024-02-14 13:28:22.756 MSK [773] ОШИБКА: запрошенный сегмент WAL 0000000100000036000000C7 уже удалён
2024-02-14 13:28:22.756 MSK [773] ОПЕРАТОР: START_REPLICATION 36/C7000000 TIMELINE 1

Подскажите варианты решения проблемы ( Увеличить размер max_wal_size и wal_keep_size ? Или есть еще какие нибудь варианты ? )
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
wal_keep_size размером больше ожидаемого лага репликации по объёму wal (это место будет занято постоянно, зато из-за этого не угрожает уронить мастер по переполнению диска)

либо использовать слоты репликации. Очень желательно с разумным max_slot_wal_keep_size, чтобы забытый слот репликации умер, а не уронил мастер по исчерпанию места на диске.

либо архив wal, но если не нужен для других задач, то чаще используется wal_keep_size или слоты репликации
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы