~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, отсюда накопление, но нет, с этим все норм.
Подскажите, куда копать?
Сейчас реплику перевел в мастер, работаем на ней, но вопрос что случилось пока не понятен
синхронной реплику сделали? synchronous_standby_names что показывает?
show synchronous_standby_names; synchronous_standby_names --------------------------- * (1 row)
вы все реплики сделали синхронными.
Я правильно понимаю, с двумя синхронными мастер работать не может?
вы же сами написали — вторая не синхронная, а отстающая.
Пардон, немного не то написал. Тогда параметр recovery_min_apply_delay = 90min как влияет? Или я чего-то не понимаю?
на реплике изменения применятся через 90 минут, согласно recovery_min_apply_delay на мастере COMMIT не произойдёт, пока все реплики не применят изменения работает так, как вы настроили
Поправьте если я ошибаюсь, исходя из этого я понимаю что на мастере 90 минут все лежит в WAL, после этого только применяется, как отработает реплика с отставанием? Тогда почему помогло synchronous_commit = off
потому что synchronous_commit вырубает синхронную репликацию
Ну по факту там отставание незначительное, в пару секунд, если смотреть psql -h localhost -U database -c "\x" -c "SELECT now() - pg_last_xact_replay_timestamp()". Или она вообще перестает синхронизироваться?
коллега, “синхронная реплика” и “отставание на 90 минут” ну никак не вяжутся. решите, что вам надо и сделайте. в данный момент вы хотите все реплики синхронными и потому оно так получается
Обсуждают сегодня