Как выполнить резервное копирование и восстановление nexus с помощью Nexus
Содержание
Предварительные требованияРезервное копированиеСоздание задачи резервного копирования в веб-интерфейсе NexusУдаление сервиса инстанса nexus для предотвращения изменений данных во время резервного копированияРезервное копирование данных nexus и проверка резервной копииРезервное копирование blob-хранилищаРезервное копирование хранилища ключей node IDЭкспорт и резервное копирование базы данныхПроверка содержимого резервной копииПосле успешного резервного копирования восстановите сервис инстанса nexusВосстановлениеПредварительные требованияУдаление Nexus ce operator из кластера, если это ещё не сделаноУдаление сервиса инстанса nexus для предотвращения изменений данных во время восстановленияУдаление существующих данных из целевого инстансаПерезапуск pod для восстановления Nexus из резервной копииИмпорт данных резервной копииПерезапуск pod для восстановленияОчистка временных данных и восстановление нормальной работы сервисаУстранение неполадокЗадача резервного копирования завершается с ошибкой AccessDeniedExceptionПредварительные требования
Удалите Nexus operator из кластера.
Почему нужно удалить Nexus operator?
Во время резервного копирования и восстановления Operator может выполнять согласование ресурсов Nexus и мешать процессу. Если Operator не будет удалён, могут возникнуть следующие проблемы:
- Operator может воссоздавать или перезапускать рабочие нагрузки на основе Nexus CR, прерывая процедуру резервного копирования/восстановления и потенциально вызывая несогласованность данных.
- Некоторые ресурсы, которые вы временно удаляете (например,
Service), могут быть воссозданы или конфликтовать с ресурсами, восстановленными из резервной копии (например,Ingress).
Влияние удаления Nexus operator
После удаления Operator изменения в Nexus CR не будут применяться, например, изменение ресурсов или размера хранилища.
Удаление Operator не приведёт к сбоям в работе существующих инстансов.
Резервное копирование
Резервное копирование состоит из четырёх шагов:
- Создать задачу резервного копирования в веб-интерфейсе Nexus.
- Удалить сервис инстанса nexus, чтобы предотвратить изменения данных.
- Выполнить резервное копирование данных nexus и проверить резервную копию.
- Восстановить сервис инстанса nexus после завершения резервного копирования.
Создание задачи резервного копирования в веб-интерфейсе Nexus
Войдите в веб-интерфейс Nexus под пользователем с правами администратора. Перейдите в Settings -> System -> Tasks -> Create task -> выберите Admin - Backup H2 Database, заполните:
- Task enabled: true
- Task name: nexus-backup (или любое другое имя)
- Notification email: (опционально) user@example.com
- Send Notification on: (опционально) Failure
- Location: любой подкаталог внутри
/nexus-data(например,/nexus-data/backup-dir) - Task frequency: Manual
Удаление сервиса инстанса nexus для предотвращения изменений данных во время резервного копирования
Чтобы предотвратить запись данных во время резервного копирования, временно остановите сервисный эндпоинт инстанса, удалив Service, который направляет трафик на pod(ы):
Это не удаляет pod или данные; останавливается только внешний трафик.
Резервное копирование данных nexus и проверка резервной копии
Резервное копирование blob-хранилища
Резервное копирование хранилища ключей node ID
Экспорт и резервное копирование базы данных
Затем скопируйте экспортированные файлы из pod:
Проверка содержимого резервной копии
После завершения копирования в директории резервной копии должны находиться как минимум следующие папки:
nexus-backup/blobsnexus-backup/nodenexus-backup/restore-from-backup
Внутри этих директорий имена файлов могут отличаться в зависимости от вашего инстанса.
После успешного резервного копирования восстановите сервис инстанса nexus
Перейдите на страницу Administrator -> Marketplace -> Operator Hub, переключитесь на целевой кластер и затем повторно разверните Alauda Build of Nexus Operator.
Восстановление
Предварительные требования
Определите целевой namespace и решите, будете ли вы восстанавливать в исходный инстанс (с перезаписью данных) или в новый инстанс. Убедитесь, что Operator остаётся удалённым во время восстановления, чтобы избежать вмешательства.
Восстановление состоит из пяти шагов:
- Удалить Nexus ce operator из кластера, если это ещё не сделано.
- Удалить сервис инстанса nexus, чтобы предотвратить изменения данных во время восстановления.
- Удалить существующие данные из целевого инстанса.
- Перезапустить pod, чтобы Nexus восстановился из резервной копии.
- Очистить временные данные и восстановить нормальную работу сервиса.
Удаление Nexus ce operator из кластера, если это ещё не сделано
Удаление сервиса инстанса nexus для предотвращения изменений данных во время восстановления
Удаление существующих данных из целевого инстанса
Удалите существующие данные из целевого pod, чтобы избежать смешивания старых и восстановленных данных. Если права не позволяют удалить данные внутри pod, удалите данные напрямую из смонтированного тома согласно инструкциям вашего класса хранилища.
Если необходимо удалить данные напрямую на узле/PV, удалите те же директории там.
Перезапуск pod для восстановления Nexus из резервной копии
Импорт данных резервной копии
Проверьте, что в pod присутствуют следующие директории с данными:
/nexus-data/blobs/nexus-data/keystores/node/nexus-data/restore-from-backup
Перезапуск pod для восстановления
Дождитесь запуска нового pod и завершения внутреннего процесса восстановления Nexus.
Очистка временных данных и восстановление нормальной работы сервиса
После подтверждения успешного восстановления данных и корректной работы инстанса удалите временные файлы восстановления, чтобы избежать повторного импорта при следующих перезапусках:
Перейдите на страницу Administrator -> Marketplace -> Operator Hub, переключитесь на целевой кластер и затем повторно разверните Alauda Build of Nexus Operator.
Войдите в Nexus Web и проверьте, что все репозитории и данные на месте.
Устранение неполадок
Задача резервного копирования завершается с ошибкой AccessDeniedException
Если при проверке статуса задачи вы видите, что lastRunResult равен FAILED:
Вы можете проверить лог задачи для получения подробностей:
Это означает, что Nexus не имеет прав на запись в указанную директорию резервного копирования. Убедитесь, что директория резервного копирования находится внутри /nexus-data.
Перейдите на страницу Administrator -> Marketplace -> Operator Hub, переключитесь на целевой кластер, затем повторно разверните Alauda Build of Nexus Operator и в веб-интерфейсе Nexus измените задачу резервного копирования, указав директорию внутри /nexus-data, например /nexus-data/backup.