@clickhouse_ru

Страница 614 из 723
Diomid
08.08.2018
06:20:44
Подскажите пожалуйста по поводу рабочей практики бекапа данных КХ. Кто как делает?

Vadim
08.08.2018
07:12:44
Привет всем! Кто подскажет, что необходимо сделать после изменения схемы хранения, чтобы КХ перезста смердживать данные до 1 минуты, конфиг такой: <pattern> <regexp>^DevOps\.clickhouse\.test\.</regexp> <function>avg</function> <retention> <age>0</age> <precision>5</precision> </retention> </pattern> а данные: SELECT Timestamp, Value FROM graphite WHERE Path = 'DevOps.clickhouse.test.testval' ORDER BY Timestamp ASC ┌──Timestamp─┬──────────────Value─┐ │ 1533703153 │ 6 │ │ 1533703199 │ 13.5 │ │ 1533703259 │ 34.333333333333336 │ │ 1533703269 │ 43.5 │ │ 1533703319 │ 90.5 │ │ 1533703342 │ 116.16666666666667 │ │ 1533703439 │ 163.64285714285714 │ │ 1533703492 │ 219 │ │ 1533703619 │ 257 │ │ 1533703679 │ 321.5 │ │ 1533703739 │ 375 │ │ 1533703784 │ 415.5263157894737 │ │ 1533703799 │ 433 │ │ 1533703859 │ 492 │ │ 1533703919 │ 522 │ │ 1533703979 │ 577.5 │ │ 1533704039 │ 640.5 │ │ 1533704099 │ 694.5 │ │ 1533704119 │ 714 │ │ 1533704219 │ 746.5 │ │ 1533704246 │ 767.0357142857143 │ │ 1533704279 │ 801 │ │ 1533704339 │ 856.90625 │ │ 1533704395 │ 911.5 │ │ 1533704459 │ 922 │ │ 1533704519 │ 981.5 │ │ 1533704579 │ 1036.5 │ │ 1533704623 │ 1078.1818181818182 │ │ 1533704639 │ 1092.5 │ │ 1533704642 │ 1102 │ │ 1533704663 │ 1113.5 │ │ 1533704679 │ 1131.5 │ └────────────┴────────────────────┘ шлю каждую секунду
Настройки в отжельном xml-файле. Он просто не действует. Как заставить КХ брать настройки хранения из отдельного файла? пробовал его и <include_from> и складывать в conf.d рядом с config.xml

Dmitriy
08.08.2018
07:19:27
даже, если мы представим, что мы сняли бекап в ~30ТБ, то время восстановления будет неприемлимо

Google
Diomid
08.08.2018
07:22:20
мы пишем в 2 кластера
А каким образом в два кластера? Вы имеете в виду шардирование? Или каким-то определенным образом данные перегоняете?

Dmitriy
08.08.2018
07:22:34
я имею ввиду 2 кластера отдельных

пишем в очередь, оттуда кладется в 2 очереди выходные. из выходных уже пишется в СН соблюдая очередность создания файлов

mold
08.08.2018
07:24:42
Доброго времени суток! Господа кто нибудь связывал 1с и кх? Кх как бэкэнд в замену постгри

Lamobot
08.08.2018
07:25:24
По-моему, бэкапы это несколько другое - типа хранения данных на некоторый момент времени в прошлом. Чтобы в случае непреднамеренной порчи можно было восстановиться.

Lamobot
08.08.2018
07:25:56
В случае косяка, у вас данные попортятся в двух кластерах

Dmitriy
08.08.2018
07:26:38
партиции по суткам. их можно дропнуть и перезалить

mold
08.08.2018
07:26:43
КХ для этого не предназначен, ИМХО.
Просто было интересно, то postgres маленько не доставляет (

Dmitriy
08.08.2018
07:27:52
файлы после обработки переезжают в папку processed и там живут несколько суток, так что можно все выправить

если что-то случится дропаем партиции и перекладываем файлы во входную очередь

Google
Lamobot
08.08.2018
07:28:46
файлы после обработки переезжают в папку processed и там живут несколько суток, так что можно все выправить
Тогда зачем два кластера? Когда есть стандартная репликация, которая делает то же самое, по сути

Dmitriy
08.08.2018
07:28:55
что касается обновлений, то обновляются они раздельно и живут на разных версиях

Vasilij
08.08.2018
07:28:59
Просто было интересно, то postgres маленько не доставляет (
postgres/mssql/oracle и КХ - это две принципиально разные парадигмы работы с данными. Ну не впихнешь 1С в колоночную аналитическую базу, как не старайся. Например в КХ нет UPDATE, это вас не смущает? :)

Dmitriy
08.08.2018
07:29:27
мы живем на арендованных серверах. там часто вылетают 2 диска из рейда 1 или было 3 диска из рейда 6

если такое происходит на ноде, ее надо переливать, а интерфейс зачастую 1 в таких серверах

Vasilij
08.08.2018
07:31:53
Смущает)
И ещё много чего нет. Вот тут, например, хорошая статья (пусть и немного устаревшая): https://felixit.blog/2017/07/04/clickhouse-zachem/

Kirill
08.08.2018
07:32:53
партиции по суткам. их можно дропнуть и перезалить
Тогда нафига вам эти проблемы с 2-я разными кластерами, сделайте реплику и храните сырые данные для восстановления последних данных, для всего остального FREEZE PARTITION.

Dmitriy
08.08.2018
07:34:06
у нас нету проблем с 2 кластерами

Dmitriy
08.08.2018
07:34:32
еще решается вот такая проблема - "небыло печали - апдейтов накачали"

Vasilij
08.08.2018
07:35:48
Статья устарела, я осенью обновлю её. :)
О, так это вы мой любимый автор в IT :)

Kirill
08.08.2018
07:36:01
у нас нету проблем с 2 кластерами
У вас есть 2-а кластера в неизвестном относительно друг-друга состоянии, а так да, все норм)

Sergey
08.08.2018
07:36:06
Тоже себя люблю, спасибо. :)

Dmitriy
08.08.2018
07:36:22
очереди мониторятся и есть тулл для отслеживания консистентности

Diomid
08.08.2018
07:37:28
очереди мониторятся и есть тулл для отслеживания консистентности
А вот тут можно попросить подробнее? Чем и как?

Dmitriy
08.08.2018
07:37:59
на отчетах на данных с разных кластеров данные совпадают

А вот тут можно попросить подробнее? Чем и как?
если честно, то я не знаю. я девопс, тулл девелоперы запилили, но подозреваю что строятся 2 отчета и данные сравниваются

Diomid
08.08.2018
07:40:04
А мониторинг?

Google
Dmitriy
08.08.2018
07:41:21
очереди мониторятся просто - количество файлов в очередях

по поводу тула - берутся данные почасовые и сравниваются

Dmitry
08.08.2018
07:45:32
Возьмите PostgreSQL ;)
Есть выбор либо MSSQL через промежуточный API либо отдельный сервер с КХ )

Dmitry
08.08.2018
07:46:46
Возможно, но промежуточный API, в текущей реализации, - нет

Vadim
08.08.2018
07:57:29
Схему прореживания (graphite_rollup) можно как-то исменить без перезагрузки сервера ?

Vadim
08.08.2018
08:27:37
Спасибо. А инклюдить можно ее ?

Kirill
08.08.2018
08:31:29
Спасибо. А инклюдить можно ее ?
Там все можно инклудить, попробуйте, например, <graphite_rollup>conf.d/graphite_rollup.xml</graphite_rollup>

Mike
08.08.2018
09:11:32
Коллеги, добрый день, обновили тут кластер до 18.6.0 - отвалились все словари из постгреса через ODBC. Ошибку выдал следующую - https://pastebin.com/SxdiCPML . Я что-то упустил в чендж логе?

Kirill
08.08.2018
09:12:19
Так он проигнорировал настройки.
<graphite_rollup_example>conf.d/graphite_rollup_example.xml</graphite_rollup_example> В /etc/clickhouse-server/conf.d/graphite_rollup_example.xml <?xml version="1.0"?> <yandex> <graphite_rollup_example> <pattern> <regexp>click_cost</regexp> <function>any</function> <retention> <age>0</age> <precision>3600</precision> </retention> <retention> <age>86400</age> <precision>60</precision> </retention> </pattern> <default> <function>max</function> <retention> <age>0</age> <precision>60</precision> </retention> <retention> <age>3600</age> <precision>300</precision> </retention> <retention> <age>86400</age> <precision>3600</precision> </retention> </default> </graphite_rollup_example> </yandex>

