
Vladislav
01.08.2018
05:06:57
привет. внезапно прекратились мержи, в логах КХ ошибки типа:
2018.08.01 05:04:46.025443 [ 53 ] <Warning> local.clickstream_new (StorageReplicatedMergeTree, PartCheckThread): Found parts with the same min block and with the same max block as the missing part 201807-0_783_809_5. Hoping that it will eventually appear as a result of a merge.
в папке таблицы набралось много папок 201807-0_XXX_XXX_0.
вставляем в distributed таблицу, проблемы только у двух таблиц: оригинальной и ее копии с кастомным партиционированием, остальные мержатся нормально. процесс заливки данных не изменяли.
куда смотреть?

Kirill
01.08.2018
06:38:51

Артемий
01.08.2018
06:41:35
Добрый день!
Есть столбцы (string, hash): data1, data2, data3, и другие столбцы
Нужно делать поиск по data1 ИЛИ data2 ИЛИ data3
Как лучше организовать таблицу или таблицы, чтобы CH максимально хорошо и быстро искал нужные строки?

fikfok
01.08.2018
07:45:12
Добрый день, коллеги!
Делаю выборку:
select request_id
from my_table
where request_id = '59f911f179bea204f6890ea5'
Результат - одна строка.
Затем подставляю в селекте вместо request_id некоторую константу, но с тем же условием:
select 'new_request_id' as request_id
from my_table
where request_id = '59f911f179bea204f6890ea5'
Результат - пусто.
Что бы это могло быть?

Google

Vladimir
01.08.2018
07:46:12
Так работает?
select 'new_request_id' as request_id2
from my_table
where request_id = '59f911f179bea204f6890ea5'

Kirill
01.08.2018
07:48:14
Не делайте алиасы с названием колонок

fikfok
01.08.2018
07:49:05


Vladimir
01.08.2018
08:34:43
Кто-нибудь использует кластер в который интенсивно пишут? Раз 50-100 в минуту я имею в виду.
Попробуйте стопануть одну реплику, у меня на второй прекражаються мержи и через 2-3-5 минут привет исключение о медленных мержах (притом такое поведение даже если все вьюхи убрать)
Может есть какая-то настройка чтобы оставшаяся в живых реплика не прекращала мержить?
Таблица причины почему мержи не идут полна такого
│ MetricsFree │ Not merging into part c1d05dd4c541bdc14737a222ad2b09b1_1147_1561_155 because part c1d05dd4c541bdc14737a222ad2b09b1_1147_1560_154 is not ready yet (log entry for that part is being processed). │ Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused, e.what() = Connection refused
и такого
│ Metrics │ Not merging into part babccf0c7ab1c3af920fb405ca79c901_36891_36895_1 because part babccf0c7ab1c3af920fb405ca79c901_36892_36892_0 is not ready yet (log entry for that part is being processed). │ Code: 234, e.displayText() = DB::Exception: No active replica has part babccf0c7ab1c3af920fb405ca79c901_36891_36895_1 or covering part, e.what() = DB::Exception │
Потеря реплики это обычный сценарии, верно?
А он поломан. Не критично?


Kirill
01.08.2018
09:16:58
Кто-нибудь использует кластер в который интенсивно пишут? Раз 50-100 в минуту я имею в виду.
Попробуйте стопануть одну реплику, у меня на второй прекражаються мержи и через 2-3-5 минут привет исключение о медленных мержах (притом такое поведение даже если все вьюхи убрать)
Может есть какая-то настройка чтобы оставшаяся в живых реплика не прекращала мержить?
Таблица причины почему мержи не идут полна такого
│ MetricsFree │ Not merging into part c1d05dd4c541bdc14737a222ad2b09b1_1147_1561_155 because part c1d05dd4c541bdc14737a222ad2b09b1_1147_1560_154 is not ready yet (log entry for that part is being processed). │ Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused, e.what() = Connection refused
и такого
│ Metrics │ Not merging into part babccf0c7ab1c3af920fb405ca79c901_36891_36895_1 because part babccf0c7ab1c3af920fb405ca79c901_36892_36892_0 is not ready yet (log entry for that part is being processed). │ Code: 234, e.displayText() = DB::Exception: No active replica has part babccf0c7ab1c3af920fb405ca79c901_36891_36895_1 or covering part, e.what() = DB::Exception │
Потеря реплики это обычный сценарии, верно?
А он поломан. Не критично?
Пишите синхронно, чтоб данные были на обеих машинах, сейчас записи о данных в ZK есть, а на оставшейся машине их нет и взять ей неоткуда (смотрите insert_quorum).


