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

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

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

примечание

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

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

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

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

# 2. Выполнить восстановление
sudo komrad-cli restore /var/backups/komrad/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/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/20260630T120000Z \
/var/backups/komrad/

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

sudo komrad-cli restore /var/backups/komrad/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/20260630T120000Z \
--passphrase "секретная_фраза"

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

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

# Только PostgreSQL (инциденты, настройки)
sudo komrad-cli restore /var/backups/komrad/20260630T120000Z \
--only postgres --passphrase "..."

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

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

# Конфигурации и PostgreSQL (без событий)
sudo komrad-cli restore /var/backups/komrad/20260630T120000Z \
--only files --only postgres --passphrase "..."
примечание

При избирательном восстановлении сервисы не запускаются автоматически. Запустите их вручную после проверки:

sudo systemctl start komrad-server komrad-processor komrad-correlator

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

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

sudo komrad-cli restore /var/backups/komrad/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.