Можно посмотреть /etc/clickhouse-server/config-preprocessed.xml он там заменит секцию graphite_rollup_example на ту что в conf.d

Mike
08.08.2018
09:23:37
https://github.com/yandex/ClickHouse/issues/2806
Благодарю - не додумался баги на гитхабе посмотреть. Буду ждать резолва тогда.

Vadim
08.08.2018
09:59:44
Недавно обновились на версию 18.5.1-1el7 Сегодня посыпалось: ] <Error> default.graphite (StorageReplicatedMergeTree): Code: 228, e.displayText() = DB::Exception: Unexpected uncompressed size of file Date.bin in data part, e.what() = DB::Exception. Data after merge is not byte-identical to data on another replicas. There could be several reasons: 1. Using newer version of compression library after server update. 2. Using another compression method. 3. Non-deterministic compression algorithm (highly unlikely). 4. Non-deterministic merge algorithm due to logical error in code. 5. Data corruption in memory due to bug in code. 6. Data corruption in memory due to hardware issue. 7. Manual modification of source data after server startup. 8. Manual modification of checksums stored in ZooKeeper. We will download merged part from replica to force byte-identical result.

Mike
08.08.2018
10:05:09
Откатиться чтоли с 18.хх пока не поздно :(

Google
Kirill
08.08.2018
10:07:28
Просто нужно иметь стейджинг и на нем играться; повезло с версией - выкатываем в продакшен )

Mike
08.08.2018
10:09:03
тут согласен

Vadim
08.08.2018
10:11:13
откатился на 1.1.54390 , ошибка не ушла

так проявилось через дня 3

и на стейджинге раскатано было

Kirill
08.08.2018
11:08:38
откатился на 1.1.54390 , ошибка не ушла
Обычно данные кораптятся только в одну сторону и откатом версии тут не помочь. У вас конфиг сжатия на репликах одинаковый, а то мало ли одна жмет lz4, другая zstd. Или реплики были разных версий и чудили.

Александр
08.08.2018
11:11:29
Добрый день. У меня падает клиент. gdb говорит это: mnstat19.luxup.ru :) show tables SHOW TABLES Program received signal SIGILL, Illegal instruction. 0x0000000005132ae4 in DB::PrettyBlockOutputStream::calculateWidths(DB::Block const&, std::vector<DB::PODArray<unsigned long, 4096ul, Allocator<false>, 0ul>, std::allocator<DB::PODArray<unsigned long, 4096ul, Allocator<false>, 0ul> > >&, DB::PODArray<unsigned long, 4096ul, Allocator<false>, 0ul>&, DB::PODArray<unsigned long, 4096ul, Allocator<false>, 0ul>&, DB::FormatSettings const&) () (gdb)

как я понимаю разработчики кидают эксепшн - но ничего не пишут чтобы понять причину

клиент свежий из репозитория. на другой машине такой же клиент работает

Vsevolod
08.08.2018
11:14:36
cat /proc/cpuinfo | fgrep sse4_2 | uniq

Александр
08.08.2018
11:15:41
а разве клиенту это нужно ?

sse4_2 эта машине не поддерживает - но клиент вроде в этом не должен нуждаться

Tima
08.08.2018
11:18:09
sse4_2 эта машине не поддерживает - но клиент вроде в этом не должен нуждаться
У клиента и сервера бинарник один. Параметры запуска разные

Vadim
08.08.2018
11:22:31
Обычно данные кораптятся только в одну сторону и откатом версии тут не помочь. У вас конфиг сжатия на репликах одинаковый, а то мало ли одна жмет lz4, другая zstd. Или реплики были разных версий и чудили.
Да, какое-то время были разные версии на репликах. Сейчас 2я пишет: <Error> default.graphite (StorageReplicatedMergeTree): Code: 40, e.displayText() = DB::Exception: Checksums of parts don't match: hash of uncompressed files doesn't match, uncompressed hash of compressed files doesn't match, e.what() = DB::Exception. Data after merge is not byte-identical to data on another replicas. There could be several reasons: 1. Using newer version of compression library after server update. 2. Using another compression method. 3. Non-deterministic compression algorithm (highly unlikely). 4. Non-deterministic merge algorithm due to logical error in code. 5. Data corruption in memory due to bug in code. 6. Data corruption in memory due to hardware issue. 7. Manual modification of source data after server startup. 8. Manual modification of checksums stored in ZooKeeper. We will download merged part from replica to force byte-identical result.

