Обсуждаем ClickHouse
Всем привет господа! Нужна помощь с созданием таблицы на инстансе 1, такую же копию как с инстанса 2.
Дело в том что данные льются в таблицу инстанса 2, и нужно чтобы данные эти тоже были в таблице инстанса 1.
Думал аналогию как с Postgres engine сделать так как уже есть такие таблицы, но увы не смог. Требуется безКластерное решение
Буду благодарен заранее если опишите подробно решение
директория с данными примонтировалось в другое место и такой эксепшен получался не очень информативный
Читать полностью…чукча писатель ? еще раз https://fiddle.clickhouse.com/355d395a-0b9b-4110-a69b-998fad33297e
Читать полностью…вывод на живой реплике и на проблемной где count() 0 показывает отличается только вот этим:
last_queue_update_exception: Code: 242. DB::Exception: Table is in readonly mode due to static storage. (TABLE_IS_READ_ONLY) (version 24.8.14.39 (official build))Читать полностью…
https://github.com/ClickHouse/ClickHouse/discussions/59187#discussioncomment-8239140
нашел как ограничить join на большую таблицу в MV
(a7efd2a8-72f7-48d3-b16b-a1d4890b9450): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(LogEntryPtr &) const: Code: 242. DB::Exception: Table is in readonly mode due to static storage. (TABLE_IS_READ_ONLY), Stack trace (when copying this message, always include the lines below):
0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000d17d45b
1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x0000000007db1dec
2. DB::Exception::Exception<>(int, FormatStringHelperImpl<>) @ 0x0000000007dc9a8b
3. DB::StorageReplicatedMergeTree::fetchPart(String const&, std::shared_ptr<DB::StorageInMemoryMetadata const> const&, String const&, String const&, bool, unsigned long, std::shared_ptr<zkutil::ZooKeeper>, bool) @ 0x0000000011aaee4f
4. DB::StorageReplicatedMergeTree::executeFetch(DB::ReplicatedMergeTreeLogEntry&, bool) @ 0x0000000011aa0a1b
5. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0x0000000011a8648c
6. bool std::__function::__policy_invoker<bool (std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>::__call_impl<std::__function::__default_alloc_func<DB::StorageReplicatedMergeTree::processQueueEntry(std::shared_ptr<DB::ReplicatedMergeTreeQueue::SelectedEntry>)::$_1, bool (std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>>(std::__function::__policy_storage const*, std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&) @ 0x0000000011ba18fc
7. DB::ReplicatedMergeTreeQueue::processEntry(std::function<std::shared_ptr<zkutil::ZooKeeper> ()>, std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::function<bool (std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>) @ 0x0000000012230947
8. DB::StorageReplicatedMergeTree::processQueueEntry(std::shared_ptr<DB::ReplicatedMergeTreeQueue::SelectedEntry>) @ 0x0000000011ad353c
9. DB::ExecutableLambdaAdapter::executeStep() @ 0x0000000011ba2552
10. DB::MergeTreeBackgroundExecutor<DB::RoundRobinRuntimeQueue>::threadFunction() @ 0x0000000011f18eba
11. ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::worker(std::__list_iterator<ThreadFromGlobalPoolImpl<false, true>, void*>) @ 0x000000000d24fec9
12. void std::__function::__policy_invoker<void ()>::__call_impl<std::__function::__default_alloc_func<ThreadFromGlobalPoolImpl<false, true>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::scheduleImpl<void>(std::function<void ()>, Priority, std::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'(), void ()>>(std::__function::__policy_storage const*) @ 0x000000000d254011
13. void* std::__thread_proxy[abi:v15007]<std::tuple<std::unique_ptr<std::__thread_struct, std::default_delete<std::__thread_struct>>, void ThreadPoolImpl<std::thread>::scheduleImpl<void>(std::function<void ()>, Priority, std::optional<unsigned long>, bool)::'lambda0'()>>(void*) @ 0x000000000d252d89
14. start_thread @ 0x0000000000007ea7
15. ? @ 0x00000000000fca2f
(version 24.8.14.39 (official build))
код надо смотреть вполне возможно бага... лучше тут спросить
https://github.com/ClickHouse/dbt-clickhouse/issues
это очень стремно, уберегло от мутаций выполняющихся в этот момент
Читать полностью…а, ну те это чтоб руками не лазить и кол-во брокен партов не поднимать, а потом не опускать?
Читать полностью…флаг выглядит страшновато, он не зафорсит полный ресинк всех таблиц?
Читать полностью…само
проще sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data
для одной таблицы поднял, на которой спотыкалось в .sql файле ее определения
Читать полностью…distributed_background_insert_batch может, но нужен рестарт КХ
Читать полностью…>аналогию как с Postgres engine
create table xxx as remote('other_server', 'db', 'talble', 'user', 'pass')
под апсерты действительно лучше подходит чем ReplacingMergeTree + join, попробую
Читать полностью…или так https://fiddle.clickhouse.com/1343f225-1fa9-4669-8ddc-66e45c138b98
Читать полностью…CoalescingMergeTree заполнит нуловые поля, но если будут апдейты не нуловых, то это будут две разные строки уже, т.е. это не совсем апсерт
Читать полностью…https://github.com/ClickHouse/ClickHouse/issues/78869#issuecomment-2901209361
https://fiddle.clickhouse.com/037332ba-4e75-421d-b3c6-7d95101c54ba
select * from system.replicas where table = ....
скорее всего is_lost=1
проще всего system drop replica / restore relica
На chproxy таких механизмов, кажется, нет
Читать полностью…Привет. У нас тут завелся "спамер" (неумышленный), раз в 30 секунд дает запрос к клику, затратный и ненужный. Мы его конечно завтра найдем, а пока такой вопрос: есть ли у клика какой-то механизм jdbc запросы по маске дропать, не выполняя?
Читать полностью…всем привет, заранее извиняюсь если вопрос не совсем релевантен для чата (вопрос скорее про dbt-clickhouse).
Такая проблема, в кликхаусе (при работе dbt-core + dbt-clickhouse (1.9.1 оба)) при стратегии microbatch
макрос {%- if is_incremental() %}
всегда возвращает False - это такое поведение и задумано или бага ? делаю чз microbatch
обновление но мне надо сравнивать новые данные с теми которые уже записали (всегда делал чз is_incremental()
- но при выборе стратегии microbatch
не получается) Что в такой ситуации делать, использовать обычную инкрементальную материализацию вместо microbatch
стратегии или есть какое-то решение ?
проблема кстати концептуальная есть в КХ https://github.com/ClickHouse/ClickHouse/issues/66527
Читать полностью…нет, это просто флаг который позволяет стартовать и игнорировать кол-во broken партов
он ничего не форсит
а то что в детачед отлетело просто удалить можно , если все восстановится?
Читать полностью…это интересный вопрос, insert / update для iceberg
т.е. если КХ научится делать insert / update/ compaction для iceberg , то возникает вопрос почему это нельзя сделать для MergeTree, почему нужны костыли типа replicated* + zero replication
После того как увеличиваешь max_suspicious_broken_parts чтоб сервак стартанул. Оно само подтянет недостающие с реплики? или надо что-то вручную делать?
Читать полностью…=( Жаль... distributed_background_insert_batch +
SYSTEM DISTRIBUTED FLUSHможет как то ускорить? чтобы не куча мелких батчей? Читать полностью…