Vladimir
01.08.2018
09:17:52
Если insert_quorum поставлю в 2 (2 реплики) то перестанет писать сразу же как я остановлю 1 реплику, верно?

Evgeny
01.08.2018
09:18:09
Подскажите, а имеет смысл вытаскивать в primary key поле eventDate если в WHERE оно фильтруется везде от начала месяца до конца? Будут ли использоваться оптимизации засечек при джоинах?

Kirill
01.08.2018
09:25:09

Станислав
01.08.2018
09:47:40
Господа, а где бы посмотреть принципы/пример заполнения дыр в time-series на уровне запросов? А то от всех моих вариантов начинают кровоточить глаза

Denis
01.08.2018
09:53:56

Kirill
01.08.2018
09:57:16

Станислав
01.08.2018
09:59:25

Google

Alex
01.08.2018
10:07:31
О! Спасибо! Не знал про system.numbers, извращался с range()
Я тоже :)
SELECT
arrayJoin(aligned).1 AS ts,
arrayJoin(aligned).2
FROM
(
WITH
groupArray((ts, value)) AS series,
toDateTime('2018-01-01 00:00:00') AS zero_time,
range(4) AS range,
3600 AS step,
arraySort(arrayMap(pos -> (zero_time + (step * pos), arrayFirst(t -> (t.1 = (zero_time + (step * pos))), series).2), range)) AS aligned
SELECT aligned
FROM timeserie
GROUP BY metric
)

Станислав
01.08.2018
10:08:41
Я тоже :)
SELECT
arrayJoin(aligned).1 AS ts,
arrayJoin(aligned).2
FROM
(
WITH
groupArray((ts, value)) AS series,
toDateTime('2018-01-01 00:00:00') AS zero_time,
range(4) AS range,
3600 AS step,
arraySort(arrayMap(pos -> (zero_time + (step * pos), arrayFirst(t -> (t.1 = (zero_time + (step * pos))), series).2), range)) AS aligned
SELECT aligned
FROM timeserie
GROUP BY metric
)
Во-во, а если еще добавить скользящее среднее, то при зачитывании вслух будет открываться портал в варп

Kirill
01.08.2018
10:09:10

Alex
01.08.2018
10:09:52

Станислав
01.08.2018
10:13:10

Denis
01.08.2018
10:16:57

Slava
01.08.2018
10:18:47
добрый день, скажите, возможно ли в будущем использовать удаление для distributed таблиц или иметь возможность на локальных таблицах делать ALTER TABLE DELETE ON CLUSTER test WHERE ...?

Wolf
01.08.2018
10:19:36

Slava
01.08.2018
10:19:55
условия по которому мы будем что-то удалять

Wolf
01.08.2018
10:20:12
так вы таблицу собираетесь удалять или что ?

Slava
01.08.2018
10:20:19
например, у нас есть distributed таблица, которая размазанная на x серверов
не удалять

Wolf
01.08.2018
10:20:23
вообще не очень понимаю какие там условия могут быть

Slava
01.08.2018
10:20:29
а удалять часть данных по критерию

Wolf
01.08.2018
10:20:42
в дистрибьютед таблице нет данных же

Slava
01.08.2018
10:20:50
смотрите, например, мы неправильно залили первый месяц
да это вьюха на локальные таблицы
смысл в том, чтобы не ходить на каждый сервер а сделать операцию через on cluster

Alex
01.08.2018
10:21:22

Wolf
01.08.2018
10:21:40
ну а зачем для этого нужна дистрибьютед , делайте онкластер на локальные

Google

