Size: a a a

ClickHouse не тормозит

2020 September 30

AS

Alexander Sapin in ClickHouse не тормозит
Andrey Bobelev
Первому шарду не помогали рестарты, но помог апгрейд c 20.6.6 до 20.6.7. Пробую мучать второй шард
Да это просто какая-нибудь мутация добежала или очередь тормозила и наконец обработалась.
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Alexander Sapin
Да это просто какая-нибудь мутация добежала или очередь тормозила и наконец обработалась.
Прошли сутки с начала проблемы, делал миниум два рестарта обоих реплик шарда
источник

AS

Alexander Sapin in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
🙂 запутываешь

1 >От версии этой ноды на реплике ничего не зависит, она не проверяется.
2 >, что то что записано в replica/metadata_version != version у ноды /metadata (глобальной для всех реплик)

1 это было про диск/файл что-ли ?
Есть нода /metadata -- на всю таблицу. Её версия нам важна, её мы сверим с /replica/metadata_version (это прям нода такая) при очередном альтере. Есть нода /replica/metadata на реплику. Её версия нам не важна (проверяется её содержимое на старте сервера).
источник

AS

Alexander Sapin in ClickHouse не тормозит
Andrey Bobelev
Первому шарду не помогали рестарты, но помог апгрейд c 20.6.6 до 20.6.7. Пробую мучать второй шард
Я надеюсь вы делаете SYSTEM RESTART REPLICA db.table, а не рестарт всего сервера?
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Alexander Sapin
Я надеюсь вы делаете SYSTEM RESTART REPLICA db.table, а не рестарт всего сервера?
Пробовал и то, и то
источник

AS

Alexander Sapin in ClickHouse не тормозит
Можете показать, что в ноде replica/metadata_version на проблемной реплике и какая version у ноды /metadata?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrey Bobelev
Конечно, мутаций нет
а вы ответили так потому что вы не используете мутации или потому что проверили select * from system.mutation where not is_done ?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
просто alter это тоже мутация теперь
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Alexander Sapin
Можете показать, что в ноде replica/metadata_version на проблемной реплике и какая version у ноды /metadata?
/metadata   version:        3
replica/metadata_version  version:        1
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а вы ответили так потому что вы не используете мутации или потому что проверили select * from system.mutation where not is_done ?
Проверял. Сейчас после рестарта две мутации вернулись.
источник

AS

Alexander Sapin in ClickHouse не тормозит
Andrey Bobelev
/metadata   version:        3
replica/metadata_version  version:        1
да, реплика действительно не выполнила ещё какие-то альтеры. Посмотрите в system.replication_queue для этой таблицы. Нет ли там записей с типом ALTER_METADATA и MUTATE_PART?
источник

Н

Никита in ClickHouse не тормозит
Всем привет, где можно почитать норм гайд по инсёрту pandas df данных в таблицу через python?
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Alexander Sapin
да, реплика действительно не выполнила ещё какие-то альтеры. Посмотрите в system.replication_queue для этой таблицы. Нет ли там записей с типом ALTER_METADATA и MUTATE_PART?
Сейчас посмотрю, пока скину это
SELECT
   command,
   latest_fail_reason
FROM system.mutations
WHERE NOT is_done

Row 1:
──────
command:            MODIFY COLUMN `unauth_id` UInt32
latest_fail_reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof: Cannot parse UInt32 from String, because value is too short: (while reading from part /var/lib/clickhouse/data/local/user_auth_events_local/202008_87047_87213_16/): While executing MergeTree (version 20.6.7.4 (official build))

Row 2:
──────
command:            MODIFY COLUMN `unauth_id` Int64
latest_fail_reason:
источник

AS

Alexander Sapin in ClickHouse не тормозит
Вот оказывается в чём дело!
источник

AS

Alexander Sapin in ClickHouse не тормозит
Вы видимо поальтерили из строки в число, а где-то не вышло распарсить. Вот этот альтер заблокировал все последующие.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrey Bobelev
Сейчас посмотрю, пока скину это
SELECT
   command,
   latest_fail_reason
FROM system.mutations
WHERE NOT is_done

Row 1:
──────
command:            MODIFY COLUMN `unauth_id` UInt32
latest_fail_reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof: Cannot parse UInt32 from String, because value is too short: (while reading from part /var/lib/clickhouse/data/local/user_auth_events_local/202008_87047_87213_16/): While executing MergeTree (version 20.6.7.4 (official build))

Row 2:
──────
command:            MODIFY COLUMN `unauth_id` Int64
latest_fail_reason:
в прошлый раз другой страдалец по моим советам чинил такое вот так:
надо найти парты с пустыми строками, отсоединить, проапдетить в другой таблице, проальтерить там и присоединить назад
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Alexander Sapin
Вы видимо поальтерили из строки в число, а где-то не вышло распарсить. Вот этот альтер заблокировал все последующие.
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Я бы с удовольствием дропнул колонку, мне эти данные не нужны. Создали колонку с неправильным типом, потом пытались этот тип поменять
источник

AS

Alexander Sapin in ClickHouse не тормозит
вроде бы всё понятно. Можно починить как посоветовал Denny. Можно сделать kill mutation, потом альтер обратно (num -> string), потом update чтобы убрать плохие строки, которые не парсятся в числа и дальше какой нужно альтер (string -> num). Ну или если эта колонка не нужна, то kill mutation, а потом alter drop.
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Alexander Sapin
вроде бы всё понятно. Можно починить как посоветовал Denny. Можно сделать kill mutation, потом альтер обратно (num -> string), потом update чтобы убрать плохие строки, которые не парсятся в числа и дальше какой нужно альтер (string -> num). Ну или если эта колонка не нужна, то kill mutation, а потом alter drop.
replication_queue через какое-то время почистится после kill или надо как-то пнуть это дело?
источник