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

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержание страницы
  1. Что является объектом исследования Redis
  2. Что может и чего не может установить эксперт
  3. Материалы для исследования
  4. RDB и AOF: разные источники и границы исследования
  5. TTL, истечение срока и вытеснение
  6. Репликация, Sentinel и Cluster
  7. Диагностика, аудит и производительность
  8. Как проверить миграцию Redis
  9. Примеры вопросов на экспертизу
  10. Результат и стоимость

Экспертиза Redis нужна, когда спор зависит от значения и типа ключей, TTL, вытеснения, снимка памяти RDB или журнала дозаписи AOF, репликации, Sentinel, Redis Cluster, сбоя, производительности либо миграции. Специалист устанавливает версию и режим размещения, топологию, логическую базу или хеш-слоты, правила сохранения на диск и fsync, политику maxmemory, модули, состояние репликации и связь команд с приложением. Это направление экспертизы баз данных и СУБД.

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

Если система ваша или вы действуете с согласия её владельца, первым делом выясните, сохраняется ли база на диск. Это показывает INFO persistence, а при доступной команде настроек — CONFIG GET save и CONFIG GET appendonly. Если файлы RDB и AOF на диске уже есть, сначала скопируйте их: новый снимок перезапишет прежний dump.rdb с состоянием до происшествия.

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

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

Если сохранение отключено, данные существуют только в памяти, и снимок нужен — иначе любой перезапуск уничтожит объект целиком. Но перед командой проверьте, выдержит ли сервер операцию: фоновое сохранение порождает копию процесса и на нагруженной базе способно занять вдвое больше памяти, а при нехватке — привести к аварийному завершению. Посмотрите свободную память узла, свободное место под каталогом сохранения и значение stop-writes-on-bgsave-error: при неудачном сохранении сервер по умолчанию перестаёт принимать запись. Если запаса нет, снимок делают с реплики, а не с основного узла. Если спорная система принадлежит другой стороне, не запускайте ничего: фиксацию проводят по определению суда с участием эксперта.

До копирования не перезапускайте единственный экземпляр, не запускайте BGREWRITEAOF, не переключайте роли, не перераспределяйте слоты, не выполняйте FLUSHDB/FLUSHALL и не исправляйте AOF: redis-check-aof --fix отбрасывает не «хвост», а всё от повреждённого места до конца файла. Сохраните RDB и весь многофайловый каталог AOF с манифестом, конфигурацию и журнал сервера, зафиксируйте роли, смещения репликации, состояние кластера, время и часовой пояс. Перезапись AOF Redis запускает сам, когда файл заметно вырастает, и копия, снятая во время перезаписи, окажется непригодной. Поэтому перед копированием каталога временно отключают автоматическую перезапись: обнуляют её порог, убеждаются по INFO persistence, что процесс не идёт, копируют файлы и возвращают прежнее значение. Обе команды изменения настроек записывают в протокол. Это делает владелец системы или уполномоченный им администратор; если система принадлежит другой стороне, сохранение доказательств организуют через суд.

Не выполняйте диагностические команды, меняющие сроки хранения или счётчики, без протокола. Если для согласованного снимка используют CLIENT PAUSE ... WRITE, помните, что это остановка записи в боевой системе: задавайте конечный таймаут, чтобы пауза снялась сама, и согласуйте окно с владельцем — Redis обычно обслуживает критические запросы приложения, и пауза в десятки секунд вызывает массовые тайм-ауты у клиентов. В управляемых сервисах доступа к живым файлам на узле нет, а часть команд недоступна. Зато у ряда провайдеров резервную копию можно выгрузить из сервиса в виде файла RDB — это предпочтительный объект: его можно хэшировать, передать и разобрать автономно, в отличие от точки восстановления внутри сервиса. Фиксируют идентификатор задания выгрузки, время, регион и контрольную сумму. Что именно доступно, зависит от продукта и тарифа; недоступность части источников эксперт указывает как ограничение вывода.