Wolf
01.08.2018
10:21:49
зачем заходить при этом на каждый сервер тоже не понятно

Slava
01.08.2018
10:21:57
сейчас не поддерживается on cluster для удаления

Alex
01.08.2018
10:23:53
ON CLUSTER для ALTER DELETE должен поддерживаться

Wolf
01.08.2018
10:26:09

Slava
01.08.2018
10:26:57

Wolf
01.08.2018
10:27:11
Ну и делете наверно мне кажется тоже

Slava
01.08.2018
10:27:49
наверное синтаксис у меня неверный, спасибо

Sergey
01.08.2018
10:28:23
Привет всем. За неделю запутался, читая чат. У нас есть кластер из 2-х машин КХ и 3-х машин ZK. Есть ReplicatedMergeTree, на которую навесили MaterializedView с движком MergeTree. Если данные попали в ReplicatedMergeTree, есть ли гарантия, что они окажутся и в MaterializedView, если все машины живы? Я понимаю, что в случае вылета КХ или ZK последствия могут быть рандомными, но если без вылетов?

Kirill
01.08.2018
10:32:06

Sergey
01.08.2018
10:32:47
О. Кажется, именно это мы и продолбали. Спасибо. :)

Kirill
01.08.2018
10:33:26

Denis
01.08.2018
10:38:24
Спасибо
Привет всем. За неделю запутался, читая чат. У нас есть кластер из 2-х машин КХ и 3-х машин ZK. Есть ReplicatedMergeTree, на которую навесили MaterializedView с движком MergeTree. Если данные попали в ReplicatedMergeTree, есть ли гарантия, что они окажутся и в MaterializedView, если все машины живы? Я понимаю, что в случае вылета КХ или ZK последствия могут быть рандомными, но если без вылетов?
как-то странно, когда сделали 5 машин вместо 2, но при выходе из строя одной последствия рандомные. получается менее устойчиво, нет?

Sergey
01.08.2018
11:10:15

Дмитрий
01.08.2018
11:55:29
Привет всем, у меня тут на мой взгляд страшная ситуация, на 1 из шардов на репликах не совпадают данные. Смотрю логи ошибок вроде нет, может подскажите на что обратить внимание?

Yuran
01.08.2018
11:56:40
Насколько я понимаю, поскольку у ClickHouse асинхронная репликация, то при выпадании одной ноды КХ данных потеряется не слишком много (только то, что не успело доехать). А при выпадании ZK ноды вообще ничего страшного не должно происходить, потому что он использует Paxos (или какой-то другой протокол для распределенного консенсуса).
На практике, конечно, это всё стоит проверить :))

Дмитрий
01.08.2018
12:01:40
Спасибо, за ответ, ноя ничего не понял)) делать то что? Как понять на какой из реплик верные данные? Как их восстановить?

Stanislav
01.08.2018
12:03:12
На той, где их больше, насколько я понимаю

Denis
01.08.2018
12:03:34
А репликация через replicated.... таблицы или детская?

Дмитрий
01.08.2018
12:03:57
Replicated

Google

Wolf
01.08.2018
12:04:25

Дмитрий
01.08.2018
12:04:58
Да

Denis
01.08.2018
12:06:27
А как проверяли что не совпадает? Т.е. для всяких replacing и agregating резултат select count() может зависеть от того завершился merge или нет.

Дмитрий
01.08.2018
12:07:10
sum по основным столбцам

Denis
01.08.2018
12:08:23
и заливка остановлена? реплика видит данные с задержкой, если запрос sum идет 10 сек., будут разные результаты

Дмитрий
01.08.2018
12:08:39
Ну там значительно отличается
Ничего не стопил пока

Denis
01.08.2018
12:11:32
а что показывает select from system.parts про партции этой таблицы? на обоих репликах

Дмитрий
01.08.2018
12:14:37

Denis
01.08.2018
12:17:18
а replication_queue есть запросы на репликацию? странно это все

Дмитрий
01.08.2018
12:22:20

Andrey
01.08.2018
12:27:21
Трабла со вчерашнего вопроса про dns, спасибо! Надо обновиться

