Перейти к содержимому

Резервные копии ​

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

На этой странице описаны хранилище копий, расписание, правила хранения, проверка, экраны состояния и порядок восстановления. Восстановление — это команда, которую вы запускаете на сервере. В консоли кнопки восстановления нет.

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

Агент — третья служба установки рядом с API и обработчиком. Он называется arkvory-backup в Linux, Arkvorybackup в Windows и backup в Docker Compose. Одновременно работает только один агент. Второй агент ждёт и берёт работу на себя, когда первый останавливается.

Агент выполняет три задачи:

  • Запускает ежедневный план, если план включён.
  • Выполняет задания, которые вы запрашиваете в консоли, командой arkvoryctl или через API.
  • Проверяет каждую новую точку восстановления и применяет правила хранения.

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

Учитывайте следующее:

  • Резервное копирование не останавливает загрузки и скачивания. Пока оно выполняется, физическая очистка не трогает нужные копии файлы и удаляет их при одном из следующих проходов.
  • Файл хранится в хранилище копий один раз, сколько бы точек восстановления его ни содержало. Первая копия переносит всё, поэтому при терабайтах данных она занимает много времени. Следующие копии переносят только новые файлы.
  • Точка восстановления появляется, только когда копирование завершено полностью. Неудачная или прерванная копия никогда не повреждает прежние точки.
  • Резервная копия — это не восстановление на произвольный момент времени и не высокая доступность. Вы восстанавливаете состояние на момент одной точки и теряете изменения после её T.

Что входит в копию ​

Точка восстановления содержит:

  • Таблицы каталога из базы данных: артефакты, пакеты, пути к файлам и их историю, метки и метаданные, стадии, вложения, учётные записи, группы и права доступа, сервисные учётные записи и ключи, журналы аудита, политики хранения и очистки, данные реестров образов контейнеров, Git LFS и npm, а также состояние зеркал.
  • Содержимое каждого опубликованного файла.

Точка восстановления не содержит:

  • Сессии входа, ссылки на скачивание и рабочее состояние шлюзов чтения.
  • Незавершённые загрузки. Восстановление отменяет их, и клиенты начинают загрузку заново.
  • План резервного копирования и состояние агента. Восстановленная установка запускается с выключенным резервным копированием.
  • Каталог config/ установки: настройки, файлы TLS, ключи зеркал, ключ восстановления. Копии этих файлов храните сами.
  • Программы Arkvory. Сначала установите выпуск, затем восстанавливайте данные.

Подготовьте хранилище копий ​

Требования ​

ТребованиеЗачем
Новый или пустой каталог, подключённый до запуска службАгент записывает туда vault.json и точки восстановления
Вне каталога установки и вне каталога хранилища файлов, в том числе через ссылки, точки соединения (junction) и короткие именаХранилище копий внутри хранилища файлов пропадёт вместе с ним. Проверка отклоняет путь, который содержит эти каталоги или лежит внутри них
Доступен на запись для учётной записи службыВ Linux — arkvory. В Windows — NT AUTHORITY\LocalService. Команда arkvory configure сама задаёт права
Не менее 1 ГиБ свободного места сверх копируемых данныхХранилище копий держит этот запас. Заполненный том завершает копирование с кодом vault_full, прежние точки остаются целыми
В Linux — не в /home, /root, /run/user, /tmp и /var/tmpИзоляция службы скрывает эти деревья каталогов
В Windows — локальный том или том iSCSI с буквой дискаLocalService не может войти на ресурсы SMB, поэтому пути вида \\nas\share отклоняются

Используйте том на другом диске или на NAS, чтобы отказ диска хранилища файлов не унёс за собой копии. Хранилище копий на том же физическом диске, что и хранилище файлов, защищает от ошибок, но не от отказа диска.

Vault по умолчанию зашифрован. Arkvory шифрует файлы, каталог и описания точек (см. Шифрование vault). Vault без шифрования хранит каталог, хеши паролей и все опубликованные файлы открытым текстом: держите его на зашифрованном томе (LUKS, BitLocker, шифрование NAS) и разрешайте доступ только учётной записи службы и администратору копирования.