Что является объектом исследования Redis

Redis хранит рабочий набор данных преимущественно в памяти, а сохранение на диск может использовать RDB, AOF, их сочетание или быть полностью отключено. Одиночный сервер, основной узел (primary) с репликами, Sentinel и Redis Cluster имеют разную топологию. Управляемые сервисы Redis и Redis Software добавляют собственные резервные копии, аудит и источники панели управления; точные продукт и версию устанавливают по объекту.

В зависимости от задачи исследование может охватывать:

  • имена ключей, логические базы или слоты кластера, типы и значения данных, TTL и кодировку;
  • снимки RDB и их метаданные, манифест AOF, базовые и добавочные файлы;
  • настройки сохранения на диск, точки сохранения, appendfsync, перезапись AOF и результаты последнего сохранения;
  • maxmemory, политику вытеснения, счётчики истёкших и вытесненных ключей, уведомления пространства ключей;
  • идентификаторы и смещения репликации, буфер истории, роли, состояние Sentinel, узлы и слоты Cluster, эпохи конфигурации;
  • пользователей и правила ACL, ACL LOG, SLOWLOG, монитор задержек, журналы сервера и сохранённые результаты INFO и MONITOR;
  • модули, журналы приложения, очереди, сеансы и бизнес-смысл ключей.

Один dump.rdb описывает набор данных на момент снимка, а не обязательно момент инцидента. Текущий работающий экземпляр уже изменяется из-за клиентов, истечения TTL и фоновой работы. Поэтому каждое состояние привязывают к способу и времени получения.

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

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

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

  • какие ключи, типы, значения и сроки действия содержатся в конкретном RDB или воспроизводимом AOF;
  • какие команды записи сохранились в AOF после последнего базового файла и перезаписи;
  • допускают ли политика сохранения и зафиксированный сбой потерю определённого интервала записей;
  • имеются ли признаки истечения TTL, нехватки памяти, вытеснения, FLUSH или удаления приложением;
  • как менялись роли, смещения репликации, переключения и принадлежность слотов;
  • что отражают ACL LOG, SLOWLOG, монитор задержек, журналы сервера и приложения;
  • полностью ли перенесены ключи, значения, типы и TTL.

Redis по умолчанию не хранит вечную историю всех команд и пользователей. SLOWLOG включает только медленные с точки зрения выполнения команды, имеет ограниченный размер и исключает сетевой ввод-вывод. ACL LOG ориентирован на нарушения аутентификации и авторизации, а не на все успешные действия. MONITOR показывает поток с момента запуска и влияет на производительность. IP, имя клиента или пользователь ACL не обязательно идентифицируют физическое лицо.

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

Файлы собирают до перезапуска и перезаписи AOF. Для каждого объекта фиксируют исходный узел и путь, средство получения и его версию, дату, время и часовой пояс, размер и SHA-256 завершённой мастер-копии. Мастер-копию сохраняют неизменной, исследование ведут на рабочей копии; после каждой передачи повторно проверяют SHA-256 и записывают отправителя, получателя, время и носитель. В Redis 7 и новее AOF может состоять из манифеста, базовых и добавочных файлов в одном каталоге; выборочное копирование одного файла неполно.

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

  • все снимки и резервные копии RDB, метаданные их создания;
  • полный каталог AOF, манифест, базовые и добавочные файлы, а также старые копии до перезаписи;
  • redis.conf, параметры командной строки, подключаемые файлы, файл ACL и конфигурацию модулей;
  • сохранённые разделы INFO: server, persistence, stats, memory, replication, commandstats, keyspace и cluster;
  • ROLE, идентификаторы и смещения репликации, буфер истории, конфигурацию и состояние Sentinel, CLUSTER NODES/SLOTS и события переключения;
  • журналы сервера, ACL LOG, SLOWLOG, данные задержек, журналы подписчика на уведомления ключей и внешнего мониторинга;
  • журналы приложения, прокси, IdP, оркестратора и сети, версию клиентской библиотеки и правила повторных попыток;
  • правила именования и шаблоны ключей, сериализацию, план миграции, SLA и спорный период.

