При миграции Nexus на новый сервер или в Docker необходимо провести резервное копирование и восстановление данных. Ниже представлена полная процедура резервного копирования и восстановления:
Резервное копирование
Репозиторий Nexus хранит данные в блоб-стораже и часть метаданных, а также конфигурационную информацию в базе данных. Необходимо одновременно резервировать как блоб-склад, так и базу данных метаданных. Стратегия резервного копирования должна предусматривать одновременное резервное копирование базы данных и блоб-стоража в новое место для обеспечения целостности данных.
Следуйте приведённым ниже шагам для выполнения резервного копирования:
- Резервное копирование блоб-стоража
Необходимо отдельно провести резервное копирование файловой системы или объектного хранилища, содержащего блобы.
Для блоб-стоража на основе файлов следует сделать резервную копию директории, где хранятся блобы. Для типовой конфигурации это будет $data-dir/blobs.
Расположение директории для данных можно найти в файле bin/nexus.vmoptions
.
Перейдите в директорию данных и выполните команду для упаковки: tar -czvf blobs.tar.gz blobs
.
Для блоб-стоража S3 можно использовать версионный контроль бакета в качестве альтернативы резервному копированию. Также можно сделать зеркальную копию бакета в другой S3 бакет.
- Резервное копирование идентификатора узла
Каждый экземпляр репозитория Nexus связан с уникальным идентификатором. Необходимо сохранить этот идентификатор, чтобы при восстановлении или перемещении Nexus с одного сервера на другой метрики блоб-стоража (размер и количество блобов на диске) и отчёты Nexus Firewall могли работать корректно. Файл для сохранения идентификатора узла находится по следующему пути (смотрите также директорию):
$data-dir/keystores/node/
Перейдите в директорию keystores и запакуйте идентификатор узла: cd keystores && tar -czvf node.tar.gz node
.
Для использования этой резервной копии поместите файлы в то же место перед запуском Nexus.
- Резервное копирование базы данных
Резервное копирование базы данных необходимо создавать через интерфейс Nexus.
Путь: Nexus Repository Manager -> Система -> Задачи -> Создать задачу -> “Admin – Экспортировать базы данных для резервного копирования”.
.
Выберите кнопку Создать задачу
, чтобы перейти к следующему интерфейсу ↓
.
Заполните поля, выделенные красным, согласно изображению выше.
.
После завершения нажмите на только что созданную задачу и затем нажмите кнопку “Запустить” для выполнения резервного копирования.
Когда задача запущена, данные резервного копирования экспортируются по указанному в поле “Backup location” пути. В результате будут созданы .bak файлы, содержащие следующие базы данных:
- Component – компоненты, все связанные данные о компонентах в системе управления репозиториями
- Configuration – конфигурация, общая информация по управлению, такому как запланированные задачи и конфигурация почтового сервера
- Security – безопасность, вся информация о пользователях и управлении доступом
Все файлы резервного копирования отображаются с временной меткой на основе времени начала задачи.
Во время выполнения задачи резервного копирования репозиторий временно перейдёт в режим только для чтения. В это время не производите никаких действий, просто ожидайте.
Восстановление Nexus
После завершения резервного копирования на старом сервере скопируйте резервные файлы блобов, идентификатор узла и базу данных на новый сервер для восстановления.
Здесь восстановление будет продемонстрировано в среде Docker. Инструкция по установке Nexus в Docker.
Поскольку была выполнена привязка директории nexus-data, мы можем просто разместить данные в родительском каталоге.
- Восстановление блоб-стоража
Перейдите в директорию, соответствующую привязке docker к nexus-data, затем войдите в директорию blobs и удалите прежний default.
Выполните команду распаковки: tar -zxvf blobs.tar.gz
.
- Восстановление идентификатора узла
Перейдите в директорию keystores и разархивируйте содержимое node: cd keystores && tar -zxvf node.tar.gz
.
.
- Восстановление базы данных
Остановите репозиторий Nexus.
Удалите директории component, config, security в каталоге $data-dir/db.
Скопируйте соответствующие резервные .bak файлы баз данных в $data-dir/restore-from-backup для восстановления (Обратите внимание: для версии 3.10.0 и более ранних версий восстановление происходит в директории $data-dir/backup).
Восстановите резервные блоб-стораж и файлы идентификатора узла, соответствующие резервной копии базы данных.
Перезапустите репозиторий Nexus и проверьте его работу.
Удалите .bak файлы из директории restore-from-backup.
- Выполнение восстановления данных
После завершения восстановления интерфейс может не отображать возможные поисковые функции. Необходимо провести восстановление данных.
4.1 Восстановление метаданных компонентов в базе данных из блоб-стоража
Nexus Repository Manager -> Система -> Задачи -> Создать задачу -> “Repair – Согласование базы данных компонентов из блоб-стоража”.
.
4.2 Восстановление просмотра
Nexus Repository Manager -> Система -> Задачи -> Создать задачу -> “Repair – Восстановление просмотра репозитория”.
.
4.3 Восстановление поиска
Nexus Repository Manager -> Система -> Задачи -> Создать задачу -> “Repair – Восстановление поиска в репозитории”.
.
На этом миграция завершена.