Шифрование vault ​

Vault шифруется при создании и остаётся таким. Arkvory шифрует содержимое файлов, каталог и описания точек алгоритмом AES-256-GCM и при чтении находит изменённый, обрезанный или подменённый файл. Имена файлов, их размеры и число точек не скрываются.

Создайте vault на сервере программой arkvory-backup (см. Перед началом). Оба файла должны быть новыми и лежать вне vault и хранилища:

bash
arkvory-backup vault init /mnt/backup/arkvory \
  --kit-file /root/arkvory-recovery-kit.txt \
  --agent-key-file /root/arkvory-agent.key
  1. Команда создаёт vault с двумя ключами: ключом агента (arkvory-agent.key) и ключом восстановления в наборе восстановления. Перед сообщением об успехе она открывает vault каждым из них.
  2. Сразу унесите набор восстановления с этого сервера: в менеджер паролей или сейф. Без набора или ключа агента никто не прочитает копии, и никто не восстановит их за вас. Тот, у кого есть набор и копия vault, прочитает все копии в нём.
  3. Подключите vault с ключом агента, как показано в следующем разделе, и удалите свою копию файла ключа. Установка хранит свою копию в config/backup/vault.key, её читает только учётная запись службы.

Ключ восстановления в наборе открывает только этот vault. Это не ключ восстановления установки (config/bootstrap-token.txt).

Проверьте, что набор открывает vault, сейчас и после каждой смены ключей:

bash
arkvory-backup vault key verify --vault /mnt/backup/arkvory --key-file /root/arkvory-recovery-kit.txt

Ключ принадлежит слоту, и каждый слот открывает vault своим ключом. Эти команды меняют слоты. Ни одна из них не показывает ключ:

КомандаДействие
vault key list --vault DIRПоказывает слоты: идентификатор, вид (agent или recovery) и время создания. Ключ не нужен.
vault key add-recovery --vault DIR --key-file KEY --kit-file NEWДобавляет слот восстановления и пишет его набор, для другого человека или другого сейфа.
vault key rotate-agent --vault DIR --key-file KEY --agent-key-file NEWСоздаёт новый файл и слот ключа агента. Старый ключ агента продолжает работать: выполните arkvory configure с новым файлом ключа, затем удалите старый слот (backup.vault.key.previous в выводе) командой vault key remove.
vault key remove --vault DIR --key-file KEY --slot IDУдаляет слот. Последний слот и последний слот восстановления остаются.

Удаление слота закрывает vault для того, у кого есть только этот ключ. Прежние точки оно заново не шифрует: кто раньше скопировал vault и ключ, тот по-прежнему читает эту копию. Если ключ мог утечь, создайте новый vault с новыми ключами и начните в нём новые точки.

Vault без шифрования возможен: arkvory-backup vault init DIR --no-encryption. Он хранит каталог, хеши паролей и все файлы открытым текстом, поэтому ему нужен зашифрованный том и доступ только учётной записи службы.

Подключите хранилище копий ​

Запустите команду на сервере от имени root или администратора. Она проверяет каталог, прежде чем что-либо изменить.

bash
sudo arkvory configure --root /opt/proanima-arkvory --backup-vault /mnt/backup/arkvory --vault-key-file /root/arkvory-agent.key
powershell
$root = 'C:\ProgramData\ProAnima\Arkvory'
& 'C:\Program Files\ProAnima\Arkvory\arkvory.ps1' configure --root $root --backup-vault D:\Backup\Arkvory --vault-key-file C:\Private\arkvory-agent.key