Команды на работающей системе могут менять счётчики, косвенные служебные структуры, журналы или нагрузку. Полный KEYS * на крупном рабочем экземпляре способен блокировать обслуживание; стратегию сбора выбирают с учётом риска и документируют. Последовательные SCAN, DUMP или чтения ключей не создают согласованного снимка: при одновременных записях ключи и значения могут появляться, исчезать или меняться между шагами, поэтому такой результат нельзя называть состоянием на единый момент.

Согласованный срез получают выбранным и заранее описанным способом: краткой документированной приостановкой записей, штатным снимком управляемого сервиса либо контролируемым созданием RDB после сохранения уже существующих RDB/AOF. Для совместимых версий одним из вариантов служит CLIENT PAUSE ... WRITE на всех основных узлах с последующим CLIENT UNPAUSE. Для паузы указывают средство и версию, подтверждают её на всех узлах, учитывают поведение истечения срока ключей и вытеснения именно в этой версии и фиксируют общий подтверждённый интервал. BGSAVE создаёт новое производное состояние данных и меняет служебное состояние, поэтому фиксируют команду, время, журнал и влияние. Для Redis Cluster охватывают все основные узлы и все хеш-слоты. Если записи не остановлены, для каждого узла фиксируют начало и конец выгрузки, топологию, смещения репликации и параллельные изменения и формулируют интервальный, а не точечный вывод. Исходные RDB, AOF и выгрузку оперативного состояния хранят раздельно, каждый объект получает собственный SHA-256.

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

RDB и AOF: разные источники и границы исследования

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

AOF записывает команды изменения данных для последующего воспроизведения. Устойчивость зависит от appendfsync: always, everysec и no дают разные окна риска. При перезапуске и одновременном RDB+AOF Redis использует AOF как более полный источник. Повреждённый или оборванный хвост исследуют до redis-check-aof --fix, поскольку исправление отбрасывает часть файла.

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

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

TTL, истечение срока и вытеснение

Ключ может исчезнуть из-за явных DEL/UNLINK, истечения TTL, вытеснения по maxmemory, FLUSH, перезаписи, загрузки нового набора данных, переключения ролей либо логики модуля. Истечение обрабатывается пассивно при доступе и активно фоновой выборкой, поэтому физический момент удаления может отличаться от расчётного момента TTL.

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

Отдельно учитывают, что записи AOF по умолчанию не содержат времени: параметр aof-timestamp-enabled появился в Redis 7.0 и по умолчанию выключен, а имени клиента или пользователя в журнале нет вовсе. Поэтому время события по AOF определяют не из самого файла, а через сопоставление с журналом сервера, метриками, снимками RDB и внешними источниками.

Вытеснение зависит от maxmemory и политики, например LRU, LFU или случайного выбора для всех либо только ключей с TTL. Счётчики INFO показывают агрегаты после запуска, но не называют каждый ключ. Уведомления пространства ключей помогают только если были включены и подписчик сохранил события; сами уведомления не являются сохраняемым журналом. Причину устанавливают по конфигурации, AOF, журналам, метрикам и приложению, а при недостатке данных оставляют альтернативы.

Репликация, Sentinel и Cluster

Репликация Redis по умолчанию асинхронна. Основной узел передаёт поток команд, а реплика отслеживает идентификатор и смещение репликации; буфер истории позволяет частичную повторную синхронизацию. При переключении роли признанная приложением запись могла не успеть попасть на реплику, назначенную основным узлом. WAIT повышает вероятность доставки на заданное число реплик, но не превращает Redis в строго согласованное хранилище и не заменяет сохранение на диск.

