советом:
Ночью в лог насыпало ошибок "requested WAL segment 0000000100000C0000000016 has already been removed"
Соответственно реалтайм реплика начала отставать, а в след за ней и вторая реплика, подключенная к первой, с отставанием.
Релатайм была перезалита и проблема ушла, однако сохранилась на второй этот способ не помог, и там проблема сохранилась, разве что ругается теперь на другой сегмент. Куда копать и как можно избежать подобного?
забыл, postgresql 14, Ubuntu 20.04
надо увеличить максимальные размеры вала в настройках, чтобы реплика могла догнать за то время пока нет коннекта между ними, а потом перезалить реплику и перезапустить стриминг вала (включить кластер реплики в режиме реплики)
Правильно я понимаю, речь про wal_keep_size?
использовать слоты репликации или понадеяться на лучшее, увеличив wal_keep_size
Да как обычно — архив WAL, слоты... а какой метод репликации используется, вообще?
да, его надо поставить в половину свободного места на диске например
Потоковая репликация
и впустую потратить половину свободного места на диске)
Вот тут тоже уточню пожалуй, если мне не изменяет память - слот сначала надо создавать, а потом уже через него пускать реплику? Это ж, получается, пересобирать каскад опять придется
Тогда подходит и то, и другое, да.
слот можно в процессе создать и указать реплике, если я правильно помню, попробуй
Вот в слотах меня смущает один момент, что если по какой-то причине отвалился ведомый - WAL начинает копиться же на мастере, и сжирает место, что при высокой нагрузке имеет вариант обвалить вообще все. Поправьте если я ошибаюсь
ага, нужен мониторинг, хотя бы базовый свободного места по-хорошему -оставание реплики
Вот я как раз на фоне этого и задумался про мониторинг отставания, это надо какой-то скрипт придумывать который будет смотреть статистику репликации и алертить. Свободное место то можно через node_exporter мониторить, а вот отставание я пока не придумал....
Вот как указать что-то пока не нашел...
postgres_exporter в помощь
он умеет мониторить отставание? Хм... видимо что-то пропустил в описании
Нет, последовательность не слишком важна. Если реплика работает — ей можно добавить слот. (Часто его создают заранее, в рамках pg_basebackup — чтобы уж точно все WAL от момента бэкапа до поднятия реплики остались на месте. Удобно. Но это необязательно).
А что, разве логическая не можэт брать WAL из архивов?
Я вот пока не нашел как уже работающую реплику перевести в слот, может быть подскажете? Я б сразу на кошках попробовал
table bloat и index bloat сразу заодно начните мониторить.
Может. Это же не все используемые методы репликации, я это имел в виду (мало ли, что там у кого может быть).
Создаёшь на ведущем слот ( pg_create_physical_replication_slot() ), на ведомом указываешь его в primary_slot_name. И ведомого перезапускаешь, кажэтся.
Обсуждают сегодня