контейнере появляется ошибка invalid cross device link? Она появляется только если директория где лежат data файлы находится внутри контейнера. Если пробрасывать наружу или использовать data контейнер, то все хорошо.
У нас не стандартный контейнер. Мы используем наш контейнер, где ставим кликхаус из пакета. Тут ещё такой момент, что раньше такой ошибки не было, она появилась с LTS 21.3
Если вдруг кто столкнётся с такой же ошибкой. Clickhouse пытается произвести удаление файлов: write(2, "2021.07.30 10:58:52.317171 [ \33[3"..., 2142021.07.30 10:58:52.317171 [ 2937 ] {} <Debug> system.trace_log (5f1f70a0-0f80-46b5-91ea-59900b67a4f8): Removing part from filesystem 202107_1_1_0) = 214 Для этого делает tmp файлы: rename("/srv/clickhouse/store/5f1/5f1f70a0-0f80-46b5-91ea-59900b67a4f8/202107_1_1_0", "/srv/clickhouse/store/5f1/5f1f70a0-0f80-46b5-91ea-59900b67a4f8/delete_tmp_202107_1_1_0") = -1 EXDEV (Invalid cross-device link) Но использует при этом функцию rename. А она не работает на overlayfs2, т.к там происходит переименование сквозь слои. А Clickhouse не должен учитывать этот момент?
Там пол КХ на этом построено. Непонятно как это можно исправить даже в теории.
без Atomic баз проблема тоже?
У нас их и нет. Но системные базы создаются сразу как Atomic и проблема именно с ними. Нет возможности поменять их тип при инициализации?
останавливаете КХ. удаляете rm -rf metadata/system/ удаляeте rm -rf data/system/ удаляете store , если вы на 100% уверены что у вас нету atomic, rm -rf store, или можете оставить mkdir metadata/system/ data/system/; chown clickhouse.clickhouse metadata/system/ data/system/ в system.sql кладете cat /var/lib/clickhouse/metadata/system.sql ATTACH DATABASE system ENGINE = Ordinary запускаете КХ другой вариант ставить 20.6 на голую систему, запустить КХ, создастся system Ordinary и апгрейдить до нужной версии
Обсуждают сегодня