Sentinel наблюдает экземпляры и координирует переключение ролей. Исследуют кворум, эпохи, выбор ведущего, выбранную реплику и переконфигурацию. Redis Cluster распределяет пространство ключей по хеш-слотам; проверяют идентификаторы узлов, эпохи конфигурации, перемещения слотов, состояния миграции и импорта, переключения и служебную сеть кластера. Реплика и соседний узел не являются независимой резервной копией: пустой или ошибочно изменённый основной узел может распространить состояние.

Диагностика, аудит и производительность

Журнал сервера и INFO описывают запуск, сохранение на диск, репликацию, память и счётчики. SLOWLOG хранит ограниченный список команд, чьё время выполнения сервером превысило порог, без сетевого времени. Монитор задержек фиксирует выбранные события с ограниченной историей и обычно выключен по умолчанию. ACL LOG сообщает об отказах аутентификации, авторизации и некоторых событиях безопасности.

MONITOR передаёт выполняемые команды только с момента подключения и создаёт существенную нагрузку, поэтому его нельзя бездумно включать в рабочей среде. Чтобы установить причину задержки, сопоставляют commandstats, SLOWLOG, крупные ключи, фрагментацию памяти, создание дочернего процесса, fsync и перезапись RDB/AOF, вытеснение, CPU, ввод-вывод, сеть и пулы приложения. Текущий снимок не доказывает прошлое состояние без сохранённого мониторинга. Замедления и отказы сами по себе исследует экспертиза производительности и сбоев СУБД.

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

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

Фиксируют версии источника и приёмника, снимок и момент переключения, схему репликации или двойной записи, сериализатор, отклонённые ключи, повторные попытки и записи после переключения. Отдельно проверяют ACL, сценарии и функции, модули, публикацию/подписку и поведение клиента: сообщения Pub/Sub не входят в набор данных RDB/AOF. MIGRATE, репликация и восстановление по-разному обрабатывают TTL и замену существующего ключа; эти различия учитывают в критериях проверки. Когда предметом спора становится сам перенос, а не устройство базы, требуется экспертиза миграции баз данных.

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

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

До назначения стороны могут предложить суду или иному уполномоченному органу следующие формулировки технических вопросов. Для Redis полезно указать экземпляр или кластер, логическую базу или слоты, ключ или шаблон, период, часовой пояс и технический критерий. Например, можно предложить исследовать, отражают ли AOF и журналы удаление ключа X и с какими техническими идентификаторами связана команда, либо какое состояние ключей по шаблону P воспроизводится из RDB Z и полного каталога AOF. Дополнительные примеры:

  1. Какие ключи, типы, значения и TTL содержатся в представленном RDB?
  2. Какие команды изменения данных и состояния воспроизводятся из представленного AOF?
  3. Каковы границы времени RDB и какой интервал изменений мог быть утрачен при сбое?
  4. Какова последовательность команд в представленном AOF и с какими внешними источниками её можно соотнести по времени?
  5. Имеются ли признаки DEL, FLUSH, истечения TTL или вытеснения применительно к указанным ключам?
  6. Как менялись роли, идентификаторы и смещения репликации при переключении?
  7. Соответствовали ли настройки сохранения данных установленным требованиям к надёжности?
  8. Какие события безопасности отражены в ACL LOG и журналах сервера?
  9. Какие факторы вызвали зафиксированный скачок задержки?
  10. Корректно ли распределены хеш-слоты и отсутствуют ли подтверждаемые потери при их перераспределении?
  11. Полностью ли перенесены ключи, значения, типы, TTL и служебное состояние?

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

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

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

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

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

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

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

В случаях, перечисленных пунктом 5 постановления № 28, когда экспертизу по уголовному делу назначает суд, ему следует мотивировать в определении или постановлении поручение исследования учреждению либо конкретному лицу. Пункт 5 постановления № 28 связывает выбор негосударственного учреждения с невозможностью провести исследование в государственном учреждении, обслуживающем соответствующую территорию: например, из-за отсутствия нужного специалиста, материально-технической базы или специальных условий, либо с отводом компетентных государственных учреждений. Дополнительно учитываются квалификация эксперта, основания для отвода и действующий перечень экспертиз, выполняемых только государственными судебно-экспертными организациями.

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

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

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