Дмитрий
01.08.2018
12:27:25

Denis
01.08.2018
12:27:48
ну значит реплика не может подключится к брату по http (9000) ?

Дмитрий
01.08.2018
12:28:01

Denis
01.08.2018
12:30:50
можно мониторить типа :
'rep_future_parts')
sql="select sum(value) from (select sum(future_parts) as value from system.replicas union all select toUInt64(0) as value)"
;;
'rep_parts_to_check')
sql="select sum(value) from (select sum(parts_to_check) as value from system.replicas union all select toUInt64(0) as value)"
;;
'rep_stalled')
sql="select sum(value) from (select count(*) as value from system.replication_queue where num_tries > 100 union all select toUInt64(0) as value)"
;;

Дмитрий
01.08.2018
12:32:05
Ок, спасибо)

Constantine
01.08.2018
13:52:13
Здравствуйте.
Подскажите пожалуйста,
Если гаснет нода zk follower - то clickhouse (если он подключен именно к этой ноде) теряет один пакет и переподключается.
Если гаснет нода zk leader то таблицы переходят в readonly до сообщения в логе ZooKeeper session has expired. Switching to a new session. (60 секунд до этого момента проходит). Что яч делаю не правильно. Подскажите пожалуйста.

Kirill
01.08.2018
13:57:10

Constantine
01.08.2018
13:58:33
Не хочется 60 секундного ридонли

Google

Wolf
01.08.2018
14:00:58
ну бывает раз в сто лет так что терпимо

Constantine
01.08.2018
14:06:44
А имеет смысл уменьшать zookeeper_session_expiration_check_period ? И чем это грозит?

Kirill
01.08.2018
15:06:16


Vladimir
01.08.2018
15:56:22
Попробовал "insert_quorum" как тут советовали.
В логах каждого сервера некоторое кол-во таких сообщении валится
2018.08.01 15:46:30.776377 [ 420 ] <Error> MetricsDistributed.Distributed.DirectoryMonitor: Code: 286, e.displayText() = DB::Exception: Received from 10.1.2.57:9000. DB::Exception: Quorum for previous write has not been satisfied yet. Status: version: 1
2018.08.01 15:47:21.476415 [ 421 ] <Error> MetricsDistributed.Distributed.DirectoryMonitor: Code: 286, e.displayText() = DB::Exception: Received from 10.1.1.183:9000. DB::Exception: Quorum for previous write has not been satisfied yet. Status: version: 1
2018.08.01 15:47:41.518425 [ 5462 ] <Error> executeQuery: Code: 286, e.displayText() = DB::Exception: Another quorum insert has been already started, e.what() = DB::Exception (from 10.1.1.249:52124) (in query: INSERT INTO MetricsDistributed FORMAT TabSeparated), Stack trace:
2018.08.01 15:47:41.578393 [ 5462 ] <Error> HTTPHandler: Code: 286, e.displayText() = DB::Exception: Another quorum insert has been already started, e.what() = DB::Exception, Stack trace:
И самое непоиятно что появились опять дуюликаты хотя вьюх нету
В коде нашел что транзакция откатывается но откуда тогда дубликаты?
else if (multi_code == ZooKeeperImpl::ZooKeeper::ZNODEEXISTS && failed_op_path == quorum_info.status_path)
{
transaction.rollback();
throw Exception("Another quorum insert has been already started", ErrorCodes::UNSATISFIED_QUORUM_FOR_PREVIOUS_WRITE);
}
Сообщения фиг с ними, задержки сети или еще что-нибудь в растпеделенной системе пусть будут
Но эти дубликаты в различной вариации меня немного измотали


Denis
01.08.2018
16:01:10
>Но эти дубликаты в различной вариации меня немного измотали
я вот читаю который день про ваши дубликаты, и вот чего не могу понять,
вы же сами пишете по нескольку раз, при ошибке, поэтому дубликаты, правильно?

Vladimir
01.08.2018
16:02:35
Да, а как иначе если батч не прошел?
Replaced движок это борьба с последствиями
Одна причина это вьюхи, от них со скрипом отказались и выкручиваемся без них