Резервное копирование и восстановление данных активности
Документация
Главная

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

В системе Proceset можно настроить резервное копирование данных активности, собранной агентом мониторинга. На каждой ноде резервная копия создается сразу для всех годовых баз активности.

Как работает резервное копирование

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

Важно

Точка восстановления — последняя успешная резервная копия. Промежуточных точек нет: при аварии возможна потеря данных за период до 24 часов, прошедших с этого момента.

Предупреждение

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

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

Заметка

По умолчанию каталог для резервных копий данных активности — backup относительно рабочего каталога (dataDir) ноды. Это то же значение по умолчанию, что и у резервных копий встроенной файловой базы данных (C:/ProgramData/Infomaximum/backup на Windows). Если хотя бы один из путей переопределен, каталоги могут не совпадать. Файлы мониторинга (годовые базы активности, monitoring_raw_data, backup-manifest.json) хранятся в собственных подкаталогах и не пересекаются с файлами резервной копии встроенной файловой базы данных.

Настройка резервного копирования

Функция отключена по умолчанию. Основные параметры задаются в конфигурационном файле com.infomaximum.subsystem.monitoring.json:

ПараметрПо умолчаниюОписание
activity_backup_enabledfalseВключает резервное копирование: планирует ночную задачу на всех нодах кластера мониторинга
activity_backup_path"backup"Каталог для резервных копий. Относительный путь разрешается относительно рабочего каталога (dataDir) каждой ноды
activity_backup_watchdog_seconds7200Порог предупреждения о слишком долгом резервном копировании — 7200 секунд (2 часа). При превышении порога фиксируется только предупреждение, само копирование не прерывается

Чтобы включить резервное копирование:

  1. В файле com.infomaximum.subsystem.monitoring.json укажите activity_backup_enabled: true. При необходимости задайте activity_backup_path и activity_backup_watchdog_seconds.
  2. Перезапустите контейнер ноды. Настройки применяются на той ноде, где вы их изменили, и автоматически передаются на остальные ноды кластера мониторинга — их отдельно перезапускать не нужно.

Если на конкретной ноде копию нужно сохранять по другому пути, переопределите его локально — необязательный параметр backup_path в файле com.infomaximum.subsystem.monitoringhandler.json этой ноды. После изменения перезапустите контейнер этой ноды.

Итоговый путь для копии определяется в таком порядке:

  1. Локальный параметр backup_path ноды.
  2. Параметр activity_backup_path из общих настроек.
  3. Каталог backup в рабочем каталоге ноды — если ни один из параметров не задан.
Предупреждение

Не изменяйте вручную файл backup-manifest.json в каталоге резервных копий и файл monitoring_activity_registry.json в каталоге баз данных. Манифест подтверждает целостность копии. Реестр восстанавливается автоматически при следующем запуске контейнера ноды — если он поврежден, удалите файл полностью, система пересоздаст его сама.

Чтобы отключить резервное копирование, укажите activity_backup_enabled: false и перезапустите контейнер ноды. Ночная задача останавливается, но уже созданные копии на диске не удаляются.

Ручной запуск резервного копирования

Резервное копирование и восстановление выполняются через GraphQL и требуют привилегии Параметры мониторинга: операция чтения (R) — для запросов статусов, операция изменения (W) — для запуска резервного копирования и восстановления.

Чтобы запустить резервное копирование вручную, выполните запрос:

mutation {
  monitoring_backup {
    run(shard_ids: [1, 2]) {
      shard_id
      state
      guid
    }
  }
}

Если параметр shard_ids не указан, копирование запускается на всех нодах кластера мониторинга.

ПолеОпределение
shard_idИдентификатор ноды кластера мониторинга
stateСтатус запуска на этой ноде — RUNNING, если копирование запущено
guidИдентификатор запущенной операции

Вызов неблокирующий: нода запускает копирование в фоне и сразу возвращает статус. Повторный вызов на ноде, где копирование уже идет, возвращает тот же guid — повторно копирование не запускается.