Решено перналить ее с первой, так как при ее остановке первая перестала писать ошибку.

Vasilij
08.08.2018
11:28:51
Аналогичная ошибка, встречалась уже не первый раз, и ругается всегда на поле с установленным значением DEAFULT (но может так совпало). Но, насколько я понимаю по тексту ошибки, КХ сам должен привести данные в соответствие (We will download merged part from replica to force byte-identical result)?

Vsevolod
08.08.2018
11:42:30
sse4_2 эта машине не поддерживает - но клиент вроде в этом не должен нуждаться
если собирать все с -march=sse4.2, то эти инструкции будут везде. сомневаюсь, что у клиента какие-то особые флаги сборки

prll
08.08.2018
12:01:50
можно собрать всё без sse, в чате нужная строка запуска сборки уже проскакивала

Google
Vsevolod
08.08.2018
12:08:40
гм, а есть ли способ передать через http интерфейс два запроса, скажем, create table + insert в нее же?

мда, похоже, мне со своей асинхронщиной придется выдумывать монады ?

Tima
08.08.2018
12:12:13
мда, похоже, мне со своей асинхронщиной придется выдумывать монады ?
Что у вас за асинхронщина и зачем что-то выдумывать?

Vsevolod
08.08.2018
12:12:47
ну, у меня асинхронные запросы к http. корутин я пока не завел, поэтому приходится по-старинке делать коллбэки

никакой гарантии, что запрос X1 уйдет раньше запроса X2 нет

поэтому инсерт может улететь до того, как мы создали таблицу

пришлось делать через жопу ? https://github.com/vstakhov/rspamd/blob/master/src/plugins/lua/clickhouse.lua#L746

Victor
08.08.2018
13:06:01
жопа тоже интерфейс ¯\_(ツ)_/¯

antuan
08.08.2018
13:06:58
жопа тоже интерфейс ¯\_(ツ)_/¯
какая глубокая мысль

Robert
08.08.2018
14:20:19
Робяты, вопрос. Как может так оказаться, что при создании таблицы с таким движком, в ней хранится две записи.

version UInt64 ) Engine = ReplacingMergeTree(version) ORDER BY (id);

попали они туда через INSERT понятное дело. Есть два подозрения. Или в одном пачке пришли сразу. Или при наличии одинакового version, одна запись не убирается?

Vsevolod
08.08.2018
14:31:01
после альтера перестали работать запросы: DB::Exception: Position 2 is out of bound in Block::safeGetByPosition(), max position = 0, или DB::Exception: Not found column IPNet in block. There are only columns: Date.

Date - старая колонка, хочу выбрать новую - IPNet

select IPNet from rspamd where Date = today();

при этом такой запрос отрабатывает: select IPNet from rspamd order by TS desc limit 10000

Ivan
08.08.2018
14:41:37
коллеги, подскажите, возможно ли использовать materialized столбцы для dictionary таблиц? при создании такой таблицы ошибки не возникает, однако при попытке доступа к столбцу получаю not found column

Vsevolod
08.08.2018
14:56:02
да, похоже на багу: select IPNet from rspamd where Date = today(); Code: 10. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Not found column IPNet in block. There are only columns: Date. чуть-чуть поменяем запрос на эквивалентный: select IPNet from rspamd where Date = today() and TS > '2018-08-08 00:00:00'; 1001327 rows in set. Elapsed: 0.060 sec. Processed 1.08 million rows, 15.69 MB (18.04 million rows/s., 261.29 MB/s.)

Denis
08.08.2018
15:06:29
забавно, я как раз сегодня наступил на Not found column ... in block https://github.com/yandex/ClickHouse/issues/2827

Vsevolod
08.08.2018
15:07:29
ага

Denis
08.08.2018
15:07:59
select * from rspamd where Date = today(); у вас наверное optimize move to prewhere включен

Страница 614 из 723