Экспертиза баз данных и СУБД

Судебная экспертиза базы данных ClickHouse

Устанавливаем, что произошло с данными в ClickHouse, можно ли их восстановить и чем вызваны сбой или замедление. Для первого обращения достаточно описания — без рабочей базы и паролей.

Ориентир по стоимости экспертизы
от 100 000 ₽
Ориентир по сроку экспертизы
от 10 рабочих дней
  • Судебные экспертизы
  • Внесудебные исследования
  • Рецензирование заключений
01 Проверим компетенцию

До оплаты определим, относится ли задача к выбранному виду исследования.

02 Поможем подготовиться

Уточним вопросы и перечень материалов — готовый комплект не обязателен.

03 Работаем с регионами

Принимаем задачи из России, Казахстана и Беларуси; часть материалов можно передать электронно.

04 Сопровождаем результат

Разъясняем методику и выводы, отвечаем на вопросы суда в пределах компетенции эксперта.

О направлении

Подробно о задачах, объектах и методиках

Материал описывает типовые задачи и вопросы. Окончательные формулировки определяются с учётом компетенции эксперта, а правовую оценку обстоятельствам даёт суд.

Содержание страницы

    Экспертиза ClickHouse нужна, когда спор зависит от аналитических данных, структуры таблиц и частей данных (data parts), запросов, фоновых слияний и изменений (мутаций), репликации, резервных копий, сбоя, производительности или результата миграции. Специалист устанавливает версию, схему кластера, его сегменты распределения (шарды) и реплики, базы данных и движки таблиц, правила размещения данных, конфигурацию ClickHouse Keeper и доступный набор системных журналов. Это специализированное направление экспертизы баз данных и СУБД.

    Предварительно можно оценить, существуют ли источники за нужный период. Для первого обращения достаточно схемы кластера, версий узлов, перечня данных и метаданных, резервных копий, системных таблиц и журналов, а также указания конкретной таблицы и события. Если system.query_log был отключён или очищен, прежние части данных удалены после слияния, а резервной копии нет, точная ретроспектива может быть недостижима. Это лучше установить до полной работы, чтобы вовремя сохранить оставшиеся источники и уточнить вопросы.

    При потере данных не выполняйте OPTIMIZE ... FINAL, новые мутации, ALTER TABLE ... DROP DETACHED PARTITION, SYSTEM RESTORE REPLICA или повторную загрузку поверх единственного состояния. Зафиксируйте схему кластера, роли узлов, очереди репликации, мутации, активные части данных, состояние Keeper, время и часовой пояс на каждом узле, затем сохраните согласованные копии. Выполняет это владелец системы или уполномоченный им администратор; если кластер принадлежит другой стороне, доказательство сохраняют через суд.

    Отдельно о том, что будет, если ответить не удастся. Задачу, по которой уже из присланных материалов видно, что вывода не получится, мы просто не берём в работу и говорим об этом сразу. Это не обещание положительного вывода: отказ на входе означает лишь, что невозможность видна уже из перечня материалов. Если же невозможность выясняется по итогам полноценного исследования, это результат, а не пустой счёт: заключение объясняет, почему ответа нет и чего именно не хватило. В споре такой вывод часто закрывает вопрос: обоснованный ответ, что системные журналы за спорный период вышли за срок хранения, показывает суду границы имеющихся источников. Назначать ли после этого дополнительную или повторную экспертизу, решает назначивший её орган. Бывает и частичная невозможность: тогда указывают, на какие вопросы ответ получен, а на какие нет и по какой причине.

    Кто снимает копию, решают по объекту. Иногда это делает сам заказчик или его администратор по согласованному плану; иногда — наш специалист, удалённо или с выездом, как отдельная консультация; иногда фиксация входит в саму экспертизу. Выбор зависит от сложности системы, доступности и трудоёмкости: согласованные копии узлов и системные журналы снимают по-разному на одиночном сервере и на нагруженном кластере. Если инфраструктурой управляет другая сторона, порядок доступа определяет суд, и фиксацию проводят с участием эксперта.

    Системные журналы и каталог detached скопируйте на отдельный носитель сразу, с контрольными суммами, — и после этого штатную очистку не останавливайте. Таблицы system.query_log и system.part_log на нагруженном кластере растут на десятки гигабайт в сутки, а отсоединённые части занимают полный объём данных: при заполнении диска сервер перестаёт принимать вставки. Запрет ничего не удалять на несколько недель означает остановку рабочей системы.

    Если ClickHouse предоставлен как управляемый сервис, доступа к файлам, узлам и Keeper у заказчика нет, и остановить узел невозможно. Тогда состав материалов другой: штатные резервные копии и точки восстановления провайдера с их идентификаторами, выгрузки системных таблиц через клиентское подключение, журналы операций и метрики провайдера, параметры и события обслуживания. Что именно доступно, зависит от продукта и тарифа; недоступность части источников эксперт указывает как ограничение вывода.

    Особенности ClickHouse как объекта исследования

    ClickHouse — колоночная аналитическая СУБД с разными движками таблиц и распределённым исполнением. Поведение MergeTree, ReplicatedMergeTree, Distributed, Kafka, MaterializedView и внешних движков различается. Данные конкретной таблицы с движком Distributed могут физически находиться на разных сегментах, а системные таблицы обычно отражают только локальное состояние узла.

    Работа с распределённым кластером начинается со следующих действий:

    • устанавливают версии и номера сборок всех узлов, настройки сервера и подключаемые файлы конфигурации;
    • фиксируют схему кластера, макросы, сегменты, реплики, маршрутизацию Distributed и состав узлов Keeper;
    • определяют движки баз данных и таблиц, запросы CREATE, ключи разделения и сортировки, первичный ключ, TTL и правила размещения данных;
    • инвентаризируют активные, неактивные и отсоединённые части данных, диски, объектные хранилища и метаданные;
    • собирают system.query_log, system.part_log, system.text_log, system.trace_log, system.crash_log, сведения о мутациях и репликации на каждом узле;
    • проверяют источники загрузки данных: Kafka, процессы ETL, материализованные представления, асинхронные вставки и журналы приложений.

    Название таблицы и результат запроса с одного узла не гарантируют полноту данных всего кластера. Для распределённого запроса различают исходный запрос и дочерние запросы, а системные журналы собирают на всех относящихся к задаче узлах.

    Что может и чего не может установить эксперт

    При достаточных материалах можно определить схему и состав данных на контрольный момент, происхождение частей данных, состояние мутаций и очередей репликации, запросы в сохранившихся журналах, согласованность резервной копии, причины потери или задержки и полноту миграции. Вывод должен учитывать асинхронные фоновые процессы.

    При достаточных материалах эксперт может установить:

    • какие таблицы, столбцы, движки, части данных и разделы присутствуют на каждом узле;
    • какие события запросов отражены в system.query_log и как связаны исходный и дочерние распределённые запросы;
    • какие вставки, слияния, загрузки, удаления или мутации отражены в системных источниках;
    • завершена ли мутация и какие части данных ещё должны её применить;
    • имеются ли задержка и накопившиеся очереди репликации, потерянные или отсоединённые части данных и расхождения реплик;
    • восстанавливается ли резервная копия и соответствует ли результат заданному моменту и составу объектов;
    • почему конкретный запрос завершился ошибкой или превысил измеримый порог.

    system.query_log может содержать имя пользователя, адрес и текст запроса, но не хранит результат выборки и зависит от настроек. Фоновое слияние изменяет физический набор частей данных без отдельного действия пользователя. Техническая учётная запись или IP-адрес не доказывают, кто именно действовал: нужны журналы приложения, прокси-сервера, системы управления учётными записями и инфраструктуры. Эксперт устанавливает технические обстоятельства в пределах представленных материалов; вопросы о виновности, умысле и правовой квалификации события разрешает суд или иной уполномоченный орган.

    Материалы для исследования

    Сбор распределённого ClickHouse планируют по всем относящимся к задаче узлам и внешним хранилищам. Обычная копия активных каталогов не гарантирует согласованность: по проверенной для фактической версии и хранилища процедуре с пробным восстановлением получают моментальный снимок каждого узла и его дисков либо останавливают узел, а объектное хранилище и ClickHouse Keeper фиксируют отдельно. Для файлового снимка предпочтительна выделенная реплика, исключённая из изменяющих запросов. Локальный снимок узла не является одновременным срезом всего кластера. Время начала и окончания, часовой пояс и синхронизация часов позволяют лишь сопоставить локальные состояния по временной шкале. Если единый барьер изменений либо документированная координированная процедура фактической версии не подтверждены, набор копий описывают как интервальную совокупность локальных состояний и не называют единым срезом кластера. Для штатного BACKUP ... ON CLUSTER отдельно проверяют состав, идентификаторы, статусы, ошибки и гарантии процедуры.

    Для каждого файла и выгрузки протоколируют источник — узел, путь, диск или контейнер объектного хранилища, — средство сбора и его версию, время получения, размер и контрольную сумму SHA-256. Неизменяемую мастер-копию отделяют от рабочей копии. Для каждой передачи регистрируют отправителя, получателя, время и носитель; после получения SHA-256 вычисляют повторно и сверяют с исходным значением.

    В комплект обычно включают:

    • конфигурации сервера и пользователей, подключаемые файлы, макросы, определения кластера, правила размещения данных и управление доступом;
    • каталоги метаданных и данных, диски, манифесты объектных хранилищ, активные и отсоединённые части данных;
    • резервные копии, system.backup_log, команды BACKUP/RESTORE и версии программ, которыми они выполнялись;
    • выгрузки system.tables, system.columns, system.parts, system.detached_parts, system.mutations, system.replicas, system.replication_queue и system.errors;
    • system.query_log, system.query_thread_log, system.part_log, system.text_log, system.trace_log, system.crash_log и сведения об изменении настроек с каждого узла;
    • конфигурации, снимки и журналы Keeper/ZooKeeper, относящиеся к задаче пути либо согласованные диагностические выгрузки;
    • журналы приложений, прокси-серверов, процессов ETL, Kafka и средств оркестрации, схемы и спецификации входных данных;
    • техническое задание, соглашение об уровне обслуживания (SLA), правила резервного копирования, таблица соответствия при миграции, спорный период и контрольные запросы.

    Команды работающей системы создают нагрузку и новые записи. Вызовы SYSTEM FLUSH LOGS и BACKUP также меняют наблюдаемое состояние, поэтому их необходимость, время, параметры и результат заранее согласуют и протоколируют.

    Если предоставлена только выгрузка CSV, можно проверить её содержимое, но нельзя автоматически утверждать состояние частей данных, репликации, системных журналов и всей таблицы Distributed. Секреты доступа к объектному хранилищу и Keeper передают отдельно от обычных материалов.

    Передача копии, в которой есть сведения о людях или охраняемая законом тайна, требует законного основания. По назначенной экспертизе объекты поступают от назначившего органа; вне процесса — от обладателя сведений и в объёме, необходимом для ответа на поставленные вопросы. Обезличивание при этом обсуждают не как уступку, а как способ передать меньше, чем есть. Эксперт не разглашает сведения, ставшие известными ему в связи с исследованием, а рабочие копии удаляет по окончании работы.

    Части данных MergeTree, слияния и мутации

    В MergeTree вставка создаёт неизменяемую часть данных. Фоновые слияния объединяют несколько частей в новую, после чего исходные становятся неактивными и со временем удаляются. Физическое изменение набора файлов не обязательно означает пользовательское изменение логических строк. Для интерпретации используют имена и метаданные частей, system.parts, system.part_log и журналы сервера.

    Команды ALTER TABLE ... UPDATE/DELETE создают мутации, которые асинхронно переписывают затронутые части данных. system.mutations показывает команды, ход выполнения, оставшиеся части и ошибки в пределах сохранившегося состояния. Завершённая мутация и последующая очистка могут уничтожить прежние физические части; текущая таблица не является полной историей значений.

    TTL, слияния, облегчённое удаление, удаление или отсоединение раздела и перемещение данных между хранилищами имеют разную семантику. По отсутствию одной части данных нельзя заключать, что её удалили вручную. Сопоставляют system.query_log, system.part_log, сведения о мутациях и репликации, события файловой системы и объектного хранилища, а также настройки срока хранения.

    query_log, part_log и другие системные журналы

    system.query_log хранит метаданные и статистику выполненных запросов: время и длительность, ошибки, потребление ресурсов, текст запроса, имя пользователя, адрес и другие поля. Результаты запросов в этой таблице не сохраняются. Запись может быть отключена или настроена выборочно, сброс на диск происходит периодически, а данные относятся только к конкретному узлу; для картины по всему кластеру собирают журналы всех относящихся к задаче узлов и связывают записи по initial_query_id.

    system.part_log при включённой конфигурации отражает события с частями данных: создание, слияние, загрузку, удаление и ошибки. system.text_log, system.trace_log, system.crash_log, system.query_thread_log и журналы приложений дополняют временную линию. Срок хранения и TTL системных таблиц задаются конфигурацией, поэтому отсутствие старой записи не доказывает отсутствия события.

    Репликация и ClickHouse Keeper

    ReplicatedMergeTree реплицирует данные и операции соответствующей таблицы, используя координационные метаданные в ClickHouse Keeper или ZooKeeper. Репликация асинхронна, а отдельные запросы CREATE, пользователи, определения Distributed и другие серверные объекты могут требовать собственной доставки. Проверяют system.replicas, system.replication_queue, сведения о загрузках, указатели журнала, режим только для чтения, завершение сеансов и потерянные части данных.

    Keeper хранит координационное состояние, а не полную копию табличных данных. Его снимки и журналы собирают согласованно и исследуют только совместимыми средствами. Реплика не заменяет резервную копию: ошибочное удаление, мутация или команда DROP могут распространиться. Повторная синхронизация и команды восстановления способны изменить очереди и части данных, поэтому до их выполнения фиксируют состояние каждого узла.

    Резервные копии, восстановление и удалённые данные

    Штатные команды BACKUP и RESTORE могут сохранять таблицы, базы данных и объекты управления доступом в настроенные места назначения; в зависимости от конфигурации возможны полные и добавочные копии. Проверяют состав, базовую резервную копию, контрольные суммы, хранилище, статус в system.backup_log и фактическое восстановление на отдельном кластере.

    Прежние данные могут находиться в резервной копии, снимке хранилища, на реплике, в отсоединённых или ещё не удалённых неактивных частях. После слияния, мутации, истечения TTL и очистки старые части могут исчезнуть. Подключать найденную часть к рабочей системе без проверки нельзя; её схему, раздел, диапазон блоков, версию мутации и контрольную сумму сопоставляют на изолированном стенде. Если спор целиком о том, что и когда изменилось в записях, его разбирает экспертиза изменений и удаления данных.

    Сбои и производительность

    Причины исследуют по журналам запросов и потоков, ProfileEvents, профилю обработчиков, текстовым журналам и журналам сбоев, system.errors, сведениям о слияниях, мутациях и очередях репликации, дисках, кэше файловой системы, учёте памяти, сети, задержках Keeper и показателях операционной системы. Для распределённого запроса важно разделять работу координатора и удалённые этапы, учитывать повторные попытки.

    Один медленный запрос не подтверждает дефект СУБД без сведений о схеме, частях данных, настройках, плане запроса, объёме, одновременной нагрузке и состоянии инфраструктуры за тот же период. EXPLAIN и повторный тест проводят на репрезентативной копии; изменять настройки рабочей системы или выполнять OPTIMIZE FINAL до фиксации нельзя. Замедления и отказы сами по себе исследует экспертиза производительности и сбоев СУБД.

    Как проверить миграцию ClickHouse

    Сопоставляют базы данных, таблицы и движки, столбцы и типы данных, значения по умолчанию, кодеки, ключи разделения и сортировки, первичный ключ, выборку, TTL, проекции, индексы, ограничения, материализованные представления, словари, функции, объекты управления доступом, квоты и настройки. Для распределённой схемы проверяют локальные таблицы, ключ сегментирования и устройство кластера.

    Данные сверяют по разделам и стабильным контрольным запросам, учитывая продолжающиеся фоновые слияния, семантику ReplacingMergeTree и CollapsingMergeTree, FINAL, часовые пояса, Decimal, LowCardinality, Nullable, массивы и вложенные типы. Фиксируют момент переключения, поздно поступившие события, токены устранения дублей, отклонённые пакеты и изменения после среза. Число физических строк в system.parts не равно числу логических строк результата. Когда предметом спора становится сам перенос, а не устройство базы, задачу закрывает экспертиза миграции баз данных.

    Примеры вопросов на экспертизу

    При судебной экспертизе окончательный круг вопросов определяет суд, а в иных предусмотренных законом процедурах — орган или лицо, назначившие экспертизу. Вопросы о виновности, умысле, правовой квалификации события, нарушении договора и ответственности разрешает суд или иной уполномоченный орган. Эксперт отвечает на поставленные вопросы в пределах специальных знаний и представленных материалов; о неясности вопроса, выходе за пределы компетенции или недостаточности материалов он в установленном порядке сообщает суду, органу или лицу, назначившим экспертизу.

    До назначения стороны могут использовать приведённые ниже формулировки как предложения о технических вопросах. Для ClickHouse полезно указать кластер и узлы, базу и таблицу, движок, раздел, период, часовой пояс и измеримый критерий; для распределённого запроса — query_id и ожидаемый охват сегментов. Например, можно предложить исследовать технические события, связанные с исчезновением раздела X, либо совпадение перечисленных разделов по заданным контрольным запросам. Дополнительные примеры:

    1. Какие активные и отсоединённые части данных относятся к указанной таблице и разделу?
    2. Какие запросы за указанный период отражены в system.query_log представленных узлов?
    3. Какие события слияния, мутации, удаления или загрузки отражены в system.part_log?
    4. Завершена ли указанная мутация и какие части данных она затронула?
    5. Имеются ли расхождения реплик, накопившиеся очереди репликации либо потерянные части данных?
    6. Восстанавливается ли резервная копия и какие объекты и данные она содержит?
    7. Охватил ли распределённый запрос все предусмотренные сегменты кластера?
    8. Каковы технические причины зафиксированной ошибки или превышения заданной длительности выполнения?
    9. Соответствует ли срок хранения системных журналов установленным требованиям?
    10. Полностью ли перенесены схема, данные и логика материализованных представлений?

    Результат и стоимость

    Исследование включает описание устройства кластера, фиксацию и хэширование источников, создание совместимого стенда, анализ метаданных, частей данных, журналов и состояния Keeper, проверку резервной копии и альтернативных причин. Результатом может быть консультация, внесудебное исследование, судебная экспертиза или рецензия. Ориентир по стоимости — от 100 000 ₽, срок — от 10 рабочих дней; на них влияют число узлов и сегментов, объём данных, виды хранилищ и журналов, состояние резервных копий и поставленные вопросы.

    Если судебная экспертиза уже назначена, назначенный по делу эксперт не принимает от одной стороны напрямую дополнительные выгрузки, части данных и системные журналы и не даёт ей частную оценку по существу поручения: вопросы, доступ и новые материалы идут через назначившего субъекта. Это не исключает обращения стороны к другому, не назначенному по делу специалисту — за консультацией или рецензией по законно полученным материалам. Предшествующую содержательную работу специалиста для одной стороны раскрывают при рассмотрении его кандидатуры; допустимость назначения и возможный отвод решает уполномоченный субъект с учётом мнения участников. Чтобы снизить риски, роли консультанта стороны и кандидата в судебные эксперты целесообразно разделять. Готовое чужое заключение проверяет рецензия на заключение экспертизы баз данных и СУБД.

    Проведение экспертизы по уголовному делу

    Судебная экспертиза по уголовному делу производится государственными судебными экспертами и иными экспертами из числа лиц, обладающих специальными знаниями.

    Негосударственными судебно-экспертными учреждениями постановление Пленума Верховного Суда Российской Федерации от 21 декабря 2010 г. № 28 «О судебной экспертизе по уголовным делам» признаёт некоммерческие организации, созданные в соответствии с Гражданским кодексом Российской Федерации и Федеральным законом «О некоммерческих организациях» и осуществляющие судебно-экспертную деятельность в соответствии с принятыми ими уставами.

    По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган с учётом предмета дела, квалификации эксперта, оснований для отвода и действующего перечня экспертиз, выполняемых только государственными судебно-экспертными организациями.

    Актуализировано
    Форматы работы

    Стоимость и сроки

    Указан предварительный ориентир. Точный расчёт зависит от вопросов, объёма материалов, количества объектов и необходимости выезда. Начало отсчёта фиксируем после проверки необходимого комплекта.

    По договору

    Внесудебное исследование

    от 100 000 ₽
    от 10 рабочих дней
    точная стоимость будет определена после ознакомления с объектом исследования

    Итог — внесудебное исследование или документ специалиста по договору. Его наименование, представление и доказательственное значение зависят от вида процесса и оцениваются судом.

    Заказать исследование
    Проверка готового заключения

    Рецензирование

    от 50 000 ₽
    10 рабочих дней
    точная стоимость будет определена после ознакомления с заключением и приложениями

    Итог — письменная рецензия на готовое заключение. Она проверяет исходные данные, методы и выводы, но не отменяет заключение и не заменяет новое исследование объекта.

    Передать заключение на проверку
    Письменный ответ эксперта

    Консультация и справка

    от 20 000 ₽
    2-3 рабочих дня
    точная стоимость будет определена после ознакомления с объектом исследования

    Поможет предварительно оценить вопрос, определить перспективу исследования и подготовить дальнейшие действия.

    Описать вопрос
    Разбор задачи — без оплаты

    Проверим вид исследования, комплектность материалов и возможность работы. Если по присланным материалам видно, что ответить нельзя, скажем сразу и работу не возьмём. Когда материалы структурированы, предварительный прогноз тоже бесплатный; если разбор требует долгой работы эксперта, предупредим об этом до начала — тогда это платная консультация.

    Получить предварительную оценку
    Организация исследования

    Как строится работа над экспертизой

    До начала исследования уточним предмет задачи, состав материалов и формат итогового документа.

    1. 01 Предварительный разбор

      Проверяем компетенцию и сообщаем, можно ли провести исследование по поставленной задаче.

    2. 02 Вопросы и материалы

      Уточняем вопросы и сообщаем, каких документов или объектов не хватает.

    3. 03 Экспертное исследование

      Эксперт применяет профильные методики, фиксирует ход работы и обосновывает выводы.

    4. 04 Заключение и пояснения

      Передаём результат и при необходимости разъясняем суду применённую методику и выводы.

    Документы организации

    Ответы специалистов

    Частые вопросы

    Практические пояснения о назначении, материалах и использовании экспертного заключения.

    Все вопросы по направлению
    Когда нужна экспертиза ClickHouse?

    Экспертиза ClickHouse нужна, когда спор зависит от аналитических данных, схемы и движков таблиц, частей данных MergeTree, запросов, мутаций, репликации, резервной копии или производительности. Она помогает проверить полноту таблицы Distributed, события изменения частей данных, состояние реплик, восстановимость копии, причину сбоя и результат миграции.

    Обычная выгрузка достаточна только для узкой сверки результата. Специализация необходима, если важны фоновые слияния, TTL, асинхронные мутации, сегменты распределения, Keeper и локальные системные журналы. Сначала устанавливают версии всех узлов, схему кластера, движки баз данных и таблиц, правила размещения данных и источники загрузки. Один узел или одна выборка через Distributed без сведений о маршрутизации не обязательно описывают весь кластер. Порядок работы, состав материалов и сроки собраны на странице экспертизы ClickHouse.

    Отдельная страница: Когда нужна экспертиза ClickHouse?
    Можно ли заранее оценить перспективу экспертизы ClickHouse?

    По схеме кластера, версиям, запросам CREATE, перечню данных и метаданных, резервных копий и системных журналов можно оценить, проверяема ли задача и нужен ли стенд с полным устройством кластера. Для первого обращения достаточно указать таблицу, раздел, query_id или событие, период, узлы и известные действия после инцидента.

    system.query_log мог быть отключён, настроен выборочно или очищен; неактивные части данных удаляются после слияний, а мутации переписывают данные. Резервную копию ещё предстоит проверить восстановлением. Локальный снимок одного узла не подтверждает состояние всего кластера на единый момент: учитывают время снимка каждого узла, синхронизацию часов и неопределённость сопоставления. Предварительная оценка позволяет вовремя сохранить отсоединённые части данных, журналы и состояние Keeper, а также определить, достижима ли точная ретроспектива.

    Отдельная страница: Можно ли заранее оценить перспективу экспертизы ClickHouse?
    Какие материалы нужны для экспертизы ClickHouse?

    Нужны конфигурации сервера и пользователей, подключаемые файлы, макросы, схема кластера, правила размещения данных, каталоги метаданных и данных, манифесты объектных хранилищ, резервные копии и system.backup_log. На каждом относящемся к задаче узле собирают выгрузки system.tables, system.parts, system.detached_parts, system.mutations, system.replicas, system.replication_queue, system.query_log, system.part_log, system.text_log, system.trace_log и system.crash_log.

    Обычная копия активных каталогов не гарантирует согласованность: нужен атомарный снимок каждого узла и его дисков либо остановка узла; объектное хранилище и Keeper фиксируют отдельно. Снимок отдельного узла не является одновременным срезом всего кластера: записывают начало и окончание сбора, часовой пояс, синхронизацию часов и неопределённость. Для каждого объекта указывают источник — узел, путь, диск или контейнер хранилища, — средство сбора и его версию, время, размер и SHA-256. Мастер-копию отделяют от рабочей, а после передачи SHA-256 сверяют повторно. До фиксации не выполняют OPTIMIZE, мутации и очистку; SYSTEM FLUSH LOGS и BACKUP применяют только с протоколом их влияния.

    Отдельная страница: Какие материалы нужны для экспертизы ClickHouse?
    От чего зависят стоимость и срок экспертизы ClickHouse?

    Стоимость и срок определяют число узлов, сегментов распределения (шардов), реплик и таблиц, объём частей данных, использование объектных хранилищ, состояние репликации и Keeper, количество журналов и резервных копий, исследуемый период и поставленные вопросы. Дополнительная работа требуется при несогласованных снимках, восстановлении кластера, распределённых запросах, повреждённых частях данных и сопоставлении с процессом загрузки данных.

    После инвентаризации специалист предлагает минимальный достаточный объём исследования. Ориентиры направления: стоимость от 100 000 ₽, срок от 10 рабочих дней. Анализ одного query_id и реконструкция большого распределённого кластера имеют разную трудоёмкость. Срочность согласуют после оценки времени копирования, доступности нужной версии программы, необходимости восстановить резервную копию и риска, что срок хранения системных таблиц истечёт. Общие для всех платформ правила — на странице экспертизы баз данных и СУБД.

    Отдельная страница: От чего зависят стоимость и срок экспертизы ClickHouse?
    Можно ли восстановить удалённые или изменённые данные ClickHouse?

    Основные источники восстановления — штатные резервные копии, согласованные снимки, реплики и сохранившиеся отсоединённые или неактивные части данных. Их проверяют по схеме, разделу, диапазону блоков, версии мутации, контрольной сумме и фактическому восстановлению на отдельной инфраструктуре. Реплика не является независимым архивом: команда DROP, мутация или логическое удаление могут распространиться.

    Слияние, мутация, истечение TTL и очистка со временем удаляют старые физические части. Текущая таблица и system.query_log не образуют полную историю значений. Подключение найденной части к рабочей системе или повторная загрузка способны изменить состояние, поэтому исследуют только рабочую копию, сохраняя мастер-копию неизменной. Эксперт указывает, какие разделы и строки подтверждаются конкретным источником и где восстановление ограничено. Снимки разных узлов соотносят по фактическому времени их получения и не выдают за единый срез кластера. Когда спор целиком о том, что и когда изменилось в записях, его разбирает экспертиза изменений и удаления данных.

    Отдельная страница: Можно ли восстановить удалённые или изменённые данные ClickHouse?
    Что можно установить по частям данных и мутациям ClickHouse?

    В MergeTree вставки создают неизменяемые части данных, а фоновые слияния собирают из них новые части. Старые части становятся неактивными и затем удаляются. Поэтому изменение набора файлов может быть обычным обслуживанием, а не отдельной пользовательской правкой. Происхождение оценивают по именам, метаданным, system.parts, system.part_log и журналам сервера.

    Мутации асинхронно переписывают затронутые части данных. system.mutations показывает команду, ход выполнения, оставшиеся части и ошибки в пределах текущего состояния. Завершённая мутация и очистка могут удалить прежнее представление. Для вывода сопоставляют system.query_log, system.part_log, версию мутации, очередь репликации, TTL и события хранилища; исчезнувшая часть данных сама по себе говорит лишь о том, что её больше нет: слияние, мутация и срок хранения удаляют части штатно, и вывод об умысле из этого не следует.

    Отдельная страница: Что можно установить по частям данных и мутациям ClickHouse?
    Что показывают query_log и part_log ClickHouse?

    Таблица system.query_log хранит время и длительность выполнения, ошибки, сведения о потреблении ресурсов, текст запроса, имя пользователя, адрес и другие метаданные, но не результаты запросов. Ведение журнала может быть выключено или настроено выборочно, запись сбрасывается на диск периодически, а таблица отражает локальное состояние узла. Для картины по всему кластеру собирают данные всех относящихся к задаче узлов и связывают исходный запрос с дочерними.

    system.part_log при включённой конфигурации отражает создание, слияние, загрузку и удаление частей данных, а также ошибки. Полнота зависит от срока хранения, TTL и сохранности. Текстовые журналы, журналы трассировки и сбоев, а также журналы приложений дополняют картину. Выводы делают в границах сохранившегося периода журнала: после очистки строк за прежние дни там просто нет. Имя пользователя и адрес соотносят с учётными записями, приложением и сетью — сами по себе они называют подключение, а не человека.

    Отдельная страница: Что показывают query_log и part_log ClickHouse?
    Как исследуют репликацию и ClickHouse Keeper?

    ReplicatedMergeTree использует ClickHouse Keeper или ZooKeeper для координационных метаданных и асинхронно воспроизводит операции с таблицей. Проверяют system.replicas, system.replication_queue, указатели журнала, загрузки, задержку, режим только для чтения, завершение сеансов, отсоединённые и потерянные части данных. Отдельно устанавливают, какие изменения схемы и прав доступа доставлялись собственной автоматизацией.

    Снимки и журналы Keeper описывают координацию, но не содержат полной копии таблиц. Реплика также не заменяет резервную копию и может применить ошибочную мутацию или команду DROP. До SYSTEM RESTORE REPLICA, повторной инициализации и иных исправлений фиксируют состояние всех узлов. Пустая очередь говорит о текущем состоянии кластера; о прошлых задержках и потерях частей данных судят по журналам, и если они не сохранились, вывод об этом периоде не делают.

    Отдельная страница: Как исследуют репликацию и ClickHouse Keeper?
    Какие вопросы ставят эксперту по ClickHouse?

    Вопрос должен называть кластер и узлы, базу данных и таблицу, движок, раздел, период и часовой пояс, а для запроса — query_id и ожидаемый охват сегментов. Можно спросить о составе частей данных, событиях в журналах запросов и частей, завершённости мутации, расхождениях реплик, восстановимости резервной копии, причине ошибки или полноте миграции.

    Вместо «кто удалил данные?» корректнее спросить: «Какие записи system.query_log и system.part_log, сведения о мутациях и события хранилища отражают исчезновение раздела X; с какими именами пользователей, адресами и query_id они связаны?» Эксперт не устанавливает умысел и виновность. До назначения проверяют срок хранения и наличие журналов на всех относящихся к задаче узлах, иначе требование полной исторической картины может быть невыполнимо.

    Отдельная страница: Какие вопросы ставят эксперту по ClickHouse?
    Как проверить полноту миграции ClickHouse?

    При миграции ClickHouse сопоставляют базы данных, таблицы и движки, столбцы и типы, значения по умолчанию, кодеки, ключи разделения и сортировки, первичный ключ, выборку, TTL, проекции, индексы, материализованные представления, словари, функции, объекты управления доступом и настройки. В распределённой схеме отдельно проверяют локальные таблицы, ключ сегментирования и устройство кластера.

    Данные сверяют по разделам и стабильным запросам с учётом семантики ReplacingMergeTree и CollapsingMergeTree, FINAL, часовых поясов, Decimal, Nullable, массивов и вложенных типов. Фиксируют момент переключения, поздно поступившие события, устранение дублей, отклонённые пакеты и изменения после среза. Количество физических строк в частях данных не всегда равно логическому результату, поэтому критерии и настройки каждого контрольного запроса документируют. Если перенос и есть предмет спора, задачу закрывает экспертиза миграции баз данных.

    Отдельная страница: Как проверить полноту миграции ClickHouse?
    Можно ли использовать заключение по базе ClickHouse в суде?

    Судебное заключение готовят после назначения экспертизы уполномоченным субъектом — в пределах поставленных вопросов и переданных объектов. Внесудебное исследование сторона представляет сама; заранее установленной доказательственной силы у него нет.

    Суд смотрит на проверяемость выводов. Для ClickHouse в заключении указывают версии узлов, устройство кластера, какие части данных и системные журналы сохранились и за какой период: если журнал запросов был выключен или уже очищен, об этом говорят прямо, а не обходят молчанием.

    До заказа сообщите вид процесса, стадию и ближайшую дату. Мы подготовим сведения о специалисте, ориентировочные срок и стоимость для обсуждения назначения.

    Отдельная страница: Можно ли использовать заключение по базе ClickHouse в суде?
    Чем экспертиза ClickHouse отличается от работы администратора?

    Администратор отвечает за то, чтобы кластер принимал вставки и быстро отвечал: он настраивает слияния, мутации, репликацию, сроки хранения и объём системных журналов.

    Экспертиза отвечает на вопрос о прошлом: какие данные были в таблице на дату, что показывают журнал запросов и журнал частей данных, чем вызвана потеря. Здесь важно, что слияния и сроки хранения сами удаляют старые части, а системные журналы могут быть выключены или уже очищены — вывод строят на том, что сохранилось, и границу называют прямо.

    Если нужно ускорить кластер, начинают с администратора. Если спор о содержимом данных, сначала фиксируют состояние, а оптимизацией занимаются после.

    Отдельная страница: Чем экспертиза ClickHouse отличается от работы администратора?
    Можно ли исследовать работающий кластер ClickHouse, не изменяя данные?

    Читать данные можно, но состояние кластера всё равно меняется: идут вставки и слияния, отрабатывают мутации и сроки хранения, пополняются системные журналы. Даже диагностический запрос попадает в журнал запросов.

    Сначала проверяют полномочия и согласуют допустимые действия с владельцем системы или с назначившим экспертизу органом; если кластер принадлежит другой стороне, копию получают через суд. Согласованную копию получают штатным резервным копированием или снимками дисков каждого узла; объектное хранилище и координатор фиксируют отдельно. Копия одного узла — это не срез всего кластера, и в заключении это оговаривают.

    Проверку гипотез ведут на отдельном стенде совместимой версии. Системные журналы за спорный период вывозят сразу: они хранятся ограниченное время, и через несколько недель восстанавливать будет нечего.

    Отдельная страница: Можно ли исследовать работающий кластер ClickHouse, не изменяя данные?
    Обращение в организацию

    Отправьте материалы на предварительную оценку

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

    Отправить материалы