184 похожих чатов

Привет! При подобного рода dml: update id = 1 where dt

> 'YYYY-MM-DD' and dt < 'YYYY-MM-DD'
в system.mutations в столбце latest_fail_reason вижу следующее:
'Code: 226. DB::Exception: No length.null.mrk2 file checksum for column length in part /var/lib/clickhouse/data/db/table/tmp_clone_20210730_30090_30777_4_30787/. (NO_FILE_IN_DATA_PART) (version 22.1.2.2 (official build))'
И, конечно, все застряло. Куда смотреть? Что пошло не так?
вижу есть файл в директории который называется length.mrk2, но length.null.mrk2 там нет

35 ответов

8 просмотров
Nik S.- Автор вопроса

Ни у кого нет идей? Еще увидел, что колонка length только недавно была изменена на nullable, может старые парты просто не обновились и не содержат файла length.null.mrk2?

ну , такое ощущение что у вас были ALTER TABLE... которые не завершились... видимо была нормальная колонка, а вы сделали Nullable и не все парты успели слиться... а ваша мутация про этот ALTER ничего не знает

Это баг в 22.1 он давно исправлен,ьеще в январе. Обновляйтесь сразу до 22.3.9

Nik S.- Автор вопроса
Denny [Altinity]
Это баг в 22.1 он давно исправлен,ьеще в январе. О...

Ах! Понял, а есть ссылка? Начальству показать.

Привет. В итоге починилось при обновлении? Или может быть нашелся другой вариант? У меня такая же проблема) Мутацию я удалил, но в replication_queue эта штука так же осталась.

Slach [altinity]
ну , такое ощущение что у вас были ALTER TABLE... ...

Привет. А почему может replcation_queue оставаться висеть с ошибками после удаления мутаций? В моем случае вот такая. Хочу разобраться на что это может повлиять вообще 🙂 ``` Code: 226. DB::Exception: No widgets_metrics%2Erender_time.null.mrk2 file checksum for column widgets_metrics.render_time in part /ch_data1/clickhouse/store/6f1/6f124df3-0d12-4168-8fe3-5d1cbf61ebf9/tmp_clone_20220720_0_3810_63_3814/. (NO_FILE_IN_DATA_PART) (version 22.3.2.1) ```

Alex Sandakov
Привет. А почему может replcation_queue оставаться...

удаление мутации данных на репликацию никак не влияет у вас мутация или изменение структуры таблицы через ALTER TABLE?

Alex Sandakov
ага. делал через ALTER

что ага? первое или второе? мутация данных тоже через ALTER TABLE Делается

Slach [altinity]
что ага? первое или второе? мутация данных тоже ч...

изменение структуры таблицы делалась через ALTER TABLE. Мутация руками не создавалась.

Alex Sandakov
изменение структуры таблицы делалась через ALTER T...

тогда перестаньте называть это мутацией это DDL ок. что значит "удаление" вы делали ALTER TABLE .. ON CLUSTER ? а потом внезапно почистили zookeeper?

Slach [altinity]
тогда перестаньте называть это мутацией это DDL ...

к сожалению не знаю был ли указан ON CLUSTER (скорее всего да). После выполнения DDL я обнаружил созданную мутацию)) Zookeeper вообще не трогал. Просто выполнялся DDL

Alex Sandakov
к сожалению не знаю был ли указан ON CLUSTER (скор...

а что тогда значит "удаление" вы сделали KILL QUERY ?

Slach [altinity]
а что тогда значит "удаление" вы сделали KILL QUER...

Я сделал KILL MUTATION where mutation_id = ***. Сделал это потому что у мутации не было is_done, а в replication_queue были ошибки.

Slach [altinity]
а что тогда значит "удаление" вы сделали KILL QUER...

и сейчас такое состояние, что мутации нет, а replication_queue не пустое с ошибками, которые были от command в удаленной мутации.Вот и не оч. понимаю почему при удалении мутации не очистилась replication_queue и должна ли вообще.

Slach [altinity]
а что тогда значит "удаление" вы сделали KILL QUER...

при чем там ошибки по нескольким партам (явно не по всем), которые не могу смерджиться по причине, которую указывал чуть выше.

Alex Sandakov
Я сделал KILL MUTATION where mutation_id = ***. Сд...

вы сказали что у вас был ALTER TABLE изменение СХЕМЫ данных а не ALTER TABLE ... UPDATE... который мутация так что у вас было и что вы сделали? как мутация в system.mutations выглядела? какая команда была?

Slach [altinity]
вы сказали что у вас был ALTER TABLE изменение СХЕ...

Было сделано нечто ALTER TABLE table MODIFY COLUMN render_time Array(Nullable(UInt16)) (Только не знаю, как и сказал, было ли ON CLUSTER) В мутации была command = MODIFY COLUMN render_time Array(Nullable(UInt16)) Т.е. раньше эта колонка была Array(UInt16)

Alex Sandakov
Было сделано нечто ALTER TABLE table MODIFY COLUM...

Немного не в тему - а зачем делать nullable столбец типа UInt16? Не лучше было бы сделать его просто Int16 DEFAULT -1 ?

Alex Sandakov
Было сделано нечто ALTER TABLE table MODIFY COLUM...

ок. понял... меняем тип, да это мутация с конвертацией данных когда вы ее кильнули, часть партов у вас стала с новым типом , часть со старым... и файл .null.mrk2 не создался... а на другой реплике создался.. советую заново мутацию запустить... вообще Nullable типы медленные луше бы вам просто 0 или -1 в качестве null использовать...

Slach [altinity]
ок. понял... меняем тип, да это мутация с конверта...

ага. отличная идея. 0 к сожалению по бизнес логике не подходит, а вот -1

Slach [altinity]
ок. понял... меняем тип, да это мутация с конверта...

ок. а нужно ли что-то сделать с replication_queue? А то там до сих пор висят некоторые проблемные парты.

Алексей Фирсов
Немного не в тему - а зачем делать nullable столбе...

вот только когда начнешь считать всякие avg и quantile по render_time, надо не забывать потом исключать эти -1 ) -1 на dimensions хорош, на метриках — чреват )

Alex Sandakov
ок. а нужно ли что-то сделать с replication_queue?...

они уйдут когда мутация завершиться, потому что станут Inactive

ivan
вот только когда начнешь считать всякие avg и quan...

У меня, к счастью, агрегации простые - sum, count )

Алексей Фирсов
У меня, к счастью, агрегации простые - sum, count ...

sum по массиву? что кстати мешает для массива просто пустой массив хранить ? вместо Null ?

Slach [altinity]
sum по массиву? что кстати мешает для массива про...

Для массивов мы храним тоже []. А суммы по массиву считаем как length после arrayFilter, если надо.

Slach [altinity]
они уйдут когда мутация завершиться, потому что ст...

я так понимаю, что лучше не использовать ON CLUSTER при изменении схемы данных, а лучше накатывать на каждой реплике каждого шарда?

Alex Sandakov
я так понимаю, что лучше не использовать ON CLUSTE...

как раз лучше наоборот ON CLUSTER это мое IMHO просто надо понимать как он работает почитайте про distributed_ddl

Alex Sandakov
благодарю.

ну и не надо увлекаться... есть люди которые фигачат ALTER TABLE ...ON CLUSTER ADD COLUMN IF NOT EXISTS ... каждую секунду... чем убивают всю производительность

Nik S.- Автор вопроса
Alex Sandakov
Привет. В итоге починилось при обновлении? Или мож...

В итоге пришлось очистить таблицу и заново всё перезаливать. А потом апгрейд сделали. В моменте другого решения не было, надо было что-то предпринимать.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта