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

Господа, всем доброго дня. Прошу консультации. Суть: Есть высоконагруженная БД, размером

~80гб, внезапно при подключении к ней второй реплики с отставанием (первая работает штатно), переполняются подклчюения и база встает колом. При этом висит очень много подключений SyncRep, база не может выполнить запросы INSERT или UPDATE. SELECT.
pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname = 'database'; помогает только сбросить соединения, через достаточно короткий промежуток времени они возвращаются обратно и снова происходит переполнение. Рестарт инстанса не помогает.
Помогло выключение параметра synchronous_commit = off, база заработала, но при обратном включении synchronous_commit ситуация повторяется.
Грешил на диск, думал может inodes кончились и база не может записать WAL, отсюда накопление, но нет, с этим все норм.
Подскажите, куда копать?
Сейчас реплику перевел в мастер, работаем на ней, но вопрос что случилось пока не понятен

11 ответов

14 просмотров

синхронной реплику сделали? synchronous_standby_names что показывает?

Artem-M Автор вопроса
Виктор Егоров
синхронной реплику сделали? synchronous_standby_na...

show synchronous_standby_names; synchronous_standby_names --------------------------- * (1 row)

Artem M
show synchronous_standby_names; synchronous_stand...

вы все реплики сделали синхронными.

Artem-M Автор вопроса
Виктор Егоров
вы все реплики сделали синхронными.

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

Artem M
Я правильно понимаю, с двумя синхронными мастер ра...

вы же сами написали — вторая не синхронная, а отстающая.

Artem-M Автор вопроса
Виктор Егоров
вы же сами написали — вторая не синхронная, а отст...

Пардон, немного не то написал. Тогда параметр recovery_min_apply_delay = 90min как влияет? Или я чего-то не понимаю?

Artem M
Пардон, немного не то написал. Тогда параметр reco...

на реплике изменения применятся через 90 минут, согласно recovery_min_apply_delay на мастере COMMIT не произойдёт, пока все реплики не применят изменения работает так, как вы настроили

Artem-M Автор вопроса
Виктор Егоров
на реплике изменения применятся через 90 минут, со...

Поправьте если я ошибаюсь, исходя из этого я понимаю что на мастере 90 минут все лежит в WAL, после этого только применяется, как отработает реплика с отставанием? Тогда почему помогло synchronous_commit = off

Artem M
Поправьте если я ошибаюсь, исходя из этого я поним...

потому что synchronous_commit вырубает синхронную репликацию

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

Ну по факту там отставание незначительное, в пару секунд, если смотреть psql -h localhost -U database -c "\x" -c "SELECT now() - pg_last_xact_replay_timestamp()". Или она вообще перестает синхронизироваться?

Artem M
Ну по факту там отставание незначительное, в пару ...

коллега, “синхронная реплика” и “отставание на 90 минут” ну никак не вяжутся. решите, что вам надо и сделайте. в данный момент вы хотите все реплики синхронными и потому оно так получается

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

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

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
Карта сайта