работающий. В нём понадобилось заменить несколько строк на другие. И оказалось, что старые строки не удаляются.
alter table track delete where te_id=89602012;
select te_id from track where te_id=89602012 format TSV;
89602012
1 rows in set.
Тактическое выжидание, установка mutations_sync=2, OPTIMIZE не помогли.
Поле te_id типа Int64, входит в ключ:
ENGINE = ReplicatedReplacingMergeTree()
PARTITION BY h_month
ORDER BY (p_id, h_at, te_id)
В system.mutations все записи is_done (на обеих репликах):
mutation_id: 0000000011
command: DELETE WHERE te_id = 89602012
create_time: 2022-07-04 10:51:21
block_numbers.partition_id: ['0','1283299200',..,'1680307200','1682899200','1685577600']
block_numbers.number: [12,15,...,18,132,32]
parts_to_do: 0
is_done: 1
latest_fail_time: 0000-00-00 00:00:00
latest_fail_reason:
В system.merges пусто.
В чём может быть дело?
это баг, и даже хуже, скорее всего alter table портит таблицу. Вам надо апгрейдится хотя бы до 20.8
кстати как имена партов выглядели до мутации и после? (mutation_version)?
Спасибо! (Не буду сылаться на "а раньше работало", баг есть баг.)
Вроде, примерно такие же остались. Вот было в parts_to_do_names: '1546300800_251_251_0_256', '1546300800_252_252_0_256', '1546300800_254_254_0_256', ... Сейчас в system.parts: 1546300800_0_0_0_17469 1546300800_1_252_216_17469 1546300800_254_254_0_258 1546300800_259_259_0 1546300800_260_260_0 1546300800_261_261_0 (и соответствующие data_version: 17469, 17469, 258, 259, 260, 261)
это Replicated таблица? вы делали attach partition ? или восстанавливали из бекапа? странно что разные версии
Да, таблица ReplicatedReplacingMergeTree. Восстанавливать её приходилось после обнуления Кипера. На одной реплике аттачить все парты, на другой удалять и ждать перезаливки. Но парты вроде как должны оставаться прежнеми сразу после этого.
при attach не сбрасывается _version в 0 и теперь у вас мутации просто пропускают эти парты потому что mutation_id logpointer меньше чем _version. типа они заработают после того как вы сделаете alter table delete 17 тыс. раз. (_17469) https://github.com/ClickHouse/ClickHouse/issues/18804
Хм, а селекты всё равно читают такие парты из будущего?
да. Version нужен только мутациям
Спасибо. Значит, всегда остаётся опция перелить в другую таблицу селектом.
Вручную можно в 0 переименовать до attach
Обсуждают сегодня