Для установки скриптом в Windows запустите manage.mjs, как описано в разделе Windows.

  1. Команда проверяет путь: он абсолютный, это существующий каталог с правом записи, он лежит вне установки и хранилища файлов и виден службе.
  2. Зашифрованный vault, по умолчанию, уже есть: вы создали его командой arkvory-backup vault init, а --vault-key-file передаёт службе её ключ (ключ AK1-…, не ключ восстановления). С --init-vault --vault-no-encryption команда вместо этого создаёт vault без шифрования в пустом каталоге. Каталог никогда не инициализируется дважды. Без vault.json и без --init-vault команда отказывает, чтобы не принять неподключённый NAS за пустой vault.
  3. Она даёт доступ учётной записи службы, копирует ключ в config/backup/vault.key, пишет ARKVORY_BACKUP_VAULT и ARKVORY_BACKUP_VAULT_KEY_FILE в config/runtime.json и перезапускает только агент.
  4. Она ждёт до 150 секунд, пока агент не сообщит, что это хранилище копий доступно. Для проверки она читает config/bootstrap-token.txt, поэтому не удаляйте этот файл.
  5. Если что-то не получилось, она возвращает прежние настройки и прежний доступ и перезапускает агент.

Чтобы использовать уже существующий vault, например на новом сервере, передайте его ключ в --vault-key-file и не указывайте --init-vault. Чтобы отключить vault, используйте --backup-vault-off: каталог и его файлы остаются без изменений, а файл ключа установки удаляется. Перезапуск прерывает идущую копию, и агент повторяет её.

В Docker Compose хранилище копий подключается как bind mount из config/compose.vault.yml. Если вы сами запускаете команды Compose, добавляйте -f config/compose.vault.yml. Без этого up создаст контейнер агента без хранилища копий.

Хранилище копий на сетевом ресурсе ​

В Linux NAS работает по SMB 3 и NFS 4. Подключайте ресурс так, чтобы файлы принадлежали учётной записи службы. Иначе агент не сможет писать, а configure откажется работать и вернёт прежние настройки.

bash
sudo mount -t cifs //nas/arkvory /mnt/backup/arkvory \
  -o credentials=/etc/arkvory/smb.credentials,uid=$(id -u arkvory),gid=$(id -g arkvory),file_mode=0600,dir_mode=0700,vers=3.1.1
  • Задайте файлу с учётными данными режим 0600.
  • Для NFS сопоставьте владельцев так, чтобы файлы принадлежали arkvory. Используйте no_root_squash в экспорте или одинаковый ID пользователя на обеих сторонах.
  • Добавьте подключение в /etc/fstab с параметром _netdev. Для SMB добавьте nofail, если NAS может быть недоступен при загрузке.
  • Если NAS отключился, агент сообщает vault_unavailable. Он не пишет в пустую точку подключения, потому что идентичность хранилища копий записана в vault.json.

Расписание и хранение ​

Настройте расписание ​

Откройте Резервные копии и используйте Расписание и хранение. Вам нужно право управлять резервным копированием. Без него форма показывает: Изменение копий требует права управления резервным копированием.

ПараметрЗначениеПо умолчанию
Копировать ежедневно по расписаниюВключает ежедневный план. Включение не запускает копию сразуВыключено
Местное времяМестное время ежедневной копии с точностью до минуты02:00
Часовой пояс (IANA)Часовой пояс IANA для этого местного времени, например Europe/Moscow или UTC. Смещения вроде +03:00 не принимаютсяUTC
Дней, Недель, МесяцевСколько дней, недель и месяцев хранить точки восстановления. См. Правила хранения. Пределы: 0–366, 0–260, 0–1207, 4, 6

Нажмите Сохранить план. Если за это время кто-то другой изменил план, консоль загрузит текущий план, а вы проверите его и сохраните снова.

Расписание подчиняется таким правилам:

  • Местное время, которого нет в день перевода часов, наступает в момент перевода. Местное время, которое наступает дважды, срабатывает один раз — в первый.
  • После простоя агент делает одну догоняющую копию, а не по одной за каждый пропущенный день. Изменение расписания не запускает догоняющую копию за прошедшее время.
  • Час обслуживания установки по умолчанию — 03:00 UTC. Обновление останавливает агент, а выполняющаяся копия прерывается и повторяется позже. Выберите время копирования, которое не попадает в окно обновления. См. Обновления.

Правила хранения ​

