如何使用 Nexus 备份和恢复 nexus
目录
前提条件备份在 Nexus Web 上创建备份任务删除 nexus 实例的 Service 以防止备份期间数据变更备份 nexus 数据并验证备份备份 blob 存储备份节点 ID keystore导出并备份数据库验证备份内容备份成功后,恢复 nexus 实例服务恢复前提条件如果尚未卸载,先从集群卸载 Nexus ce operator。删除 nexus 实例的 Service 以防止恢复期间数据变更删除目标实例的现有数据重启 Pod 让 Nexus 从备份恢复导入备份数据重启 Pod 以恢复清理临时数据并恢复正常服务故障排查备份任务失败并显示 AccessDeniedException前提条件
从集群中卸载 Nexus operator。
为什么要卸载 Nexus operator?
在备份和恢复过程中,Operator 可能会对 Nexus 资源进行 reconcile,从而干扰操作。如果不卸载 Operator,可能会出现以下问题:
- Operator 可能会基于 Nexus CR 重新创建或重启工作负载,打断备份/恢复流程,导致数据不一致。
- 您临时删除的一些资源(例如
Service)可能会被重新创建,或者与从备份恢复的资源(例如Ingress)产生冲突。
卸载 Nexus operator 的影响
卸载 Operator 后,对 Nexus CR 的修改将不会生效,例如调整资源或存储大小。
卸载 Operator 不会导致现有实例出现故障。
备份
备份包含四个步骤:
- 在 Nexus Web 上创建备份任务。
- 删除 nexus 实例的 Service 以防止数据变更。
- 备份 nexus 数据并验证备份。
- 备份完成后恢复 nexus 实例。
在 Nexus Web 上创建备份任务
以管理员身份登录 Nexus Web UI。导航至 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 的 Service 实现:
此操作不会删除 Pod 或数据,仅停止外部流量。
备份 nexus 数据并验证备份
备份 blob 存储
备份节点 ID keystore
导出并备份数据库
然后从 Pod 复制导出的文件:
验证备份内容
复制完成后,备份目录应至少包含以下文件夹:
nexus-backup/blobsnexus-backup/nodenexus-backup/restore-from-backup
根据您的实例,目录中的文件名可能不同。
备份成功后,恢复 nexus 实例服务
进入 Administrator -> Marketplace -> Operator Hub 页面,切换到目标集群,然后重新部署 Alauda Build of Nexus Operator。
恢复
前提条件
确定目标命名空间,以及是恢复到原实例(覆盖数据)还是新实例。恢复期间确保 Operator 保持卸载状态以避免干扰。
恢复包含五个步骤:
- 如果尚未卸载,先从集群卸载 Nexus ce operator。
- 删除 nexus 实例的 Service 以防止恢复期间数据变更。
- 删除目标实例的现有数据。
- 重启 Pod 让 Nexus 从备份恢复。
- 清理临时数据并恢复正常服务。
如果尚未卸载,先从集群卸载 Nexus ce operator。
删除 nexus 实例的 Service 以防止恢复期间数据变更
删除目标实例的现有数据
删除目标 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 Web,修改备份任务,使用 /nexus-data 下的目录,如 /nexus-data/backup。