
Wolf
11.10.2018
13:08:24
айди должны в новых нодах быть старше чем в старых зукиперах
добавлять логично что надо не 4 ноды так как по сути у вас 4 пустых ноды имеют кворум перед тремя работаютщими

Google

Wolf
11.10.2018
13:09:33
то есть вы стреляете себе в ногу, добавляйте по две

Viktor
11.10.2018
13:13:38
Нашел лог.
Похоже у меня из одного дц в другой не могут достучаться новые машинки :/

Denis
11.10.2018
13:23:38
а блин, забыл оптимайз
optimize table dtest final;
SELECT count() FROM dtest WHERE (date1 > '2009-02-02') AND (date2 < '2009-02-02')
0 rows in set. Elapsed: 0.005 sec. Processed 573.70 thousand rows


Konstantin
11.10.2018
13:37:22
коллеги, подскажите, можно ли поcчитать runningDifference между элементами массива дат?

Denis
11.10.2018
13:37:49

papa
11.10.2018
13:39:10

Konstantin
11.10.2018
13:40:26

papa
11.10.2018
13:41:41
массив - это же колонка со значениями и колонка с отсечками длин. а diff - это вычитание соседних значений,
так даже веселее получается

Konstantin
11.10.2018
13:44:32
получается для моего вариантам можно просто дропунть первый элемент и будет в принципе то что нужно

Alexey
11.10.2018
14:00:30

Google

Alexey
11.10.2018
14:04:44
Обходим, что проблемный запрос укладываем в подзапрос, и уже сверху или limit или order by, из-за чего глючит

Denis
11.10.2018
14:15:13

Wolf
11.10.2018
14:24:51

terry
11.10.2018
14:32:49
https://github.com/yandex/ClickHouse/issues/3347
кто там заведует докой

Alexey
11.10.2018
14:32:54
В подзапросе проблемный запрос, еслим к нему добавить limit, срет такими ошибками

Kirill
11.10.2018
14:47:55
ENGINE = ReplacingMergeTree(EventDate, (SomeId, SomeClass, EventDate, SomeEnum, SomeType), 8192);
такой движок же должен перезписывать данные только в том случае, если совпадает ключ (дата, айдишник и остальные поля) ?

Wolf
11.10.2018
14:49:13
Этот и должен

Kirill
11.10.2018
14:50:59
у меня он похоже ошибается
и как-то странно перезаписывает данные для новых дат
передавать ’string_value’
в одинарных кавычках для Enum8 нормальная практика ?
опытным путем выяснил
что КХ перезаписывает данные с разными Enum

Mах
11.10.2018
15:14:32


Denis
11.10.2018
15:32:35
что КХ перезаписывает данные с разными Enum
да вроде нет
CREATE TABLE enumtest
(
id UInt64,
status Enum8('started' = 1,'loaded' = 2,'done' = 3),
val String
)
ENGINE = ReplacingMergeTree order by (id, status)
insert into enumtest values (1, 'started', 'test0')
insert into enumtest values (1, 'done', 'test1')
select * from enumtest final
optimize table enumtest
select * from enumtest

Google

Kirill
11.10.2018
15:33:41
да, у меня не было в ключе значения одного

Alexey
11.10.2018
15:47:47
Блин короче не знаю, замучался, вдруг кто сталкивался.
При подключении из API с использованием Golang SQLDriver 1.1.54213 к серверу ClickHouse через балансировщик HAProxy, первая попытка подключения к ClickHouse не проходит, начиная со второй попытки и далее все нормально подключается
пока не истекло время timeout server
подключения идут
как только время заканчивается, первое подключение снова не проходит
А все остальные идут нормально, до следующего истечения времени таймаут сервер
то есть первые tcp пакеты которые возвращаються, говорят что соединение не доступно...
да забыл сказать, балансировщик настроен на TCP, а не http

Kirill
11.10.2018
16:12:56
И зачем вам HAProxy?

Alexey
11.10.2018
16:14:06
HAProxy чтобы балансировать между четырьмя нодами кликхауса
пишет при первой попытке
[clickhouse][connect=3]-> ping
[clickhouse][connect=3][connect] read error: EOF
а потом подключается
У нас есть свое API
которое сообщеает нам
Message: Clickhouse ping error: %!(EXTRA *errors.errorString=driver: bad conne ction)
Проблема в том что мы при получении ошибки этой, отправляем сообщенние в graylog, которые шлет нам уведомления в телеграмм
И мы не можем сразу понять, дейстительно нет соединения или это первая попытка