Правила хранения оставляют самую новую точку восстановления за каждый из последних N календарных дней, за каждую из последних N недель ISO и за каждый из последних N месяцев. Дни, недели и месяцы считаются в часовом поясе плана. Три группы объединяются, поэтому значения 7, 4 и 6 оставляют не более 17 точек, а обычно меньше.

Правила хранения всегда оставляют:

  • Закреплённые точки.
  • Самую новую точку, чтобы всегда оставалась хотя бы одна точка.

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

После каждой копии агент ставит в очередь отдельное задание хранения. Можно также нажать Применить хранение. Сначала консоль показывает, какие точки остаются и какие будут удалены. Удаление нельзя отменить. Затем агент удаляет точку и после неё — файлы, которые не нужны ни одной из оставшихся точек. Если в хранилище копий есть повреждённая точка (каталог точки без COMMITTED или с неверным манифестом), удаление останавливается с кодом invalid_manifest. Оставьте хранилище копий как есть, найдите причину, а затем удалите повреждённый каталог вручную.

Хранение копий не меняет правила хранения сборок в ваших репозиториях. См. Хранение.

Закрепите точку восстановления ​

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

  • Консоль: нажмите Закрепить в строке точки в списке Точки восстановления. Кнопка Открепить снимает закрепление.
  • CLI: arkvoryctl backup pin POINT_ID и arkvoryctl backup pin POINT_ID --off.
  • API: setBackupPointPin.

Проверка ​

Бывает два вида проверки:

ВидЧто проверяетКогда выполняется
Быстрая (в консоли — Структура проверена)Каждый файл точки по дайджесту в её манифесте, а также наличие каждого сохранённого файла и его размерАвтоматически после каждой копии
Полная (Проверена полностью)Быстрые проверки, а также чтение каждого сохранённого файла и проверка его SHA-256Автоматически раз в 7 дней для самой новой точки. По запросу: кнопкой Проверить полностью, командой arkvoryctl backup verify POINT_ID или командой arkvory-backup verify --deep

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

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

Запустите копию сейчас ​

Используйте любой из способов:

  • Консоль: Создать копию сейчас в разделе Резервные копии.
  • CLI: arkvoryctl backup run.
  • API: requestBackupRun отвечает 202 и возвращает задание в очереди.

Агент проверяет очередь каждые 15 секунд (ARKVORY_BACKUP_POLL_SECONDS), поэтому задание стартует вскоре после запроса. Задания выполняются по одному, и закрытие консоли их не останавливает. Задание, которое остановилось из-за перезапуска или конфликта, повторяется — до 5 попыток. Настройки агента, в том числе ограничение скорости копирования ARKVORY_BACKUP_BYTES_PER_SECOND, см. в разделе Переменные окружения.

Копия проходит такие этапы, которые консоль показывает в столбце Этап: Подготовка, Снимок каталога, Передача файлов, Завершение и Готово. Быстрая проверка показывает этап Проверка структуры, а полная — Полная проверка.

Не запускайте миграции базы данных и автономные инструменты gc и scrub во время копирования. Они ждут его окончания или отказываются работать с кодом busy.

Следите за состоянием ​

В консоли ​

Раздел Резервные копии виден администраторам и ключу восстановления. Ключи сервисов и персональные токены доступа его не видят. На странице показаны:

  • Состояние: Копии в порядке, Есть предупреждения или Требуется вмешательство.
  • Последняя копия с возрастом от T, Следующий запуск с пометкой Просрочен, если запуск опаздывает, Агент копирования с последним сигналом и Хранилище копий со свободным местом и признаком шифрования (Зашифровано или Не зашифровано). Для открытого хранилища показана подсказка, а не предупреждение.
  • Задание, которое выполняется сейчас, а затем предупреждения, каждое с подсказкой, что делать.
  • Список Точки восстановления со столбцами Состояние на (T), Завершена, Объём, Файлы, Проверка и с закреплением.
  • Список Задания с видом (Копия, Проверка, Хранение), состоянием, этапом, временем, кодом ошибки и ходом выполнения.

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

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

