Резервные копии
Агент резервного копирования копирует базу данных и сохранённые файлы вашей установки в хранилище копий — каталог на другом диске или на сетевом ресурсе. Он работает, пока пользователи продолжают загружать и скачивать файлы. Каждая готовая копия — это точка восстановления, которую можно проверить и восстановить.
На этой странице описаны хранилище копий, расписание, правила хранения, проверка, экраны состояния и порядок восстановления. Восстановление — это команда, которую вы запускаете на сервере. В консоли кнопки восстановления нет.
Как работают резервные копии
Агент — третья служба установки рядом с 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 и хранилища:
arkvory-backup vault init /mnt/backup/arkvory \
--kit-file /root/arkvory-recovery-kit.txt \
--agent-key-file /root/arkvory-agent.key- Команда создаёт vault с двумя ключами: ключом агента (
arkvory-agent.key) и ключом восстановления в наборе восстановления. Перед сообщением об успехе она открывает vault каждым из них. - Сразу унесите набор восстановления с этого сервера: в менеджер паролей или сейф. Без набора или ключа агента никто не прочитает копии, и никто не восстановит их за вас. Тот, у кого есть набор и копия vault, прочитает все копии в нём.
- Подключите vault с ключом агента, как показано в следующем разделе, и удалите свою копию файла ключа. Установка хранит свою копию в
config/backup/vault.key, её читает только учётная запись службы.
Ключ восстановления в наборе открывает только этот vault. Это не ключ восстановления установки (config/bootstrap-token.txt).
Проверьте, что набор открывает vault, сейчас и после каждой смены ключей:
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 или администратора. Она проверяет каталог, прежде чем что-либо изменить.
sudo arkvory configure --root /opt/proanima-arkvory --backup-vault /mnt/backup/arkvory --vault-key-file /root/arkvory-agent.key$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.
- Команда проверяет путь: он абсолютный, это существующий каталог с правом записи, он лежит вне установки и хранилища файлов и виден службе.
- Зашифрованный vault, по умолчанию, уже есть: вы создали его командой
arkvory-backup vault init, а--vault-key-fileпередаёт службе её ключ (ключAK1-…, не ключ восстановления). С--init-vault --vault-no-encryptionкоманда вместо этого создаёт vault без шифрования в пустом каталоге. Каталог никогда не инициализируется дважды. Безvault.jsonи без--init-vaultкоманда отказывает, чтобы не принять неподключённый NAS за пустой vault. - Она даёт доступ учётной записи службы, копирует ключ в
config/backup/vault.key, пишетARKVORY_BACKUP_VAULTиARKVORY_BACKUP_VAULT_KEY_FILEвconfig/runtime.jsonи перезапускает только агент. - Она ждёт до 150 секунд, пока агент не сообщит, что это хранилище копий доступно. Для проверки она читает
config/bootstrap-token.txt, поэтому не удаляйте этот файл. - Если что-то не получилось, она возвращает прежние настройки и прежний доступ и перезапускает агент.
Чтобы использовать уже существующий 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 откажется работать и вернёт прежние настройки.
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–120 | 7, 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
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/.- Пакеты Linux:
Выпуск. Используйте выпуск, который создал точку, или более новый. Точка из более нового выпуска отклоняется с кодом
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 базы данных. Передайте его через окружение, а не аргументом, потому что аргументы видны в списке процессов.
Восстановление по шагам
Выведите список точек восстановления и выберите одну. Скопируйте ID точки.
basharkvoryctl backup points arkvory-backup list --vault /mnt/backup/arkvoryПолностью проверьте точку.
basharkvory-backup verify --vault /mnt/backup/arkvory --point POINT_ID --deepЗадайте целевую базу данных в окружении.
bashexport ARKVORY_RESTORE_DATABASE_URL='postgresql://arkvory@db.example/arkvory_restore'Запустите восстановление без
--yes. Это пробный запуск. Он проверяет точку, хеши файлов, версию схемы и то, что цель пуста, и ничего не записывает.basharkvory-backup restore --vault /mnt/backup/arkvory --point POINT_ID --storage /srv/arkvory-restoreУспешная проверка завершается с кодом 0 и строкой журнала
backup.restore.planned.Запустите ту же команду с
--yes. Добавьте--report, чтобы сохранить файл отчёта. Файл не должен существовать.basharkvory-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, создаёт схему, загружает все таблицы одной транзакцией, применяет нормализацию, а затем выполняет оставшиеся миграции. В отчёте только идентификаторы и числа, никогда не бывает путей и учётных данных.Запустите отдельный экземпляр API на восстановленных данных:
ARKVORY_DATABASE_URLновой базы данных,ARKVORY_DATA_DIRнового каталога, собственныйARKVORY_KEYS_FILEи другой порт. Проверьте, что/health/readyотвечает, что вы можете войти, что каталог полон и что контрольный файл скачивается с тем же SHA-256.
Если восстановление не удалось, удалите целевую базу данных и каталог и создайте их заново. Непустая цель отклоняется с кодом target_not_empty, что защищает существующие данные.
Что меняет восстановление
Восстановление применяет фиксированный набор изменений, чтобы новый экземпляр не продолжал ничего из того, что было в процессе, и не активировал старые учётные данные:
- Незавершённые загрузки отменяются и освобождают квоту. Задания завершения в очереди и выполняющиеся заканчиваются неудачей с кодом
conflict. Незавершённые продвижения отбрасываются. - Сессии не восстанавливаются. Все входят заново.
- Все персональные токены доступа отзываются, а все ключи сервисов получают состояние
revoked. Выпустите новые ключи. - Правила хранения и физическая очистка выключаются во всех репозиториях. Включите их снова осознанно.
- Резервное копирование выключено, хранилище копий не настроено. Ссылки на скачивание и настройки шлюзов чтения не переносятся.
- Учётные записи, группы и права доступа сохраняются вместе с хешами паролей на момент T. Пароль, который вы изменили после T, снова действует в прежнем виде, поэтому сбросьте пароли по своей политике.
- Ключ восстановления и файловые ключи берутся из файла ключей установки, на которой работают восстановленные данные.
- Зеркала сохраняют своё положение, но настройки зеркал находятся в
config/. Подключите их снова. См. Зеркала. - Запись аудита безопасности
backup.restoredфиксирует точку и числа.
Перенос на другой сервер
С помощью резервной копии можно перенести установку на другой сервер:
- Установите Arkvory на новый сервер, того же выпуска или более нового. См. Выбор установки.
- Подключите к новому серверу то же хранилище копий или его копию. Для существующего хранилища копий не используйте
--init-vault. - Восстановите самую новую точку в новую пустую базу данных и пустой каталог, как описано выше, и проверьте результат.
- Направьте установку на восстановленные данные: задайте
ARKVORY_DATABASE_URLиARKVORY_DATA_DIRвconfig/runtime.jsonи перезапустите службы. См. Настройка. - Выпустите новые ключи, снова задайте политики хранения и очистки, подключите зеркала и план резервного копирования и сообщите клиентам новый адрес.
Последние два шага выполняются вручную и не входят в управляемое переключение. Сначала отработайте всю последовательность на запасном сервере. Изменения, сделанные на старом сервере после 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_missing | 3 | В каталоге нет vault.json. Подключите том или один раз выполните vault init |
vault_key_missing | 3 | Vault зашифрован, ключ не передан. Используйте --key-file FILE или ARKVORY_BACKUP_VAULT_KEY_FILE |
vault_key_invalid | 3 | Ключ не открывает этот vault: проверьте файл, vault или не удалён ли слот. Опечатку находит контрольная сумма ключа |
unsafe_path | 3 | Держите хранилище копий, хранилище файлов и цель восстановления в разных деревьях каталогов |
target_not_empty | 3 | Восстановление пишет только в пустую базу данных и пустой каталог |
schema_mismatch | 3 | Точка новее выпуска или старее поддерживаемой для восстановления. Используйте другой выпуск |
upgrade_required | 3 | Обновите все процессы API и обслуживания установки |
point_not_found, storage_mismatch | 3 | Неверный ID точки, или ARKVORY_DATA_DIR — не инициализированный каталог хранилища файлов этой установки |
integrity_mismatch, invalid_manifest, blob_missing | 4 | Не меняйте хранилище копий. Выполните verify --deep и выясните причину |
busy, barrier_timeout | 5 | Выполняется другая операция. Повторите позже |
vault_full, storage_full | 1 | Освободите место. Прежние точки целы |
attempts_exhausted | 3 | Этот запрос израсходовал 5 попыток. Запустите новую копию |
Ограничения
- Один план и одно хранилище копий на установку. Хранилище копий — это каталог на диске или на подключённом сетевом ресурсе; S3, внешней площадки и неизменяемого профиля нет.
- Шифрование скрывает содержимое и каталог, но не имена файлов, размеры и число точек. Потерянные ключи означают потерянные копии. Удаление слота ключа не шифрует прежние точки заново.
- Задание резервного копирования нельзя приостановить или отменить, а в консоли нет мастера восстановления и состояния пробного восстановления.
- Для восстановления нужна пустая цель, а переключение на восстановленные данные выполняется вручную.
- Агент резервного копирования — не система высокой доступности. Второй агент лишь ждёт как запасной.