Постгресодыбр
Feb. 22nd, 2018 08:44 pmМедленно но верно движусь в направлении закрытия своих опесорсных долгов.
А то патчи понимаешь, написаны, но не зкаоммичены. Безобразие.
Мой мега патч полностью переделывающий работу с опциятми таблиц был в результате мучительно медленного взаимодействия с комьюнити порезан на части и отправлен на коммитфест.
https://commitfest.postgresql.org/15/1314/ (уже закомимчен) - тесты на работу опций таблицы. (Таковых раньше не было)
https://commitfest.postgresql.org/17/1489/ - добавляет тип опции Enum (а то раньше его по сути эмулировали строковой опцией, с рукописной функции валидации)
https://commitfest.postgresql.org/17/1536/ - вместо единого бинарного преставления опций для более половины типов relation'ов, вводит индивидуальные представления на каждый тип. Иначе получалось, что задаешь ты индексу fillfactor а память под него резервируется на все опции которые возможны для heap'а. Потому что универсально.
Последнее вот только что доковырял.
Как последние два закоммитят, можно будет финальный патч коммитить. Который старый механизм работы опций разрушает до основания, а затем...
Еще есть странный https://commitfest.postgresql.org/17/1486/ который тоже к теме опций отношения имеет.
Там история в том, что если задать опции работы TOAST'а для таблицы в которой TOAST'а нет, то постгрес это молча съест, а значения опций просто потеряются. Я в этом патче предлагаю непущать, но в рассылке меня убедили что так нельзя. Поэтому наверное вместо этого надо будет пренудительно создавать TOAST-таблицу ставить туда опции и предупреждать, что "чувак, ты что-то странное делаешь". Но пока какой-то финальной отмашки я в рассылке не получил, и непонятно, получу ли...
А то патчи понимаешь, написаны, но не зкаоммичены. Безобразие.
Мой мега патч полностью переделывающий работу с опциятми таблиц был в результате мучительно медленного взаимодействия с комьюнити порезан на части и отправлен на коммитфест.
https://commitfest.postgresql.org/15/1314/ (уже закомимчен) - тесты на работу опций таблицы. (Таковых раньше не было)
https://commitfest.postgresql.org/17/1489/ - добавляет тип опции Enum (а то раньше его по сути эмулировали строковой опцией, с рукописной функции валидации)
https://commitfest.postgresql.org/17/1536/ - вместо единого бинарного преставления опций для более половины типов relation'ов, вводит индивидуальные представления на каждый тип. Иначе получалось, что задаешь ты индексу fillfactor а память под него резервируется на все опции которые возможны для heap'а. Потому что универсально.
Последнее вот только что доковырял.
Как последние два закоммитят, можно будет финальный патч коммитить. Который старый механизм работы опций разрушает до основания, а затем...
Еще есть странный https://commitfest.postgresql.org/17/1486/ который тоже к теме опций отношения имеет.
Там история в том, что если задать опции работы TOAST'а для таблицы в которой TOAST'а нет, то постгрес это молча съест, а значения опций просто потеряются. Я в этом патче предлагаю непущать, но в рассылке меня убедили что так нельзя. Поэтому наверное вместо этого надо будет пренудительно создавать TOAST-таблицу ставить туда опции и предупреждать, что "чувак, ты что-то странное делаешь". Но пока какой-то финальной отмашки я в рассылке не получил, и непонятно, получу ли...
no subject
Date: 2018-02-23 08:34 am (UTC)no subject
Date: 2018-02-23 08:46 am (UTC):-)))) Ну если надо, то я могу недостающие слова расшифровать. Там никакого рокетсайнса. Просто контекст надо иногда более подробно раскрыть...
А что у нас с фейловерами?... И что именно ты фейловером называешь? :-))
no subject
Date: 2018-02-23 08:50 am (UTC)В голову сейчас информация про таблицы, по ходу, не влезет :( Хотя в целом интересно...
Про фейловеры, думаю, не актуально - мы таки решили на оракл переползать в течении какого-то времени, временно на последний гемфаер с изменением конфигурации всего и вся, или на геоду.
no subject
Date: 2018-02-23 08:54 am (UTC)Так а что ты называешь фейловером? Восстановление после сбоя? Что с ним не так? Мне ж интересно :-)
no subject
Date: 2018-02-23 09:13 am (UTC)1) Нужна репликация и фейловер, чтобы если загибается один сервер, можно было переключит клиента на второй и мы не заметили бы падения. Плюс тут как-то должна быть решена проблема с фейлбеком, чтобы если загнувшийся сервер починили и там поднялся постгрес, то он понял бы что уже не является мастером и не возникло split-brain синдрома.
В явном виде он фейлбэк не умеет.
Но это можно пробовать сделать скриптами, через разную мать
Но мне за идеи фейлбэка админы грозились оторвать выступающие части тела, со словами, что если оно упало, то надо разобраться почему и возвращать назад руками. А то еще хуже будет
no subject
Date: 2018-02-23 09:28 am (UTC)А... все... контакт...
С админом более чем согласен. Части тела отрывать...
Репликация работает более или менее из коробки. С фейловером все не так просто. Некоторого универсального решения насколько я понимаю нет. Но в целом все инструменты чтобы построить такое -- есть. И есть разные кастомные условно готовые решения.
Самое осмысленное из того что я щупал было https://github.com/2ndQuadrant/repmgr его рекомендую пробовать в первую очередь.
Но в целом общая идея такая: снаружи ставится один из вариантов прокси, который который при аварии автоматичски переключается на реплику. С возможной изоляцией старого мастера. А дальше руками поднимать старый мастер, разбираться почему упало, и ставить его обратно в репликацию....
Вообще вопросы репликации и резервирования сейчас очень активно обсуждаемая тема. На конференции (pgconf.ru) много об этом говорили. Через какое-то время выложат слайды. Их можно будет читать... Да и видео смотреть.
no subject
Date: 2018-02-23 09:42 am (UTC)