По договору

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

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

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

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

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

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

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

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

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

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

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

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

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

Получить организационный разбор
Организация исследования

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

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

  1. 01 Организационный разбор

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

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

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

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

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

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

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

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

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

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

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

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

Экспертиза Redis нужна, когда спор зависит от набора ключей и значений, типов данных, TTL, вытеснения, RDB или AOF, репликации, Sentinel, Cluster, сбоя или производительности. Она помогает определить состояние по снимку, воспроизвести сохранившийся AOF, оценить возможный интервал потери, исследовать переключение ролей и проверить миграцию.

Если Redis использовался только как очищаемый кэш и сохранение на диск было отключено, историю можно восстановить лишь по внешним журналам и основной системе. Специализация нужна, когда ответ зависит от fsync, перезаписи AOF, истечения TTL, политики maxmemory, смещений репликации, хеш-слотов или модулей. Сначала устанавливают точный продукт, версию, топологию и бизнес-роль ключей. Порядок работы, состав материалов и сроки собраны на странице экспертизы Redis.

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

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

Сохранение на диск могло быть отключено, RDB описывает только снимок, риск AOF зависит от режима fsync и после перезаписи не хранит полную историю. TTL и вытеснение могли удалить ключ без отдельного сохраняемого события. Предварительная оценка показывает, можно ли установить прежнее значение по имеющимся источникам, и позволяет сохранить файлы до перезапуска или BGREWRITEAOF. Отсутствие нужного аудита выявится до исследования.

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

Собирают все снимки и резервные копии RDB, полный каталог AOF с манифестом, базовыми и добавочными файлами, конфигурацию, подключаемые файлы и ACL, модули и журналы сервера. Нужны сохранённые разделы INFO, ROLE, идентификаторы и смещения репликации, состояние Sentinel, узлы и слоты Cluster, события переключения, SLOWLOG, ACL LOG и данные задержек.

Также полезны журналы приложения, прокси, IdP, оркестратора и мониторинга, версия клиентской библиотеки, правила повторных попыток, схема ключей, сериализатор, SLA и план миграции. Для каждого объекта фиксируют источник — узел и путь, средство и его версию, дату, время и часовой пояс, размер и SHA-256 мастер-копии. Её сохраняют неизменной, исследование ведут на рабочей копии; после каждой передачи проверяют SHA-256 и записывают отправителя, получателя, время и носитель. Последовательные SCAN/DUMP при записях не образуют единый снимок. Для текущего состояния после сохранения существующих RDB/AOF выбирают приостановку записей, штатный снимок сервиса или документированный BGSAVE; в Redis Cluster охватывают все основные узлы (primary) и хеш-слоты, фиксируют начало, конец, топологию, смещения и параллельные изменения. RDB, AOF и оперативную выгрузку хранят раздельно.

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

Стоимость и срок зависят от версии, числа экземпляров, шардов и реплик, размера набора данных и AOF, режима сохранения на диск, повреждения, модулей, количества снимков и периода. Трудоёмкость увеличивают многофайловый AOF, перераспределение слотов Cluster, переключение Sentinel, выгрузки управляемого сервиса, двоичная сериализация и сопоставление с приложением.

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

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

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

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

Отдельная страница: Можно ли восстановить удалённые ключи Redis?
Чем различаются RDB и AOF в Redis?

RDB — снимок набора данных на определённый момент. Изменения после последнего успешного сохранения в нём отсутствуют, поэтому при аварии возможна потеря интервала. AOF записывает команды изменения данных; окно устойчивости зависит от appendfsync. Если включены оба механизма, при обычном перезапуске Redis использует AOF как более полный источник.

