172 похожих чатов

Господа и дамы, всем дня. Вновь обращаюсь к вам за

советом:
Ночью в лог насыпало ошибок "requested WAL segment 0000000100000C0000000016 has already been removed"
Соответственно реалтайм реплика начала отставать, а в след за ней и вторая реплика, подключенная к первой, с отставанием.
Релатайм была перезалита и проблема ушла, однако сохранилась на второй этот способ не помог, и там проблема сохранилась, разве что ругается теперь на другой сегмент. Куда копать и как можно избежать подобного?

23 ответов

19 просмотров
Artem-M Автор вопроса

забыл, postgresql 14, Ubuntu 20.04

надо увеличить максимальные размеры вала в настройках, чтобы реплика могла догнать за то время пока нет коннекта между ними, а потом перезалить реплику и перезапустить стриминг вала (включить кластер реплики в режиме реплики)

Artem-M Автор вопроса
D
надо увеличить максимальные размеры вала в настрой...

Правильно я понимаю, речь про wal_keep_size?

использовать слоты репликации или понадеяться на лучшее, увеличив wal_keep_size

Да как обычно — архив WAL, слоты... а какой метод репликации используется, вообще?

Artem M
Правильно я понимаю, речь про wal_keep_size?

да, его надо поставить в половину свободного места на диске например

D
да, его надо поставить в половину свободного места...

и впустую потратить половину свободного места на диске)

Artem-M Автор вопроса
Iliya
использовать слоты репликации или понадеяться на л...

Вот тут тоже уточню пожалуй, если мне не изменяет память - слот сначала надо создавать, а потом уже через него пускать реплику? Это ж, получается, пересобирать каскад опять придется

Artem M
Потоковая репликация

Тогда подходит и то, и другое, да.

слот можно в процессе создать и указать реплике, если я правильно помню, попробуй

Artem-M Автор вопроса
Iliya
слот можно в процессе создать и указать реплике, е...

Вот в слотах меня смущает один момент, что если по какой-то причине отвалился ведомый - WAL начинает копиться же на мастере, и сжирает место, что при высокой нагрузке имеет вариант обвалить вообще все. Поправьте если я ошибаюсь

Artem M
Вот в слотах меня смущает один момент, что если по...

ага, нужен мониторинг, хотя бы базовый свободного места по-хорошему -оставание реплики

Artem-M Автор вопроса
Iliya
ага, нужен мониторинг, хотя бы базовый свободного ...

Вот я как раз на фоне этого и задумался про мониторинг отставания, это надо какой-то скрипт придумывать который будет смотреть статистику репликации и алертить. Свободное место то можно через node_exporter мониторить, а вот отставание я пока не придумал....

Artem-M Автор вопроса
Iliya
слот можно в процессе создать и указать реплике, е...

Вот как указать что-то пока не нашел...

Artem-M Автор вопроса
Roman
postgres_exporter в помощь

он умеет мониторить отставание? Хм... видимо что-то пропустил в описании

Artem M
Вот тут тоже уточню пожалуй, если мне не изменяет ...

Нет, последовательность не слишком важна. Если реплика работает — ей можно добавить слот. (Часто его создают заранее, в рамках pg_basebackup — чтобы уж точно все WAL от момента бэкапа до поднятия реплики остались на месте. Удобно. Но это необязательно).

А что, разве логическая не можэт брать WAL из архивов?

Artem-M Автор вопроса

Я вот пока не нашел как уже работающую реплику перевести в слот, может быть подскажете? Я б сразу на кошках попробовал

Artem M
Вот я как раз на фоне этого и задумался про монито...

table bloat и index bloat сразу заодно начните мониторить.

Ilya Anfimov
А что, разве логическая не можэт брать WAL из архи...

Может. Это же не все используемые методы репликации, я это имел в виду (мало ли, что там у кого может быть).

Artem M
Я вот пока не нашел как уже работающую реплику пер...

Создаёшь на ведущем слот ( pg_create_physical_replication_slot() ), на ведомом указываешь его в primary_slot_name. И ведомого перезапускаешь, кажэтся.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта