Владимир, поделитесь пожалуйста опытом - были ли другие пробелмы кроме озвученной у вас при таком обновлении-прыжке?
У нас кластер на 19.16 и вопрос обновления стоит уже критически. Хочется прийти к 20.8-lts, но сразу через такое кол-во версий прыгать страшно, а роллить по мажору и каждый перепроверять - много чело-часов надо и вообще времени. Чейнджлог весь прочитали, критов обратно несовместимых не заметили вроде бы.
У нас кластер в 3 шарда, в шарде по 2 ноды, куча replicated/distributed но пишем напрямую в Replicated.
И 2 вопроса к аудитории(гуглил, ответов что-то не нашел):
1. Роллинг апдейт: есть ли принципиально не совместимые версии между 19.16 и 20.8 которые никак не будут работать в одном кластере? Можно ли писать в новую/старую ноду когда кластер не полностью обновлен?
2. есть ли какая-то политика отката ноды? Т.е. в случае чего можно ли кластер откатить на старую версию? Например, если не было записи в ноду с новой версией.
План очень сильно зависит от размера кластера.
Можно апгрейдится напрямую с 19.16 в 20.8
апргейдить репликами, т.е. distributed запросы могут давать неверный результат. Инсерты лучше остановить пока не проапгрейжены все ноды.
Мой план: У меня 2 дц, реплики в разных.
выключить инсерты везде.
отключить селекты в дц1
проапгрейдить все шарды в дц1
включить селекты дц1
отключить селекты в дц2
проапгрейдить все шарды в дц2
даунгрейд возможен, если вы не делали alter table (мутации). теперь все alter table, даже add column работают через мутации.
Я тещу 20.8 с октября, на 2х стейджах + LT
Мне нужно изменить 4 параметра чтобы софт мог работать с 20.8 типа
<any_join_distinct_right_table_keys>1</any_join_distinct_right_table_keys>
<joined_subquery_requires_alias>0</joined_subquery_requires_alias>
и еще какие-то
я 4 раза уже протестил апгрейд/даунгрейд, все ОК, но у меня выключена адаптивная гранулярность и поэтому автоматически не работают компактные парты и все такое, компактные парты созданные в 20.8 естественно не приатачатся в 19.16