КодУровеньЧто делать
vault_not_configuredПредупреждениеПодключите хранилище копий. См. Подключите хранилище копий
agent_offlineКритическийНет сигнала 2 минуты. Запустите службу агента и прочитайте её журнал
schedule_disabledПредупреждениеВключите план, если нужны ежедневные копии
no_backup_yetПредупреждениеСоздайте первую копию
backup_staleКритическийСамой новой точке больше 26 часов, а план включён. Прочитайте коды ошибок заданий и журнал агента
last_run_failedПредупреждениеПоследняя копия не удалась. Код ошибки указан в списке заданий
vault_unavailableКритическийТом не подключён, нет vault.json, vault недоступен для записи, либо у зашифрованного vault нет действующего ключа (в журнале агента vault_key_missing или vault_key_invalid)
vault_low_spaceПредупреждениеСвободно меньше 10% тома или меньше удвоенного объёма новых данных последней копии. Освободите место или храните меньше точек
verify_failedКритическийТочка не прошла проверку. Не меняйте хранилище копий, выясните причину
never_deep_verifiedПредупреждениеПолной проверки не было больше 8 дней. Убедитесь, что агент работает, или запустите полную проверку

В CLI и API ​

bash
arkvoryctl backup status
arkvoryctl backup jobs
arkvoryctl backup points
arkvoryctl backup status --json || echo "backup problem"

Пока активно критическое предупреждение, backup status завершается с кодом 9, поэтому команду можно использовать в мониторинге. Для этих команд нужен файловый ключ владельца или сессия администратора учётной записи. См. Командная строка и TypeScript SDK. Операции HTTP описаны в справочнике API по резервным копиям.

Для Prometheus API предоставляет метрики arkvory_backup_last_success_timestamp_seconds (T самой новой точки), arkvory_backup_agent_last_seen_timestamp_seconds и arkvory_backup_warnings с меткой code. См. Мониторинг.

Восстановление ​

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

Перед началом ​

  • Программа. Команда восстановления — это программа arkvory-backup установленного выпуска. Запускайте её с Node.js из установки:

    • Пакеты Linux: /opt/proanima-arkvory/runtime/node /opt/proanima-arkvory/releases/VERSION/apps/backup/dist/main.js COMMAND
    • Графический установщик Windows: & "$root\runtime\node.exe" "$root\releases\VERSION\apps\backup\dist\main.js" COMMAND

    VERSION — установленная версия из installation.json. Дальше на этой странице arkvory-backup означает всю такую командную строку. Пользователи Docker Compose запускают ту же программу из контейнера образа выпуска. Для установки скриптом используйте Node.js из папки runtime/.

  • Выпуск. Используйте выпуск, который создал точку, или более новый. Точка из более нового выпуска отклоняется с кодом schema_mismatch.

  • Учётная запись. Запускайте команду от учётной записи, которая может читать хранилище копий. В Linux хранилище копий принадлежит arkvory и имеет режим 0700, поэтому используйте sudo -u arkvory. В Windows используйте PowerShell с повышенными правами. Новый каталог хранилища файлов в итоге должен принадлежать учётной записи, под которой будет работать API.

  • Ключ. Зашифрованному vault нужен ключ. Передайте набор восстановления или файл ключа как --key-file FILE в каждую команду ниже либо задайте ARKVORY_BACKUP_VAULT_KEY_FILE. Ключ — всегда файл, никогда не аргумент.

  • Цель. Создайте пустую базу данных, например CREATE DATABASE arkvory_restore OWNER arkvory;. Выберите каталог хранилища файлов, который не существует или пуст, на другом томе, чем хранилище копий, и не внутри исходного хранилища файлов.

  • URL базы данных. Передайте его через окружение, а не аргументом, потому что аргументы видны в списке процессов.

