Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DB::Exception: Часть XXXXX пересекается с предыдущей частью YYYYY. Это баг или результат ручного вмешательства в данные ZooKeeper.

Почему это происходит

При возникновении этой ошибки таблица становится доступной только для чтения, а в сообщении об ошибке указаны пересекающиеся части.

Вы можете увидеть эту ошибку в журналах или с помощью

SELECT *
FROM system.replicas
WHERE is_readonly = 1

Сообщение об ошибке выглядит следующим образом:

Code: 49. DB::Exception: Part XXXXX intersects previous part YYYYY. It is a bug or a result of manual intervention in the ZooKeeper data. (LOGICAL_ERROR) (version 21.12.4.1 (official build))

Причина ошибки

Эта ошибка может возникать из-за состояния гонки между mergeSelectingTask и повторной инициализацией очереди.

Решение

Выполните следующие запросы на всех репликах:

DETACH TABLE table_name;  -- Требуется для DROP REPLICA

SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/table_path_in_zk/'; -- Удалит всё из /table_path_in_zk

ATTACH TABLE table_name;  -- Таблица будет в режиме только для чтения, поскольку метаданные в ZK отсутствуют

Затем выполните следующее на всех репликах:

SYSTEM RESTORE REPLICA table_name;  -- Отсоединит все партиции, пересоздаст метаданные в ZK (как для новой пустой таблицы) и присоединит все партиции обратно

SYSTEM SYNC REPLICA table_name; -- Ожидание синхронизации частей между репликами. Также рекомендуется проверить `system.detached_parts` на всех репликах после завершения восстановления.

Дополнительные ресурсы

Связанные PR и задачи на GitHub:

Затронутые версии:

ClickHouse v 22.12 и более ранних версий

Navigation