Nexus3 部署备份与恢复

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nexus3 部署备份与恢复相关的知识,希望对你有一定的参考价值。

一、部署

compose.yml

version: '3.9'
services:
  nexus:
    environment:
      INSTALL4J_ADD_VM_PARAMS: "-Xms6g -Xmx6g -XX:MaxDirectMemorySize=15530m "
    image: sonatype/nexus3:3.41.0
    container_name: nexus
    restart: always
    ports:
    - "8081:8081"
    volumes:
      - /data/appsData/nexus/:/nexus-data

二、配置

配置 Maven 代理

当您代理组件时,存储库管理器充当本地中间服务器,用于发送到远程存储库/注册表的任何下载请求。

添加阿里云代理



阿里云 Maven 代理地址:http://maven.aliyun.com/nexus/content/groups/public

修改 setings.xml

在自己本地的开发环境中(一般是开发人员自己平时使用的电脑),备份原来默认的 Maven 配置文件 setings.xml

修改 setings.xml 文件内容为:

<settings>
<mirrors>
  <mirror>
  <!--This sends everything else to /public -->
  <!-- nexus 是自定义的id 需要和下面 servers 标签中的一致-->
  <id>nexus-</id>
  <mirrorOf>*</mirrorOf>
  <!-- 配置 Nexus3 的服务器地址,这里配置的是 localhost -->
  <url>http://localhost:8081/repository/maven-proxy/</url>
  </mirror>
</mirrors>
<servers>
  <!-- 设置Nexus3 的用户名密码 -->
  <server>
    <!-- 和上面 mirrors 中的 id 一致 -->
    <id>nexus</id>
    <username>admin</username>
    <password>Password</password>
  </server>
</servers>
<profiles>
  <profile>
  <id>nexus</id>
  <!--Enable snapshots for the built in central repo to direct -->
  <!--all requests to nexus via the mirror -->
  <repositories>
      <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
      </repository>
  </repositories>
  <pluginRepositories>
      <pluginRepository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
      </pluginRepository>
  </pluginRepositories>
  </profile>
</profiles>
<activeProfiles>
  <!--make the profile active all the time -->
  <activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>


在自己的JAVA项目中创建含如下内容的 pom.xml 文件

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>nexus-proxy</artifactId>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
    </dependency>
  </dependencies>
</project>

三、备份

设置备份(数据库)



需要备份的目录文件

Nexus Repository 将数据存储在 blob 存储中,并将一些 metadata 和配置信息分别保存在数据库中。必须同时备份 Blob 存储和元数据数据库。备份策略应涉及将数据库和 Blob 存储一起备份到新位置,以保持数据不变。完成以下步骤以执行备份

1 Blob 存储备份

对于文件 Blob 存储,请备份存储 Blob 的目录。

  • 对于典型配置,这将是 。$data-dir/blobs

这个可以通过 Tasks 实现



2 节点 ID 备份

每个 Nexus 存储库实例都与一个不同的 ID 相关联。必须备份此 ID,以便 Blob 存储指标(磁盘上 Blob 的大小和计数)和 Nexus 防火墙报告在还原时正常运行。要备份以保留节点 ID 的文件位于以下位置:

$data-dir/keystores/node/​

这个使用操作系统的计划任务实现即可.

0 0  *  *  *  rsync -raP $data-dir/keystores/node/​    --rsh=ssh root@远程服务器IP:/path/to/backup

四、恢复

在恢复组件数据库时,还必须恢复包含组件的相应blob存储。不这样做将导致blobstore和数据库之间的同步问题。

## 恢复的步骤:

  1. 停止 Nexus
  2. $data-dir/db 中删除以下目录
    • component
    • config
    • security
  3. 转到存储备份数据库文件的位置
  4. 将相应的数据库备份文件复制到 $data-dir/restore-from-backup 以进行恢复
  5. 还原对应于数据库备份的blob存储备份(时间上要一致)
  6. 重新启动 Nexus 存储库
  7. 验证 Nexus 存储库是否正常运行
  8. 从目录 restore-from-backup 中删除备份文件

提示

如果blob存储和数据库备份不是在同一时刻进行的,则在还原后可能会失去同步。
要解决此问题


以上是关于Nexus3 部署备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins部署与备份恢复实战

MySQL备份与还原

gitlab部署使用备份与恢复

gitlab部署使用备份与恢复

MySQL 完全备份 + 增量备份+完全恢复

MySQL数据库备份与恢复