Восстановление по шагам ​

  1. Выведите список точек восстановления и выберите одну. Скопируйте ID точки.

    bash
    arkvoryctl backup points
    arkvory-backup list --vault /mnt/backup/arkvory
  2. Полностью проверьте точку.

    bash
    arkvory-backup verify --vault /mnt/backup/arkvory --point POINT_ID --deep
  3. Задайте целевую базу данных в окружении.

    bash
    export ARKVORY_RESTORE_DATABASE_URL='postgresql://arkvory@db.example/arkvory_restore'
  4. Запустите восстановление без --yes. Это пробный запуск. Он проверяет точку, хеши файлов, версию схемы и то, что цель пуста, и ничего не записывает.

    bash
    arkvory-backup restore --vault /mnt/backup/arkvory --point POINT_ID --storage /srv/arkvory-restore

    Успешная проверка завершается с кодом 0 и строкой журнала backup.restore.planned.

  5. Запустите ту же команду с --yes. Добавьте --report, чтобы сохранить файл отчёта. Файл не должен существовать.

    bash
    arkvory-backup restore --vault /mnt/backup/arkvory --point POINT_ID --storage /srv/arkvory-restore --yes --report /root/restore-report.json

    Восстановление проходит этапы verify, content, schema, tables, migrate и done. Оно копирует каждый файл и проверяет его SHA-256, создаёт схему, загружает все таблицы одной транзакцией, применяет нормализацию, а затем выполняет оставшиеся миграции. В отчёте только идентификаторы и числа, никогда не бывает путей и учётных данных.

  6. Запустите отдельный экземпляр API на восстановленных данных: ARKVORY_DATABASE_URL новой базы данных, ARKVORY_DATA_DIR нового каталога, собственный ARKVORY_KEYS_FILE и другой порт. Проверьте, что /health/ready отвечает, что вы можете войти, что каталог полон и что контрольный файл скачивается с тем же SHA-256.

Если восстановление не удалось, удалите целевую базу данных и каталог и создайте их заново. Непустая цель отклоняется с кодом target_not_empty, что защищает существующие данные.

Что меняет восстановление ​

Восстановление применяет фиксированный набор изменений, чтобы новый экземпляр не продолжал ничего из того, что было в процессе, и не активировал старые учётные данные:

  • Незавершённые загрузки отменяются и освобождают квоту. Задания завершения в очереди и выполняющиеся заканчиваются неудачей с кодом conflict. Незавершённые продвижения отбрасываются.
  • Сессии не восстанавливаются. Все входят заново.
  • Все персональные токены доступа отзываются, а все ключи сервисов получают состояние revoked. Выпустите новые ключи.
  • Правила хранения и физическая очистка выключаются во всех репозиториях. Включите их снова осознанно.
  • Резервное копирование выключено, хранилище копий не настроено. Ссылки на скачивание и настройки шлюзов чтения не переносятся.
  • Учётные записи, группы и права доступа сохраняются вместе с хешами паролей на момент T. Пароль, который вы изменили после T, снова действует в прежнем виде, поэтому сбросьте пароли по своей политике.
  • Ключ восстановления и файловые ключи берутся из файла ключей установки, на которой работают восстановленные данные.
  • Зеркала сохраняют своё положение, но настройки зеркал находятся в config/. Подключите их снова. См. Зеркала.
  • Запись аудита безопасности backup.restored фиксирует точку и числа.

Перенос на другой сервер ​

С помощью резервной копии можно перенести установку на другой сервер:

  1. Установите Arkvory на новый сервер, того же выпуска или более нового. См. Выбор установки.
  2. Подключите к новому серверу то же хранилище копий или его копию. Для существующего хранилища копий не используйте --init-vault.
  3. Восстановите самую новую точку в новую пустую базу данных и пустой каталог, как описано выше, и проверьте результат.
  4. Направьте установку на восстановленные данные: задайте ARKVORY_DATABASE_URL и ARKVORY_DATA_DIR в config/runtime.json и перезапустите службы. См. Настройка.
  5. Выпустите новые ключи, снова задайте политики хранения и очистки, подключите зеркала и план резервного копирования и сообщите клиентам новый адрес.

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

Регулярно проверяйте восстановление ​

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

Проверяйте как минимум:

  • После первой копии.
  • После каждого обновления, меняющего схему базы данных.
  • По собственному графику, например раз в квартал.

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

Коды завершения и строки журнала ​

Коды завершения ​

