Перейти к основному содержимому
Версия: 4.6.X

Восстановление из резервной копии

komrad-cli restore <set-dir> восстанавливает состояние узла KOMRAD из набора резервных копий, созданного командой backup create.

примечание

Удаляйте устаревшие наборы командой komrad-cli backup prune, а не find/rm. При --ch-mode incremental наборы образуют цепочки ClickHouse: восстановление инкремента требует его базы (метка base-* должна оставаться на диске komrad_backup). prune никогда не удалит базовый набор, пока от него зависит другой сохраняемый набор; ручное удаление об этой связи не знает и может оставить инкременты невосстановимыми.

Восстановление на том же узле​

Используйте, когда узел работает, но требуется откат состояния (например, после ошибочных изменений конфигурации).

# 1. Остановить сервисы KOMRAD
sudo systemctl stop komrad-* pauth-server

# 2. Выполнить восстановление
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--passphrase "секретная_фраза"

# 3. Убедиться, что сервисы запустились
systemctl status komrad-server komrad-processor komrad-correlator

Команда автоматически запускает сервисы после восстановления. Чтобы пропустить автозапуск, добавьте --no-start.

Полное восстановление (DR)​

Восстановление на чистом узле — новое железо или виртуальная машина с тем же IP-адресом, что и исходный узел.

Шаг 1. Установить ОС (Astra Linux, REDOS, ALT Linux, Ubuntu).

Шаг 2. Установить пакеты KOMRAD той же версии, что была при создании резервной копии.

warning

Версия установленных пакетов должна совпадать с версией в манифесте резервной копии (manifest.json → поле version). При несовпадении restore завершится ошибкой. Используйте --force только если вы уверены в обратной совместимости.

# Проверить версию в копии
cat /var/backups/komrad/komrad-node1-20260630T120000Z/manifest.json | python3 -c \
"import sys,json; print(json.load(sys.stdin)['version'])"

# Установить пакеты нужной версии
sudo dpkg -i /path/to/komrad_<version>_amd64.deb

Шаг 3. Скопировать набор резервных копий на новый узел:

rsync -avz operator@source:/var/backups/komrad/komrad-node1-20260630T120000Z \
/var/backups/komrad/

Шаг 4. Запустить восстановление:

sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--passphrase "секретная_фраза"

Шаг 5. Проверить работу узла:

systemctl status komrad-server komrad-processor komrad-correlator komrad-reactor
journalctl -u komrad-server -n 50 --no-pager

Восстановление на другом узле (cross-VM)​

Когда IP-адрес нового узла отличается от исходного, TLS-сертификаты и учётные данные NATS необходимо перевыпустить.

komrad-cli restore делает это автоматически: после восстановления данных на диск запускается перевыпуск идентификационных материалов (hostidentity.Apply) с учётом текущего IP-адреса узла.

примечание

Убедитесь, что сетевой интерфейс и IP-адрес назначены до запуска restore. Команда считывает текущий IP для перевыпуска сертификатов.

Процедура идентична DR:

sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--passphrase "секретная_фраза"

Избирательное восстановление​

Флаг --only ограничивает восстановление конкретными поверхностями (флаг повторяется):

warning

Избирательное восстановление предназначено для того же узла, на котором создана копия. Не используйте его для переноса на узел с другим IP-адресом: в этом режиме не выполняется полный сценарий адаптации конфигурации и сертификатов. Для нового узла используйте полное восстановление или восстановление на другом узле.

# Все базы PostgreSQL: настройки, правила корреляции, инциденты, активы, учётные записи
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only postgres --passphrase "..."

# Только события ClickHouse
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only clickhouse --passphrase "..."

# Все файловые поверхности: конфигурации, секреты, сертификаты
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only files --passphrase "..."

# Файлы и PostgreSQL (без событий)
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only files --only postgres --passphrase "..."

Для PostgreSQL, NATS JetStream и файлов можно выбрать не всю поверхность, а подселектор. Допустимые файловые подселекторы зависят от содержимого набора: обычно это configs, secrets, certs и integrity. Список доступных files:<подселектор> указан в manifest.json.

