You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nexus Repository Manager从3.29.2升级至3.48.0索引创建失败求助

Nexus 3.29.2 升级至 3.48.0 可行解决方案

问题复盘

你用Docker部署的Nexus 3.29.2(嵌入式OrientDB)直接升级到3.48.0时,容器启动失败(退出码255),日志报Exception during index 'asset_bucket_rid_idx' creation;尝试分步升级也遇到不同索引异常;用OrientDB Console迁移后GUI能访问,但「Repair - Reconcile component database from blob store」任务一直卡着,数据疑似不一致。

分步升级解决方案(优先推荐)

官方明确要求跨大版本升级必须走LTS过渡节点,3.38.x是3.29到3.48之间的关键LTS版本,按以下步骤操作:

1. 全量备份数据

  • 先停掉旧容器:docker stop nexus-3.29
  • 把整个持久化目录复制到安全地方:cp -r /your/nexus/data/path /your/backup/path/nexus-data-3.29-full
  • 确保备份包含db、blobstore、etc所有子目录,别漏了

2. 先升级到3.38.1(LTS版本)

  • 启动3.38.1容器,挂载原数据目录:
    docker run -d \
      --name nexus-3.38 \
      -p 8081:8081 \
      -v /your/nexus/data/path:/nexus-data \
      sonatype/nexus3:3.38.1
    
  • 盯紧日志:docker logs -f nexus-3.38,直到出现Started Sonatype Nexus OSS再停
  • 登录GUI,跑两个修复任务:
    1. 进入「System → Tasks」,找到「Repair - Rebuild component database indexes」并运行,等它完成
    2. 接着运行「Repair - Reconcile component database from blob store」,确认任务状态是成功
  • 停掉3.38容器:docker stop nexus-3.38

3. 升级到3.48.0

  • 启动3.48.0容器,挂载同一数据目录:
    docker run -d \
      --name nexus-3.48 \
      -p 8081:8081 \
      -v /your/nexus/data/path:/nexus-data \
      sonatype/nexus3:3.48.0
    
  • 继续看日志,确认没有索引创建异常
  • 启动完成后,再跑一次「Repair - Reconcile component database from blob store」任务,验证数据一致

极端情况处理(数据库已损坏)

如果分步升级还是失败,说明原OrientDB数据库有损坏,得先修复再迁移:

1. 修复旧版本数据库

  • 重新启动3.29.2容器,确保正常运行
  • 进入容器里的OrientDB控制台:
    docker exec -it nexus-3.29 /opt/sonatype/nexus/bin/nexus-orient-console
    
  • 连接数据库(默认密码admin/admin):
    CONNECT plocal:/nexus-data/db/nexus admin admin
    
  • 执行修复命令:
    REPAIR DATABASE --fix-links --fix-rid-collisions
    
  • 导出干净的数据库备份:
    EXPORT DATABASE /nexus-data/db-clean-3.29.json
    

2. 重建数据库并升级

  • 停掉3.29容器,删除原db目录:rm -rf /your/nexus/data/path/db
  • 启动3.38.1容器,让它初始化全新的数据库,然后立刻停止
  • 进入3.38容器的OrientDB控制台,导入备份:
    CONNECT plocal:/nexus-data/db/nexus admin admin
    IMPORT DATABASE /nexus-data/db-clean-3.29.json
    
  • 重建所有索引:
    REBUILD INDEX *
    
  • 启动3.38容器,验证正常后,再按前面的步骤升级到3.48.0

注意事项

  • 升级前必须做全量备份,不然数据丢了哭都来不及
  • 绝对不能跨LTS版本直接跳级,这是索引异常的主要原因
  • 每次升级后都要跑修复任务,别嫌麻烦,数据一致性很重要
  • 嵌入式OrientDB稳定性差,生产环境建议换成外部PostgreSQL数据库

内容的提问来源于stack exchange,提问作者Jakub P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:44:56