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

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

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

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

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

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

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

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

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

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

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

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

2 ответов

11 просмотров

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

> Если закрывать соединения к базе после рестарта до момента синхронизации > синхронных реплик, тогда база откроется после фейловера. Нет, тогда именно эта база не откроется никогда. ;) И всё равно я не понимаю (с учётом написанного ниже), как это будет технически выглядеть. > Тут надо отметить, что открывание базы должно быть после того <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... или я что-то упустил?

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Can I forward ports (including the SSH port) between two machines without SSH? I know I can forward SSH server port from machine A (which blocks all requests by firewall) to ...
required optional
5
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
А если для werf организовать отдельный репозиторий, а сервисы из проекта подключить как симлинки? И симлинки в гитигнор добавить?
Dmitriy Andreev
13
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем здравствуйте!) У меня такой вопрос. Есть два роута, роут1 и роут2. Они связаны с очередью some_queue. По задаче предполагается, что есть два паблиша. Паблиш1 отправляет...
Format
10
Карта сайта