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

Vadim
08.08.2018
07:12:44


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с и кх? Кх как бэкэнд в замену постгри

Diomid
08.08.2018
07:25:20

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

Vasilij
08.08.2018
07:25:36

Dmitriy
08.08.2018
07:25:52

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

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

mold
08.08.2018
07:26:43

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

Google

Lamobot
08.08.2018
07:28:46

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

Vasilij
08.08.2018
07:28:59

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

mold
08.08.2018
07:30:08

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

mold
08.08.2018
07:32:04

Kirill
08.08.2018
07:32:53

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

Sergey
08.08.2018
07:34:08

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

Vasilij
08.08.2018
07:35:48

Kirill
08.08.2018
07:36:01

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
на отчетах на данных с разных кластеров данные совпадают

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

Google

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

Dmitry
08.08.2018
07:43:36

Kirill
08.08.2018
07:44:22

Dmitry
08.08.2018
07:45:32

Kirill
08.08.2018
07:45:56

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

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

Kirill
08.08.2018
08:27:04

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

Kirill
08.08.2018
08:31:29

Vadim
08.08.2018
08:55:04

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


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


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)?

Kirill
08.08.2018
11:30:04

Vsevolod
08.08.2018
11:42:30

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

Wolf
08.08.2018
12:08:12

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 включен