
Александр
05.10.2018
12:56:11
Если четко задавать where column = 'a', то все ок работает. А если с подзапросами, то там "побойся бога" случается

Wolf
05.10.2018
12:57:13
ну как бы вам эту проблему и решать надо, а не бороться с мутациями, из того что вы описали все в мутациях работает как задумывали разработчики

Evgenii
05.10.2018
13:51:03
КХ 18.12.13 настройка log_queries=1 еще действующая? Таблица не создается, в лог запросы при включенном трейс уровне пишуться но обрезаются, например в инсерте после value.

Google

Vsevolod
05.10.2018
14:05:43
@proller self-signed, похоже, работает (хотя там возникает другая проблема - 'DB::Exception: Cannot insert into table in readonly mode')
зачем distributed вообще write access - я ей задал read-only юзера, так как у меня нет реплик, только шарды

Alexey
05.10.2018
14:07:33
Проблема в том, что подзапрос (в выражении для ALTER DELETE/UPDATE) выполняется много раз - на каждый блок. Насколько я помню, это уже исправили, но совсем недавно. И в релизе пока есть проблемы.


Evgenii
05.10.2018
14:12:05

Tatiana
05.10.2018
14:27:34

Denis
05.10.2018
14:30:01
Я думаю что нельзя удалять таким образом (WHERE GLOBAL NOT IN).
Если вторая таблица меняется, и реплики выполняют мутацию в разное время, то результат мутации будет разный.
Т.е. надо select-м найти "id" всех записей которые надо удалить, сложить в какую-то промежуточную таблицу и разложить эту таблицу на все реплики, и потом удалять where in

Tatiana
05.10.2018
14:32:00
Я тоже как-то раз запустила мутацию, которая делала подзапрос к таблице, которая была только на одной реплике.
Когда я поняла, что так работать не будет, я создала такую таблицу на всех нодах, и мутация прошла успешно


Vsevolod
05.10.2018
14:43:29
@proller в общем, какая-то мистика. с нормальным сертификатом вылазит аж две разных ошибки:
2018.10.05 14:41:17.945163 [ 25 ] <Error> ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: SSL Exception: error:14037418:SSL routines:ACCEPT_SR_KEY_EXCH:tlsv1 alert unknown ca: while r
eading from socket (10.7.93.133:45618), e.what() = DB::NetException, Stack trace:
и
2018.10.05 14:41:17.945222 [ 22 ] <Error> D.Distributed.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: SSL Exception: error:14007086:SSL routines:CONNECT_CR_CERT:certificate verify fai
led: (10.7.93.133:9440), e.what() = DB::NetException, Stack trace:
сертификат много раз перепроверил - все отлично. в бандле на ca сертификате стоит ca, на серверном сертификате все x509 атрибуты в порядке

Google

Vsevolod
05.10.2018
14:44:41
я уже хз, куда копать. код этого проклятого поко посмотрел - тоже все должно быть в норме, ну и в client стоит
<verificationMode>none</verificationMode>
<invalidCertificateHandler>
<name>AcceptCertificateHandler</name>
</invalidCertificateHandler>

prll
05.10.2018
14:46:00
может он бандл не умеет прочитать?

Vsevolod
05.10.2018
14:48:21
https://github.com/pocoproject/poco/blob/381b868e772fe73e1d66d18f34433d2ddac1d5e6/NetSSL_OpenSSL/src/Context.cpp#L126
ssl это делать точно умеет
openssl
https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_load_verify_locations.html
If CAfile is not NULL, it points to a file of CA certificates in PEM format. The file can contain several CA certificates identified by ...
сейчас еще попробую отдампить tls сессию
но вряд ли что-то, кроме алертов, там будет вид о

Marsel
05.10.2018
14:51:22

Alexey
05.10.2018
14:52:45
Если партиционирование по месяцам, то ключ партиционирования тоже будет использоваться, но менее эффективно.

Marsel
05.10.2018
14:55:54
Круто! Спасибо)


Гурам
05.10.2018
15:44:22
Всем привет. Я уже спрашивал похожий вопрос, но появились новые факты. Изначально вопрос звучал так, что с некоторых пор клик начал ругаться на вставках данных от 50к до 150к за раз. Данные вставлялись в формате JSONEachRow, на что клик ругался:
Code: 117, e.displayText() = DB::Exception: Unknown field found while parsing JSONEachRow format: ...., e.what() = DB::Exception
То что битый JSON было исключено сразу т.к. разбивая пачку, допустим по 10к - все шло на ура. Здесь мне предложили использовать настройку "max_query_size" (хотя ранее такие объемы вставлялись и без нее), в большинстве случаев данная настройка помогла. Но одна пачка все никак не хотела вставляться (которая все также по 10к вставлялась нормально). Пробовал по разному и последнее ради интереса решил просто взять перемешать массив вставляемых JSON-строк перед вставкой и все сработало. Кто с таким сталкивался, может я вообще не в ту сторону копаю?
версия 18.14.1

Denis
05.10.2018
15:55:13


Гурам
05.10.2018
16:13:28

