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

>> вступает в дело HA обвязка, либо будет автофейловер Хорошо,

это плюс в такой ситуации. А если не вступает, что дальше будет?

тут либо никаких фейлов нет и синхронный коммит рано или поздно завершится, либо HA движок не детектирует фейл, что требует его доработки. В любом случае, синхронную репликацию можно ослабить или отключить вручную и всё пойдёт далее

>> либо переключение в асинхронный режим мастера без дальнейшего фейловера
Эээ... а технически это как будет реализовано?
Я к тому, что вот "висит" backend, ждёт только ответа реплик... и тут он как-то должен узнать, что надо прекратить это делать, я правильно понял?

Это решает HA движок, и только он. По таймауту фейла синхронной реплики, если никакой замены ей нет, то кластер переключается в ассинхронный режим при условии, что кворум DCS всё ещё на стороне мастера. Это функциональность аналогична Max Availability режиму в Oracle Data Guard

>> Мы боремся, чтобы эта убиваемость не порождала локальных коммитов, потенциональных на откат в кластере
Да нет никакого "кластера"! Вы его себе вообразили, извините, и потому мечтаете о том, чего нет и не должно быть, мне кажется. :(

Сформулируйте конкретно вашу мысль. Здесь описываемая проблема касается только кластерной инсталляции "мастер-реплика". Особенно сюда попадают кластера, где есть автоматика - на промоут узла и демоут с откатом неотреплицированных изменений (например, через pg_rewind). Говоря про "локальные коммиты, потенциальных на откат в кластере", я имею в виду откат изменений при демоуте узла, т.е. коммит мог подтвердиться на старом мастере, но после фейловера и pg_rewind он окончательно теряется

> В конце концов... у Вас уже есть рабочий, оттестированный patch на эту тему?

Да, на коммитфесте

> И хоть один committer, который вообще согласен с этим подходом? ;)

К консенсусу мы пока не пришли, но наша сторона практически полностью высказалась по этой проблеме, ответ за хакерами)

2 ответов

26 просмотров

Повторите, пожалуйста, что вы планируете сделать, когда произойдёт рассоединение мастера с репликой? Вы планируете разорвать соединения клиентов у мастера? Мастер вначале должен удостовериться в том, что реплики приняли изменения, и только потом у себя принять?

> Если закрывать соединения к базе после рестарта до момента синхронизации > синхронных реплик, тогда база откроется после фейловера. Нет, тогда именно эта база не откроется никогда. ;) И всё равно я не понимаю (с учётом написанного ниже), как это будет технически выглядеть. > Тут надо отметить, что открывание базы должно быть после того <skip> Такими "сложностями" должна заниматься "HA-обвязка", IMNSHO. > Выключать узел ни в коем случае не нужно, необходимо, чтобы узел принимал > соединения на репликацию и от суперюзера. HA обвяка это может осуществить через > манипуляцию с pg_hba.conf, как это делает столон А что делать тогда, я не понял? Вот послал кто-то cancel request / SIGTERM / сработал statement_timeout в какой-то сессии, которая ждёт ответа от синхронной реплики. Что конкретно должно происходить? > Всё это рассчитано на DBA, для которых гораздо большей проблемой становится потеря данных при синхронной репликации А то, что кто угодно может "срубить" primary, для DBA не проблема? ;) И ещё раз, потеря данных при этих ситуациях нормальна, об этом прямо предупреждает документация (с "разжёвыванием")! Т.е. любой failover — аварийная ситуация, относиться к нему как-то иначе — вот это проблема. > В моей схеме потеря будет лишь при краше постгресового кворума Может, да, а может — нет. Я "Вашей схемы" не видел (возможность потери данных может зависеть от каждой маленькой детали "схемы", я вот о чём). > в треде патч предполагает опциональность реакции на Ctrl+C / Сtrl+D Я даже пролистал его, но не вчитывался. Вы его тестировали? ;) Если да -- расскажите на реакции при разных настройках нового GUC (я, вроде бы, не видел в thread в -hackers подробного описания). > К сожаления со стороны экстеншна не подобраться к логике ожидания синхронного коммита А не лучше ли нацелиться на то, чтоб можно было подобраться? Т.е. написать patch для добавления соответствующего hook. > Сформулируйте конкретно вашу мысль. Куда уже конкретнее? ;( > Здесь описываемая проблема касается только кластерной инсталляции "мастер-реплика". Такой вещи, как "кластерной инсталляции" (только из-за того, что Вы используете синхронную репликацию, она не появляется) не существует, Вы её себе вообразили! Синхронная репликация не предназначена и недостаточна для реализации "кластерных инсталляций". > Особенно сюда попадают кластера, где есть автоматика - на промоут узла и демоут с откатом неотреплицированных изменений (например, через pg_rewind). И кто им виноват, что у них есть такая "автоматика", а? ;) > К консенсусу мы пока не пришли, но наша сторона практически полностью высказалась по этой проблеме, ответ за хакерами) "Ответ за хакерами", насколько я вижу, пока "минус 3!" от основных contributors/committers... или я что-то упустил?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта