avatar

Ryan's Blog

The first step is always the hardest.

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
  • 工具
Home SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA
文章

SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA

Posted 2022-01-14 Updated 11 days ago
By Ryan Chen
10~13 min read

SonarQube 升级不能简单覆盖目录。尤其从旧版本升级到 LTA / LTS 版本时,需要关注数据库支持、Java 版本、插件兼容、Elasticsearch 索引、升级路径和回滚方案。

本文保留一次从 SonarQube 7.6 升级到 7.9.6 LTS,再升级到 8.9.6 LTS 的实践,并补充当前升级时应该遵守的通用原则。

CI/CD 系列文章

本文属于 Jenkins + GitLab + SonarQube CI/CD 系列,相关内容可以继续阅读:

  • Git 提交规范实践:Conventional Commits、Commitizen 与 CHANGELOG 自动生成
  • GitLab Docker 部署与 Personal Access Token 配置指南
  • Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
  • GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建
  • Jenkins 基于 GitLab 分支与 Tag 的自动化打包发布实践
  • Jenkins 集成 SonarQube:代码扫描、质量门禁与 Pipeline 实践
  • SonarQube Docker 部署与 Java 项目静态代码分析指南
  • SonarQube for IDE 使用指南:IntelliJ 安装、Connected Mode 与规则同步
  • SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA

升级原则

  • 先读官方升级路径,不要盲目跨版本。
  • 先备份数据库和 SonarQube Home。
  • 先在测试环境演练。
  • 检查 Java、数据库、插件兼容性。
  • 不要直接复制旧版本配置文件覆盖新版本。
  • 升级后访问 /setup 完成数据库升级。

旧案例:7.6 -> 7.9.6 -> 8.9.6

历史背景:SonarQube 7.9 之后不再支持 MySQL,因此旧环境如果使用 MySQL,需要先迁移到 PostgreSQL。

推荐路径:

7.6 + MySQL -> 7.6 + PostgreSQL -> 7.9.6 LTS -> 8.9.6 LTS

MySQL 迁移到 PostgreSQL

使用官方迁移工具前,先完整备份数据库。

源配置:

sonar.jdbc.url=jdbc:mysql://old-host:3306/sonar
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

目标配置:

sonar.jdbc.url=jdbc:postgresql://new-host:5432/sonar
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

迁移后删除旧 Elasticsearch 索引目录,让 SonarQube 重建索引。

升级执行步骤

  1. 停止旧 SonarQube。
  2. 备份数据库。
  3. 备份 SonarQube 安装目录和扩展插件。
  4. 下载目标版本。
  5. 按新版本模板重新配置 sonar.properties。
  6. 检查 Java 版本。
  7. 检查插件兼容性。
  8. 启动新版本。
  9. 访问 /setup 执行数据库升级。
  10. 验证项目、规则、质量门禁和扫描任务。

插件兼容

升级前要检查:

  • 中文插件。
  • PDF 插件。
  • P3C 插件。
  • 自定义规则插件。

不兼容插件可能导致 SonarQube 启动失败。建议先移除第三方插件,升级成功后逐个验证。

回滚方案

升级一旦执行数据库迁移,不能简单降级。回滚依赖升级前备份:

  • 恢复旧数据库。
  • 恢复旧 SonarQube 目录。
  • 恢复旧插件。
  • 恢复旧 Java 环境。

当前版本注意事项

SonarSource 现在使用 LTA 等版本节奏。升级时应根据当前官方文档确定路径,例如从旧 LTS/LTA 逐级升级到目标 LTA。不要只照搬 7.6 -> 8.9 的旧路径。

常见问题

1. 启动失败

检查 Java 版本、数据库连接、插件兼容和日志。

2. 页面提示需要 setup

访问:

http://<host>:9000/setup

按提示完成数据库升级。

3. 扫描任务失败

检查 Scanner 版本、Token、项目 Key、JDK 和质量配置。

参考资料

  • SonarQube 升级路径
  • SonarQube Server 安装文档
  • SonarQube Docker 安装
指南
SonarQube 迁移 版本升级 LTS PostgreSQL 问题排查
License:  CC BY 4.0
Share

Further Reading

Jun 27, 2026

Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分

本文整理一套适合 Router Agent + Skill + Runtime 架构的设计原则:Agent 只负责业务决策,Runtime 统一负责执行、恢复、Trace、Checkpoint 和 Evidence,Business Script 只做确定性业务执行。

Sep 9, 2024

Redis 核心概念、数据结构与高可用架构详解

系统梳理 Redis 的核心数据类型、底层结构、过期与淘汰、持久化、事务、主从复制、Sentinel、Cluster、缓存一致性和分布式锁等机制,适合作为 Redis 学习、面试复习和高可用架构设计参考。

Sep 5, 2024

B+树原理与 MySQL InnoDB 索引机制解析

本文从 B+ 树的多叉平衡结构、叶子节点链表、范围查询和磁盘 I/O 特性出发,解释数据库索引为什么常采用 B+ 树,并结合 MySQL InnoDB 的聚簇索引、二级索引、回表、覆盖索引和联合索引机制理解其实际应用。

OLDER

APISIX 入门指南:核心概念、Docker 部署与基础路由配置

NEWER

Git 提交规范实践:Conventional Commits、Commitizen 与 CHANGELOG 自动生成

Recently Updated

  • Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分
  • RocketMQ 架构设计与应用最佳实践:高可用消息队列核心解析
  • Redis 核心概念、数据结构与高可用架构详解
  • B+树原理与 MySQL InnoDB 索引机制解析
  • MySQL AUTO_INCREMENT 插入 0 变成自增值的原因与解决方案

Trending Tags

RocketMQ Windows Feign Docker Zipkin SonarQube OkHttp HttpClient API 性能优化

Contents

©2026 Ryan's Blog. Some rights reserved. · 粤ICP备2022031588号