Перезапись AOF заменяет прежнюю последовательность минимизированным представлением текущего набора данных, поэтому AOF не является вечным аудитом команд. В Redis 7+ он может состоять из манифеста, базовых и добавочных файлов; весь каталог копируют согласованно и не во время перезаписи. До загрузки проводят автономный разбор и фиксируют абсолютные сроки истечения: в текущем времени просроченные ключи могут исчезнуть сразу. Рабочую копию запускают на изолированном стенде с документированным контрольным временем.

Отдельная страница: Чем различаются RDB и AOF в Redis?
Можно ли отличить удаление ключа от истечения TTL и вытеснения Redis?

Ключ может исчезнуть из-за DEL/UNLINK, истечения TTL, вытеснения по maxmemory, FLUSH, перезаписи, загрузки другого набора данных, переключения роли или логики модуля и приложения. Истечение обрабатывается пассивно при доступе и активно фоновым алгоритмом, поэтому физическое удаление не обязано совпадать с расчётной секундой TTL.

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

Отдельная страница: Можно ли отличить удаление ключа от истечения TTL и вытеснения Redis?
Как исследуют репликацию, Sentinel и Redis Cluster?

Проверяют роли, идентификаторы и смещения репликации, буфер истории, состояние связи, историю синхронизации и переключений. Репликация Redis обычно асинхронна, поэтому подтверждённая клиенту запись могла не достичь реплики, назначенной основным узлом (primary). WAIT повышает вероятность доставки заданному числу реплик, но не обеспечивает абсолютную сохранность и не заменяет сохранение на диск.

В Sentinel исследуют кворум, эпохи, выбор ведущего и переконфигурацию; в Cluster — идентификаторы узлов, эпохи конфигурации, принадлежность слотов, состояния миграции и импорта и переключения. Реплика не является независимой резервной копией и может получить пустое или ошибочно изменённое состояние. До повторной синхронизации и исправляющих команд фиксируют каждый узел: совпадение смещений показывает только текущее состояние, а о прошлой потере говорят журналы, если они сохранились.

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

В вопросе указывают экземпляр или кластер, логическую базу или слоты, ключ или шаблон, период, часовой пояс и критерий. Можно спросить о составе RDB, воспроизводимом AOF, возможном интервале потери, признаках DEL, истечения TTL или вытеснения, ходе переключения, соответствии правил сохранения, причине задержки или полноте миграции.

Вместо «кто удалил ключ?» корректнее спросить, отражают ли AOF и журналы сервера и приложения удаление ключа X, какая команда, какой клиент и какие идентификаторы ACL с ним связаны. Эксперт не устанавливает конкретного человека только по IP или общей служебной учётной записи и не решает вопрос умысла. Формулировки проверяют до назначения с учётом фактического срока хранения источников и охвата всех основных узлов (primary) и хеш-слотов.

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

При миграции Redis сопоставляют логические базы или хеш-слоты, имена и двоичное представление ключей, типы, значения и TTL. Отдельно проверяют потоки и группы потребителей, оценки упорядоченных множеств, порядок списков, содержимое хешей и множеств, битовые карты, HyperLogLog, геоданные, сценарии и функции, модули и ACL.

Фиксируют версии, исходный снимок, момент переключения, сериализатор, схему репликации или двойной записи, отклонённые ключи, повторные попытки и записи после переключения. TTL закономерно уменьшается, поэтому сравнение требует общего времени и допуска. Сообщения Pub/Sub не входят в сохраняемый набор данных. Равное количество ключей не подтверждает равенство типов, значений и служебного состояния, от которого зависит приложение. Если перенос и есть предмет спора, требуется экспертиза миграции баз данных.

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

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

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

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

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

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

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

Если задача — вернуть сервис в строй, действует администратор. Если спор о данных, сначала копируют то, что уже лежит на диске: файл снимка и весь каталог журнала дозаписи. Новый снимок памяти делают только после этого — он перезаписывает прежний файл, а прежний и есть состояние до происшествия.

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

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

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

Разбор файлов и восстановление ведут на изолированном экземпляре. Работающий сервер для экспериментов не используют.

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

Уточните формат и комплектность

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

Описать задачу