Программа arkvory-backup пишет в стандартный вывод по одному объекту JSON в строке, а при сбое — одну строку-подсказку в стандартный вывод ошибок.

КодЗначение
0Успех. Для restore без --yes — проверка пройдена
1Сбой выполнения: база данных или диск недоступны, потеряна аренда или снимок, хранилище копий или цель заполнены. Точки восстановления не повреждены
2Неверные аргументы или переменные окружения
3Отказ проверки безопасности: нет vault.json, пересекающиеся каталоги, непустая цель, неподдерживаемая схема, нет такой точки
4Нарушение целостности: хеш, отсутствующий файл или изменённый манифест. Не меняйте хранилище копий, пока не поймёте причину
5Занято: выполняется другая копия или обслуживание, либо удаление не завершилось вовремя. Повторите позже

Строки журнала ​

В каждой строке component равен backup. Пути, URL и секреты никогда не записываются. Самые полезные строки:

КодЗначение
backup.phaseКопия переходит к этапу: barrier, pins, tables, blobs, manifest, commit, done
backup.capture.completedКопия готова. Поля: pointId, outcome, blobs, copied, reused, copiedBytes, contentBytes, durationMs
backup.pointОдна точка восстановления в выводе list
backup.verify.point, backup.verify.problemРезультат проверки и каждая проблема с её errorCode
backup.restore.phase, backup.restore.planned, backup.restore.completedХод и результат восстановления, с числом строк и перечисленных выше изменений
backup.failedКоманда завершилась сбоем. Прочитайте errorCode
backup.agent.started, .standby, .lease_acquired, .lease_lost, .stopped, .failedЖизненный цикл агента
backup.request.started, .done, .failed, .requeuedЗадание агента, с полями kind и errorCode
backup.schedule.dueПлан запустил копию
backup.retention.appliedХранение применено. Поля: forgotten, blobs, freedBytes

Журнал агента читайте командой journalctl -u arkvory-backup в Linux, в каталоге logs\ корня установки в Windows и командой docker compose logs backup в Compose.

Коды ошибок ​

errorCodeКод завершенияЧто делать
vault_missing3В каталоге нет vault.json. Подключите том или один раз выполните vault init
vault_key_missing3Vault зашифрован, ключ не передан. Используйте --key-file FILE или ARKVORY_BACKUP_VAULT_KEY_FILE
vault_key_invalid3Ключ не открывает этот vault: проверьте файл, vault или не удалён ли слот. Опечатку находит контрольная сумма ключа
unsafe_path3Держите хранилище копий, хранилище файлов и цель восстановления в разных деревьях каталогов
target_not_empty3Восстановление пишет только в пустую базу данных и пустой каталог
schema_mismatch3Точка новее выпуска или старее поддерживаемой для восстановления. Используйте другой выпуск
upgrade_required3Обновите все процессы API и обслуживания установки
point_not_found, storage_mismatch3Неверный ID точки, или ARKVORY_DATA_DIR — не инициализированный каталог хранилища файлов этой установки
integrity_mismatch, invalid_manifest, blob_missing4Не меняйте хранилище копий. Выполните verify --deep и выясните причину
busy, barrier_timeout5Выполняется другая операция. Повторите позже
vault_full, storage_full1Освободите место. Прежние точки целы
attempts_exhausted3Этот запрос израсходовал 5 попыток. Запустите новую копию

Ограничения ​

  • Один план и одно хранилище копий на установку. Хранилище копий — это каталог на диске или на подключённом сетевом ресурсе; S3, внешней площадки и неизменяемого профиля нет.
  • Шифрование скрывает содержимое и каталог, но не имена файлов, размеры и число точек. Потерянные ключи означают потерянные копии. Удаление слота ключа не шифрует прежние точки заново.
  • Задание резервного копирования нельзя приостановить или отменить, а в консоли нет мастера восстановления и состояния пробного восстановления.
  • Для восстановления нужна пустая цель, а переключение на восстановленные данные выполняется вручную.
  • Агент резервного копирования — не система высокой доступности. Второй агент лишь ждёт как запасной.

Arkvory · ProAnimaStudio