如何使用 Nexus 备份和恢复 Nexus
由于 Nexus 3.81 Community Edition 的限制性限制,该版本已被弃用。一旦使用达到配额限制(总组件数 100,000 和每日请求数 200,000),实例将无法正常工作。
如果您已经升级到 3.81 版本,请按照回滚到 Nexus 3.76指南进行降级。
有关 Community Edition 限制的更多信息,请参见Community Edition Limitations。
目录
前提条件备份在 Nexus Web 上创建备份任务删除 nexus 实例服务以防止备份期间数据变更备份 nexus 数据并验证备份备份 blob 存储备份节点 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 operator。
- 在 Nexus Web 上创建备份任务。
- 删除 nexus 实例的服务以防止数据变更。
- 备份 nexus 数据并验证备份。
- 备份完成后恢复 nexus 实例。
在 Nexus Web 上创建备份任务
以管理员用户登录 Nexus Web UI。导航至 Settings -> System -> Tasks -> Create task -> 选择 Admin - Backup H2 Database,填写:
- 任务启用:true
- 任务名称:nexus-backup(或任意名称)
- 通知邮箱:(可选)user@example.com
- 发送通知条件:(可选)Failure
- 位置:
/nexus-data下的任意子目录(例如/nexus-data/backup-dir) - 任务频率:Manual
删除 nexus 实例服务以防止备份期间数据变更
为防止备份期间写入,临时停止实例的服务端点,删除前端 pod 的 Service:
此操作不会删除 pod 或数据,仅停止外部流量。
备份 nexus 数据并验证备份
备份 blob 存储
备份节点 ID 密钥库
导出并备份数据库
然后从 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 实例服务以防止恢复期间数据变更。
- 删除目标实例的现有数据。
- 重启 pod,让 Nexus 从备份恢复。
- 清理临时数据并恢复正常服务。
如果尚未卸载,先从集群中卸载 Nexus ce operator。
删除 nexus 实例服务以防止恢复期间数据变更
删除目标实例的现有数据
删除目标 pod 中的现有数据,避免旧数据与恢复数据混合。如果权限限制无法在 pod 内删除,请根据您的存储类说明直接从挂载卷删除数据。
如果必须直接在节点/PV 上删除,也请删除相同目录。
重启 pod,让 Nexus 从备份恢复
导入备份数据
恢复数据时,请确保使用正确的数据库文件。
如果回滚到 Nexus 3.76,请使用回滚流程前一步创建的回滚数据库文件。详情见回滚到 Nexus 3.76。
确认 pod 中以下目录包含数据:
/nexus-data/blobs/nexus-data/keystores/node/nexus-data/db/nexus.mv.db
重启 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。