Nexus可以用作二进制私库,也可以用作镜像私库,这篇文章整理一下Nexus使用中的数据备份与恢复的相关知识。
Nexus数据与备份Nexus中普通数据信息和元数据是分开存储的,前者保存在blob中,而后者保存在数据库中。而在备份的时候二者必须同时进行备份,在备份策略中必须要同时包含两者才能保证数据的完整性。而关于Nexus数据也可以分成如下两类进行备份:
-
blob数据 普通数据信息在Nexus中是保存在blob中的,所以此部分数据必须进行备份,blob的典型配置中,此目录对应着Nexus的数据目录的blobs子目录。
-
元数据 元数据在Nexus中是在数据库中进行保存的,为了保证数据的完整性,Nexus需要同时将数据库中的数据进行导出和备份
Nexus中一般可按照如下步骤进行数据备份:
-
步骤1: 使用管理员用户创建数据库meta数据的执行任务 使用管理员用户可创建如下任务
可根据需要设定任务执行的方式,比如此处设定为每日0点执行,将数据导出至/nexus-data/metabackup中,可以看到任务的状态为waiting
-
步骤2: 运行创建的执行任务导出数据到事前配置的目录中 但是也可以手动执行,进入Task详细页面,点击Run按钮即可实时执行备份操作
执行之后可以看到执行的结果的详细信息如下所示
进入到容器内部可以看到生成的/nexus-data/metabackup目录和其下文件如下所示
注:此处时间不一致因为虚拟机的时间的问题,实际环境中应没有此类问题
-
步骤3: 备份安装时的配置信息以及数据目录
-
步骤4: 备份所有的blob数据信息
-
步骤5: 将所有的备份信息进行统一的存储和管理
注意事项:对于数据库的写权限会临时的挂起直至备份结束才会恢复,因此备份的任务的执行应该在非业务时间进行。
便捷备份方式更为便捷的备份方式为直接备份整个/nexus-data目录即可,建议将此卷挂载出来,作为备份对象,详细的各目录的说明信息如下所示:
目录名称 说明 清理策略 blobs Nexus的数据被保存在被称为blob的块中 根据需要进行定期清理,尤其是此目录中如果包含构建所产生的二进制制品的情况下,此目录的磁盘使用率会越来越大 cache 保存当前Karaf bundles所使用的信息 内部使用信息,无需进行定期清理 db meta数据存储的数据库信息 备份建议通过使用Nexus创建相应的任务来进行数据的导出 elasticsearch elasticsearch当前的配置状态 不会大幅度增加磁盘的使用需求,无需进行定期清理 etc 主要的配置和运行态的设定 无需进行定期清理 health-check Nexus相关的健康检查的相关信息 不会大幅度增加磁盘的使用需求,无需进行定期清理 tmp 临时使用的目录 Nexus内部使用的临时目录,无需进行定期清理 log 日志信息 包含nexus.log、jvm.log、karaf.log和request.log等日志信息,虽然不会产生大量磁盘使用状况,但是根据日志备份策略会生成很多文件,建议保存一定日期的log.gz文件,超过一定时间比如2W以上的可进行删除 日志Nexus日志保存在/nexus-data/log目录中,主要分为如下几种
- jvm.log JVM标准输出、错误和线程导出的信息记录在此日志文件之中
- nexus.log 应用日志,日志信息包含标准日志输出字段比如时间/日志级别/相关线程/类与消息详细信息等。
- request.log 用于通过http方式的访问请求进行记录的日志信息,包含客户机信息、用户和HTTP请求属性(状态码与user-agent等header)等
- karaf.log Apache Karaf容器日志文件信息
如果将整个数据卷进行备份的情况,恢复在Nexus服务停止的状况下,直接替换,然后重启服务即可恢复Nexus服务
参考内容https://help.sonatype.com/repomanager3/backup-and-restore/restore-exported-databases https://help.sonatype.com/repomanager3/installation/directories