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

Sonatype Nexus社区版:EC2上H2数据库迁移至PostgreSQL求助

Nexus Community版从H2手动迁移到PostgreSQL的实操步骤

一、前置准备

  • 停止Nexus服务:sudo systemctl stop nexus(其他启动方式对应执行停止命令)
  • 备份H2数据库文件:复制sonatype-work/nexus3/db/nexus.mv.db到安全目录,用于迁移失败时回滚
  • 完成PostgreSQL基础配置:
    1. 进入PostgreSQL命令行:sudo -u postgres psql
    2. 创建Nexus专用数据库:CREATE DATABASE nexus WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0;
    3. 创建数据库用户:CREATE USER nexus WITH PASSWORD 'your_secure_password';
    4. 授权用户权限:GRANT ALL PRIVILEGES ON DATABASE nexus TO nexus;
    5. 退出命令行:\q

二、导出H2数据库为SQL脚本

Nexus社区版无内置导出工具,需用对应版本的H2命令行工具操作:

  1. 下载和Nexus内置版本一致的H2 jar包(比如Nexus 3.60+对应H2 2.2.224)
  2. 启动H2 Shell:java -cp h2-xxx.jar org.h2.tools.Shell
  3. 按提示输入连接信息:
    • JDBC URL:jdbc:h2:/绝对路径/sonatype-work/nexus3/db/nexus(注意去掉.mv.db后缀)
    • 用户名:sa
    • 密码:留空(默认无密码)
  4. 导出SQL脚本:SCRIPT TO '/tmp/nexus_h2_dump.sql';
  5. 退出H2 Shell:EXIT;

三、修改SQL脚本适配PostgreSQL

H2导出的脚本含专属语法,需手动调整:

  • 替换所有AUTO_INCREMENT为GENERATED BY DEFAULT AS IDENTITY(PostgreSQL标准自增语法)
  • 替换TIMESTAMP为TIMESTAMPTZ(适配时区,避免时间显示异常)
  • 删除H2专属配置语句,比如SET DATABASE ...、ALTER TABLE ... ALTER COLUMN ... RESTART WITH ...
  • 把VARCHAR_IGNORECASE替换为VARCHAR(PostgreSQL无此类型,不影响数据导入)
  • 若遇外键约束报错,可在脚本开头加SET session_replication_role = 'replica';,结尾加SET session_replication_role = 'origin';临时禁用外键检查

四、导入脚本到PostgreSQL

执行导入命令:psql -U nexus -d nexus -f /tmp/nexus_h2_dump.sql

  • 若出现报错,根据提示调整脚本(比如表重复则删除对应DROP TABLE语句,索引重复则跳过)
  • 导入完成后,进入psql执行\dt确认所有表已创建成功

五、配置Nexus连接PostgreSQL

  1. 编辑Nexus数据存储配置文件:sonatype-work/nexus3/etc/fabric/nexus-store.properties
  2. 替换原有H2配置为PostgreSQL连接信息:
nexus.datastore.nexus.type=jdbc
nexus.datastore.nexus.driverClassName=org.postgresql.Driver
nexus.datastore.nexus.url=jdbc:postgresql://localhost:5432/nexus
nexus.datastore.nexus.username=nexus
nexus.datastore.nexus.password=your_secure_password
  1. 下载对应版本的PostgreSQL驱动jar包,放到nexus-3.x.x/lib/system/org/postgresql/postgresql/目录,或直接放入sonatype-work/nexus3/deploy目录(Nexus会自动加载)

六、验证迁移结果

  1. 启动Nexus服务:sudo systemctl start nexus
  2. 查看日志sonatype-work/nexus3/log/nexus.log,确认无数据库连接错误
  3. 登录Nexus UI,检查仓库、用户、权限等数据是否完整
  4. 测试核心功能:上传/下载组件、创建仓库、修改用户配置,确保一切正常

内容的提问来源于stack exchange,提问作者Raphaël

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:33:24