一、nexus 自 3.70.0 以上版本不再支持传统的OrientDB 数据库,必须使用H2或者PostgreSQL数据库,个人用户建议使用轻量级的H2,所以要从3.XX升级到最新的3.78.2,必须迁移旧的数据库,迁移过程其实很简单,尤其是对于docker部署的nexus来说。

二、迁移过程分为以下几步:

  1. 备份原来的nexus容器数据

    #路径根据自己容器映射地址来
    cp -r /mnt/nexus/data  /mnt/nexus/data.bak
  2. 先升级至3.70.0,此版本既支持OrientDB也支持H2数据库,是我们升级至最新版本的过度版本,只有这个版本下才有对应的迁移工具包能够使用,这一步直接拉取docker镜像然后重新根据之前配置启动容器即可。

    sudo docker pull sonatype/nexus3:3.70.0
    #停止原来的nexus容器并删除,启动新镜像容器,这一步(参数因人而异),下面只做参考
    sudo docker stop nexus3
    sudo docker rm nexus3
    sudo docker run -d --restart=always -p 8081:8081 --name nexus3 -v /data:/nexus-data sonatype/nexus3:3.70.0
  3. nexus 3.70.0容器启动后,先导出原来的数据文件,然后下载迁移工具按照官方文档进行备份和迁移。
    此过程官方有完整的操作文档 https://help.sonatype.com/en/migrating-to-a-new-database.html#migrating-from-orientdb-to-h2-162010

  4. 接下来重启nexus 3.70.0这个容器看是否正常,如果一切正常,说明已切换为H2数据库,docker直接升级至最新版即可。

    sudo docker pull sonatype/nexus3:3.78.2-java17-alpine
    #停止原来的nexus容器并删除,启动新镜像容器,这一步(参数因人而异),下面只做参考
    sudo docker stop nexus3
    sudo docker rm nexus3
    sudo docker run -d --restart=always -p 8081:8081 --name nexus3 -v /data:/nexus-data sonatype/nexus3:3.78.2-java17-alpine
  5. 最新版本可能会出现一个黄色警告,需要添加自定义密钥文件,添加方式官方文档https://help.sonatype.com/en/re-encryption-in-nexus-repository.html,
    文档中最后一步re-encrypt按照下面第六步操作即可。

    ## nexus Nexus was not configured with an encryption key and is using the Default key.

    在配置文件和环境变量中添加任选其一即可!然后重启容器。

  6. 最后登录后台通过API重置下密钥,如下图,secretKeyId就是你上面定义的json文件中的id,点击请求警告就消除了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注