Kirill
11.10.2018
16:16:46
Драйвер сам умеет балансировать. Можно покрутить таймауты, но ситуация интересная, такое бывает, надо смотреть что у вас с сеткой.

Google

Alexey
11.10.2018
16:17:15

Kirill
11.10.2018
16:17:57
В alt_hosts впишите адреса других серверов.

Alexey
11.10.2018
16:18:28
Это в коде библиотеки ?

Kirill
11.10.2018
16:18:34
Да

Alexey
11.10.2018
16:19:57
Просто когда идет подключение в обход HAProxy такой проблемы нет

Wolf
11.10.2018
16:20:00

Alexey
11.10.2018
16:21:31
Надо будет подумать как через стороние балансировщики сделать, просто не хочется дергать программистов наших, так как подключение к ClickHouse нужно будет править не в одной API, а сразу в нескольких
в любом случае большое спасибо что откликнулись на помощь !
=)

Wolf
11.10.2018
16:22:12

Slava
11.10.2018
16:26:04
Коллеги, не подскажете, какие есть средства отладки проблем с materialized view? Где clickhouse хранит данные о них, есть ли какие-то логи и т.п.? Бывают проблемы что view перестаёт обновляться почему-то, хотя данные в таблицу вставляются.

Alexey
11.10.2018
16:30:25
@kshvakov
tcp://host1:9000?username=user&password=qwerty&database=clicks&read_timeout=10&write_timeout=20&alt_hosts=host2:9000,host3:9000
получается тут alt_hosts=второй сервер:9000
верно ?
И как балансинг указать in_order - first live server is choosen in specified order ?
в самом конце конекшен стринга ?
типа:
tcp://host1:9000?username=user&password=qwerty&database=clicks&read_timeout=10&write_timeout=20&alt_hosts=host2:9000&balancing=in_order

Kirill
11.10.2018
16:33:12
Все так, тип балансировки не указывайте, он по умолчанию все ОК

Google

Alexey
11.10.2018
16:34:09
у нас просто несколько стейджингов, и на некоторых нужно указать чтобы всегда записи делались на первый сервер, и только в случае недоступности второй по списку
если укажу in_order, это будет работать ?

Kirill
11.10.2018
16:34:39
Да, будет

Alexey
11.10.2018
16:34:45
Большое спасибо =)

Mах
11.10.2018
16:58:43
Всем привет.
ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{pulse_replica}/pulse/normal_summing_sharded', '{replica}', event_date, (event_date, event_time, body_id), 8192)
(Взято из https://habr.com/post/317682/, 2 хоста, 2 шарда)
Что здесь понимается под {pulse_replica}?
Я понимаю, что название шарда. Я понимаю, что оно задаётся через макрос. Но я не понимаю, как написать макрос или задать руками.

Wolf
11.10.2018
17:02:13
ну назовите шард 1

Mах
11.10.2018
17:02:23

Wolf
11.10.2018
17:02:23
а другой шард 2
ну игде надо вместо пульса впишите 1 или 2

Mах
11.10.2018
17:03:00
На первых двух машинах пишем шард1, на остальных двух шард2, так?

Wolf
11.10.2018
17:03:15
ну пишите 1 и пишите 2

Mах
11.10.2018
17:03:24


Daniel
11.10.2018
18:22:51
Доброго времени! Кто знает, если была создана таблица движка Merge, например, с таким определением
Merge(hits, '^WatchLog')
данные при запросе к ней будут читаться только из таблиц, название которых начинается на WatchLog, из числа тех, которые существовали на момент создания этой таблицы типа Merge, или автоматически будут включаться в новые запросы и таблицы, которые будут создаваться с именем WatchLog... и после создания Merge таблицы?
Доброго времени! Кто знает, если была создана таблица движка Merge, например, с таким определением
Merge(hits, '^WatchLog')
данные при запросе к ней будут читаться только из таблиц, название которых начинается на WatchLog, из числа тех, которые существовали на момент создания этой таблицы типа Merge, или автоматически будут включаться в новые запросы и таблицы, которые будут создаваться с именем WatchLog... и после создания Merge таблицы?
Прочитал, сам не понял, что спросил.
В общем, суть в следующем: если у нас было 2 таблицы с именами
WatchLog_moscow
WatchLog_berlin
и мы создали таблицу Merge с Merge(hits, '^WatchLog')
а потом создали таблицу
WatchLog_piter
будет ли при запросе к таблице Merge производиться поиск по новой таблице WatchLog_piter в том числе, или только по первым двум?


Алексей
11.10.2018
18:31:27
Привет. Давай создадим в России автоматизированный платежный сервис для возможности осуществлять платежи юридическим лицам через расчетный счет в криптоволютных единицах