Обсуждаем ClickHouse
Привет!
Есть ли у кого-то советы по настройке refreshing MV, который работает с распределёнными таблицами?
Я использую REFRESH EVERY 10 SECOND APPEND TO {distributed_table} SELECT FROM {distributed_source_table} и столкнулся с проблемой: так как MV создаётся на каждой реплике, данные дублируются.
Целевая таблица — это DISTRIBUTED, за которой стоит ReplicatedReplacingMergeTree.
Как правильно настроить, чтобы избежать дублирования при обновлении MV?
https://github.com/ClickHouse/ClickHouse/issues/33056
Читать полностью…однозначно ответить нельзя
тут надо знать хотя бы в начале или в конце orderby, это совсем разный подход,
причем например в первой попавшейся таблице
PRIMARY KEY (toStartOfHour(timestamp), httpStatusCode)
ORDER BY (toStartOfHour(timestamp), httpStatusCode, dc, physicalServerName, podName, timestamp)
и все это для достижения конкретных, разных целей
А зукипер пересоздавать нужно только для чека что все завелось? Так как в старом продовом CH были какие то апдейты? И нам надо опять сбросить всю мету, поставить прод в RO, досинкать новые данные, поднять ZK и restore replica ?
- в этом случае есть даунтайм, но не такой большой как в 3 варианте)
@den_crane
Спасибо за ответ!
Привет! Мы давно не обновляли свой продовый клик (с 2022го года :) ). Сейчас вынуждены переезжать в другой ДЦ и соответственно хотелось бы апнуться до последней 25 версии.
Версия текущего клика v22.2.2.1
Схема: 2 ноды, без шардирования (простая репликация)
Объем данных: ~ 15+ Tb
Репликатор: zookeeper
Как правильно отреплицировать данные в новый ДЦ?
1) Поднять в новом ДЦ старую версию клика с зукипером, дождаться репликации, апнуть версию с 22 до 25 (это реально итеративно или сразу большим шагом?)
2) Поднять в новом ДЦ сразу новую версию клика и натравить старый зук, понадеяться что проблем с репликацией не возникнет, переключиться с старого ДЦ на новый и возможно мигрироваться с зук на chkeeper (может ли в таком случае как то аффектнуть данные в текущем проде?)
3) Простой INSERT SELECT remote с жирным даунтаймом 😢
4) Пока не придумали
1-2 варианты можно протестировать в дев среде, но пока этого не сделали, может быть есть люди у которых был такой опыт?
Ну вот странно, что у меня почти все имеет тип GET_PART, а в system.replicated_fetches я не вижу ничего. Фильтр по is_currently_executing в replication_queue спасает ситуацию. Но вышеописанных причин я так и не понимаю.
Читать полностью…а в system.replication_queue тип GET_PART все равно отображается для таких фетчей?
Читать полностью…Всем привет.
Почему system.replicated_fetches может быть пустой, а system.replication_queue при этом иметь сотни записей вида "Not executing fetch of part all_398002_398002_0 because 8 fetches already executing, max 8."?
23.8
ttl_only_drop_parts =1 не позволит делать долгие ttl мутации
Читать полностью…я к тому, что для применения ttl запускается мутация, и там 628 партов осталось, мутация к одному парту применяется долго
Читать полностью…будут, у вас уже ttl есть, старое правило сработает, но ttl_only_drop_parts =1 позволит старому правилу только раз в сутки дропнуть парт
Читать полностью…но без материализации не будет применения и старые парты не удалятся?
Читать полностью…хорошо, смотрим. там же TTL долго применяться будет, ко всем партам?
Читать полностью…Окей! в проблема описаная в issue конечно всё смешалось, кони и люди, но натолкнуло меня на мысли, спасибо!
Читать полностью…а если это не NDA для какой цели описание как у вас?
Читать полностью…Всем привет!
А подскажите пожалуйста есть смысл делать в order_bytoStartOfTheDay(created_at)
или можно без прелюдий в виде toStartOfTheDay?
снова restore replica
таким образом можно добится даунтайм в пару секунд.
т.е. rsync делайте наживую
надо тестить на стейдже вашу приладу, возможно вообще не будет работать, или будет работать медленее.
2 не надо, 25я версия переделает все в зукипере и старый кластер встанет.
4. инкрементальный rsync файлов в новый кластер, несколько запусков, чтобы досинкать изменения, новый кластер смотрит в новый зукипер (кипер), поднимаем 25й кх, system restore replica, тестируем приложение, если все ОК, пересоздаем зукипер, останавливаем КХ, снова инкрементальный rsync изменений ...
примеры как делать rsync ищите в чате, там важны ключи, типа удаляй в приемнике файлы которых уже нет в источнике
system.replication_queue where is_currently_executing
Читать полностью…потому что в 23.8 если мержу чтобы выполнится нужен был парт которого нет, мерж качал этот парт, но такой фетч не отображался в replicated_fetches (типа это merge, а не get операция)
можно их посмотреть типа как-то find /var/lib/clickh... -name 'fetch*'
alter table ... on cluster drop partition ...
Читать полностью…ну и вы можете сами сделать alter table ... on cluster drop partition ... если надо прям сейчас
Читать полностью…ниче не понял, я рекомендую как сделать чтобы TTL моментально удалял парты целиком, не занимая место и не используя cpu
Читать полностью…вы можете сделать вот такое
set materialize_ttl_after_modify=0;
alter table .. on cluster ... modify TTL toStartOfDay(TimeReceived) + toIntervalMonth(4);
ну modify settings ttl_only_drop_parts =1 сразу на cluster
Читать полностью…