Перейти к содержанию

Режим восстановления

Раздел Режим восстановления предназначен для защиты целостности blob-хранилищ (см. раздел «Blob-хранилища») на время операций восстановления и обслуживания. Пока режим включён, Система считает, что содержимое хранилища приводится в порядок (восстановление из резервной копии, реконсиляция, ремонт метаданных), и намеренно блокирует операции, которые могут безвозвратно удалить или переместить данные. Это защитный механизм: он не позволяет случайно удалить блобы, которые ещё не зарегистрированы в базе данных или не прошли сверку.

Примечание

Управление режимом восстановления доступно пользователям с ролью nx-admin или с ролью, включающей соответствующие административные привилегии.

Чтобы открыть раздел, выберите в боковом меню пункт Обслуживание, а затем подпункт Режим восстановления. Откроется страница Режим восстановления.

Страница содержит следующие секции.

Управление

  • Включить — включает режим восстановления.
  • Выключить — выключает режим восстановления. Кнопка недоступна, если режим уже выключен.

Внимание

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

Состояние

  • Режим восстановления — текущее состояние режима (Включён, Выключен).
  • Невыполненные планы — наличие невыполненных планов (Да, Нет).

Заблокированные задачи

Пока режим восстановления включён, перечисленные задачи блокируются, поскольку все они так или иначе удаляют, перемещают или переупаковывают блобы:

  • Change repository blob store — перенос репозитория на другое blob-хранилище; во время восстановления исказил бы результаты сверки.
  • Cleanup unused asset blobs — удаление блобов, не связанных ни с одним ассетом в базе данных. Во время восстановления база данных может быть неполной, поэтому нужные блобы могут быть ошибочно определены как неиспользуемые и удалены.
  • Compact blob store — физическое удаление помеченных на удаление (soft-deleted) блобов и уплотнение хранилища; операция необратима.
  • Remove a member from a blob store group — изменение состава группы хранилищ и, как следствие, расположения блобов.

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

Задачи реконсиляции

Задачи реконсиляции восстанавливают согласованность между метаданными в базе данных Системы и фактическим содержимым blob-хранилищ. База данных и blob-хранилище могут рассинхронизироваться — например, после сбоя, восстановления из резервной копии, миграции хранилища или ручных операций с его файлами. Реконсиляция приводит их в соответствие: восстанавливает в базе данных записи о компонентах и артефактах на основе фактически хранящихся блобов, а также временны́е метки артефактов (последние важны для корректной работы политик очистки, опирающихся на даты).

В этой секции отображается перечень задач реконсиляции. Если активных или запланированных задач нет, отображается сообщение «Нет задач реконсиляции» — это штатное состояние для хранилища, которое работает нормально и не восстанавливается.

Примечание

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

Порядок восстановления

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

Внимание

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

  1. Остановите приём новых данных. Заблокируйте запись в затронутые репозитории (например, переведите их в offline). Иначе новые загрузки создадут блобы, которых нет в резервной копии, и усложнят сверку.
  2. Разместите восстанавливаемое blob-хранилище. Убедитесь, что содержимое хранилища из резервной копии находится по пути (или в бакете), который Система ожидает для этого хранилища, вместе со служебными файлами блобов — именно из них реконсиляция берёт информацию о принадлежности блобов репозиториям.
  3. Включите режим восстановления. С этого момента деструктивные задачи (см. секцию Заблокированные задачи) блокируются, что защищает ещё не зарегистрированные и не сверенные блобы.
  4. Запустите реконсиляцию метаданных из blob-хранилища. Задача заново создаёт в базе данных записи о компонентах и артефактах для блобов, которые есть в хранилище, но отсутствуют в базе. Её ход и статус отображаются в секции Задачи реконсиляции. Восстанавливаются только не удалённые (не soft-deleted) блобы; блобы с потерянными или повреждёнными служебными файлами восстановить нельзя. Для крупных хранилищ операция длительная — дождитесь полного завершения.
  5. При необходимости восстановите даты. Если для репозиториев используются политики очистки, опирающиеся на даты (последнее скачивание, дата загрузки), запустите восстановление временны́х меток из blob-хранилища — иначе последующая очистка может удалить не то, что нужно.
  6. Проверьте целостность. Дождитесь завершения всех задач реконсиляции и убедитесь, что компоненты и артефакты снова видны в репозиториях, поиск и просмотр отдают ожидаемое содержимое, а в журнале registry.log (раздел «Логи») нет ошибок реконсиляции.
  7. Выключите режим восстановления. Только после успешной проверки. Заблокированные задачи снова станут доступны.
  8. Выполните обслуживание и верните репозитории в работу. Теперь безопасно запускать деструктивные задачи по плану: при необходимости — уплотнение хранилища (Compact blob store), затем — очистку неиспользуемых блобов (Cleanup unused asset blobs), которая корректна только после полного соответствия базы данных хранилищу. После этого верните репозитории в online и восстановите приём данных.

Важно

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