Vsevolod
05.10.2018
16:14:27
@proller я не знаю, что изменилось, но оно после self signed сертификатов ВНЕЗАПНО заработало и с нормальными. Теперь только срет непрерывно вот таким:
2018.10.05 17:09:30.610370 [ 25 ] {6896c461-9a1e-47d9-b9d2-01049734fd20} <Error> executeQuery: Code: 164, e.displayText() = DB::Exception: Cannot insert into table in readonly mode, e.what() = DB::Excep
tion (from 10.7.93.133:47256) (in query: INSERT INTO test.A VALUES), Stack trace:
и counter part:
2018.10.05 17:09:58.965025 [ 24 ] <Error> D.Distributed.DirectoryMonitor: Code: 164, e.displayText() = DB::Exception: Received from 10.7.93.133:9440. DB::Exception: Cannot insert into table in readonly
mode. Stack trace:
причем, на обоих шардах (шарды содержат ровно одну реплику)
@proller есть идеи, отчего и почему данный подземный стук происходит?

Wolf
05.10.2018
16:16:18
ну видимо отвалился зк

Tatiana
05.10.2018
16:22:39

Google

Vsevolod
05.10.2018
16:24:22
ну, я не очень понимаю, зачем distributed пользователю read-write доступ, но я его для иксперемента разрешил
zk нет

Wolf
05.10.2018
16:43:18

Vsevolod
05.10.2018
16:43:48
мне не нужно, что-то писать через distributed
по-моему, юзкейс вполне очевидный

Wolf
05.10.2018
16:45:47
Ну у вас в ошибке Кен нот инсерт, видимо все таки пишите

Vsevolod
05.10.2018
16:46:47
нет, не пишу
а если и писал, то это было давно и неправда
а в логи все это срется без перерыва каждые 5 секунд

Tatiana
05.10.2018
16:49:49

Vsevolod
05.10.2018
17:13:51
о как, спасибо
хотя все равно непонятно, почему ей это с read-write юзером не удается

prll
05.10.2018
17:18:08
Cannot insert into table in readonly mode - значит что у юзера readonly=1
тот сервер который ругается - что у него в логе про этот запрос, от какого он юзера?

Vsevolod
05.10.2018
17:31:53
этого он не сообщил

Tatiana
05.10.2018
17:32:32

Vsevolod
05.10.2018
17:33:05
конфиги на шардах идентичные
профиль пользователя distributed read-write

prll
05.10.2018
17:34:40
если в executeQuery: (from .... не написало юзера - значит юзер=default

Kirill
05.10.2018
18:09:19
а кто может посоветовать клиент для КХ питоновский ?

Google

Kirill
05.10.2018
18:10:10
INSERT INTO test ( Field1, Field2, EventDate, Field3, Field4, Value, EntryType ) VALUES ( UUIDStringToNum('11111111-1111-1111-1111-111111111111'), ‘a’, '2018-08-01', ‘b’, ‘c’, 42, ‘c' )
вот такой запрос валится https://github.com/mymarilyn/clickhouse-driver

Denis
05.10.2018
18:12:27
INSERT INTO test ( Field1, Field2, EventDate, Field3, Field4, Value, EntryType ) VALUES ( UUIDStringToNum('11111111-1111-1111-1111-111111111111'), ‘a’, '2018-08-01', ‘b’, ‘c’, 42, ‘c' )
амперсанды же разные в запросе ‘ '

Kirill
05.10.2018
18:13:46
это уже телеграм
простите, что не уточнил
сгенерированный руками запрос выполненный в консольном clickhouse-client все корректно вставляет
https://github.com/cloudflare/sqlalchemy-clickhouse
вот это работает

Alexey
05.10.2018
18:42:05
вот такой запрос валится https://github.com/mymarilyn/clickhouse-driver
Этот драйвер использует Native интерфейс, передающий на сервер готовые данные для вставки, разложенные по столбцам и сжатые. Что конечно очень круто и эффективно :)
Но из-за этого получается так, что если в запросе INSERT присутствуют выражения (а не просто готовые значения), то их надо сначала выполнить, на клиенте. И если клиент не содержит в себе маленький ClickHouse, то он не может это сделать.

Kirill
05.10.2018
18:45:53
спасибо
понятно

Alexey
05.10.2018
18:48:02
UUID должно быть можно указывать просто в одинарных кавычках (если драйвер поддерживает UUID).

Daniel
06.10.2018
10:05:25
Привет, коллеги!
Что это такое, надо ли бояться?
2018.10.06 13:03:16.878937 [ 43 ] <Warning> clicks.transactions_2018_10 (ReplicatedMergeTreePartCheckThread): Checking part 20181001_20181001_73541_73541_0
2018.10.06 13:03:16.878946 [ 43 ] <Warning> clicks.transactions_2018_10 (ReplicatedMergeTreePartCheckThread): We have part 20181001_20181001_73472_73665_3 covering part 20181001_2018100
1_73541_73541_0
И это счастье сопровождается...
ZooKeeperImpl::Exception: Transaction failed at op #0 (No node)

molo4ko
06.10.2018
15:25:53
У меня такое было, чаще всего само проходит. Долго наблюдаете?

Wolf
06.10.2018
15:27:47
Логи

Daniel
06.10.2018
16:16:07

molo4ko
06.10.2018
16:16:40
мне помогало еще детачить проблемный партишен

Daniel
06.10.2018
16:31:31
странное решение) хотя если были реплики, то наверное нормальное. у нас пока нет.