Если селектор не совпадает ни с чем в наборе — опечатка или база данных, которой нет в копии, — команда завершается ошибкой до запроса фразы-пароля и до остановки сервисов. В сообщении перечислены все допустимые селекторы набора, включая postgres:<база> для каждой сохранённой базы:

--only postgres:assetkeper matches nothing in this backup set; it contains: clickhouse, files:certs, files:configs, files:secrets, natsjs, postgres, postgres:assetkeeper, postgres:komrad-preferences, postgres:pauth-preferences

Схема в селекторе postgres:<база>.<схема> проверяется только при восстановлении: список схем хранится внутри дампа.

# Только база данных assetkeeper
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only postgres:assetkeeper --passphrase "..."

# Только схема incman в базе komrad-preferences
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only postgres:komrad-preferences.incman --passphrase "..."

# Только конфигурационные файлы
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only files:configs --passphrase "..."

# Только поток EVENTS JetStream
sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--only natsjs:EVENTS --passphrase "..."

--only postgres восстанавливает все базы данных PostgreSQL, попавшие в набор, а не только инциденты и настройки:

База / схемаЧто содержит
komrad-preferences (схема preferences)коллекторы и их плагины, фильтры, дашборды, уведомления, сертификаты, пакеты экспертизы, динамические списки, политики доступа, комментарии
komrad-preferences.corrdispдирективы (правила корреляции), корреляторы, теги
komrad-preferences.incmanинциденты и их история
komrad-preferences.mlзадачи машинного обучения, правила детекторов, календари
pauth-preferencesучётные записи сервера аутентификации
assetkeeperактивы
база сканератолько если установлен komrad-scanner

Состав баз определяется конфигурациями сервисов на узле в момент создания копии.

warning

События хранятся в ClickHouse, а не в PostgreSQL: --only postgres восстанавливает инциденты, но не связанные с ними события. Чтобы восстановить и события, добавьте --only clickhouse.

примечание

По умолчанию избирательное восстановление останавливает запущенные сервисы KOMRAD (кроме komrad-bus), восстанавливает выбранные данные и запускает те же сервисы снова — иначе сервис продолжил бы работать со старым состоянием.

  • --no-start — оставить сервисы остановленными; команда напечатает порядок их запуска.
  • --online — не останавливать сервисы. Восстановленные данные и настройки вступят в силу только после их перезапуска.
  • --start — полный сценарий восстановления: проверка версии, перевыпуск идентификационных материалов узла, запуск всех сервисов.

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

Копии, зашифрованные токеном JaCarta​

Если копия создана с --cipher jacarta, для восстановления обязателен --config с параметрами cipher.jacarta (модуль PKCS#11, метка токена, путь к сайдкару komrad-jacarta):

sudo komrad-cli restore /var/backups/komrad/komrad-node1-20260630T120000Z \
--config /etc/echelon/komrad/komrad-backup.yaml

Ключ расшифровывается одним из двух способов:

  • Токен — подключите JaCarta с ключом, метка которого записана в манифесте; PIN задаётся в cipher.jacarta.user_pin.
  • Escrow (аварийный) — без токена укажите escrow-фразу: cipher.escrow.passphrase в конфиге, либо просто --passphrase "фраза" (если escrow в конфиге не задан, флаг трактуется как escrow-фраза). Escrow доступен только для копий, при создании которых escrow-фраза была задана.
warning

Ключевой материал у JaCarta-копий вырабатывается для каждого блоба, и восстановление обращается к токену в обеих фазах — при проверке и при применении. Токен должен оставаться подключённым и разблокированным всё время восстановления, а не только в его начале.

Если восстановление завершается ошибкой HMAC-Streebog-256 verification failed, это не обязательно повреждение архива: та же ошибка возникает, когда cipher.jacarta.key_label больше не указывает на ключ, которым была зашифрована копия. См. Диагностика.

Подробности — в Шифрование токеном JaCarta.

Учётные данные PostgreSQL​

Как и backup create, restore при отсутствии пароля в конфигах сервисов берёт его из PGPASSWORD, затем из PGPASSFILE/~/.pgpass. См. Учётные данные PostgreSQL.