Чтобы проверить статус копирования по всем нодам, выполните запрос:

query {
  monitoring_backup {
    statuses {
      shard_id
      state
      guid
      started
      finished
      total_size_bytes
      error_message
    }
  }
}
ПолеОпределение
shard_idИдентификатор ноды кластера мониторинга
stateТекущий статус: IDLE — нет активной операции, RUNNING — выполняется резервное копирование, SUCCESS — резервное копирование завершено, RESTORING — выполняется восстановление, RESTORED — восстановление завершено, ERROR — операция завершилась ошибкой, или UNAVAILABLE, если нода недоступна
guidИдентификатор операции
started, finishedВремя начала и завершения операции
total_size_bytesРазмер созданной копии в байтах
error_messageТекст ошибки, если stateERROR

Восстановление данных

Заметка

Восстановление доступно только при включенном activity_backup_enabled. Если резервное копирование выключено, запрос на восстановление отклоняется с ошибкой monitoring_backup_disabled — сначала включите параметр.

Восстановление — операция, которую администратор запускает вручную и контролирует до конца.

  1. Запустите восстановление на нужных нодах:
    mutation {
      monitoring_backup {
        restore(shard_ids: [1, 2]) {
          shard_id
          state
          error_message
        }
      }
    }
    
    Параметр shard_ids обязателен — восстановление выполняется только для указанных нод. Вызов неблокирующий.
  2. Дождитесь статуса RESTORED для каждой восстанавливаемой ноды — проверьте его запросом состояния. Пока восстановление не завершено, статус — RESTORING. Статус RESTORED сохраняется даже после перезапуска ноды. После восстановления нода сразу принимает и обрабатывает новую активность. Если восстановление завершилось ошибкой, повторный запуск того же запроса restore на этой ноде доводит операцию до конца — начинать заново не нужно.
  3. Перед следующим шагом рекомендуется сделать собственную копию затронутых таблиц ClickHouse (monitoring_activity, monitoring_agent_inspector_log) — например, средствами ClickHouse скопировать или переименовать таблицы. Это решение и ответственность администратора.
  4. Получите команды очистки ClickHouse:
    query {
      monitoring_backup {
        clickhouse_cleanup_queries(shard_ids: [1, 2]) {
          shard_id
          queries
        }
      }
    }
    
    Для каждой восстановленной ноды запрос возвращает готовые команды удаления строк, которые в ClickHouse оказались «из будущего» относительно точки восстановления. Запрос только формирует команды — система их не выполняет.
  5. Выполните полученные команды в ClickHouse самостоятельно. До этого шага строки «из будущего» видны в отчетах, а новая активность в базе Proceset накапливается без синхронизации с ClickHouse.
  6. Проверьте, что синхронизация с ClickHouse догнала базу Proceset:
    query {
      monitoring_diagnostics {
        comparison_max_row_number {
          node_id
          max_rocks_id
          max_ch_id
        }
      }
    }
    
    Дождитесь, когда max_rocks_id и max_ch_id совпадут по восстановленным нодам. После выполнения команд из предыдущего шага синхронизация сама доливает недостающие данные, без дублей и пропусков.
Важно

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

Возможные ошибки

Код ошибкиКогда возникает
monitoring_backup_disabledРезервное копирование или восстановление запущено при activity_backup_enabled: false
monitoring_restore_shard_mismatchВосстановление запущено на ноду, идентификатор которой не совпадает с идентификатором ноды в манифесте копии

Была ли статья полезна?

Предыдущая
Архивация активности
Следующая
Работа с поврежденными архивами мониторинга
8 (800) 555-89-02
430006, Саранск,
Северо-восточное шоссе, д. 3
Код вида деятельности
в области ИТ 15.02 и 17.01
ОКВЭД 62.01
ИНН 1328​909857
Языки программирования: