SonarQube v4.5.6至v7.1跨版本数据迁移可行性咨询
SonarQube v4.5.6 到 v7.1 的数据迁移方案
嘿,其实这个迁移是可以实现的!虽然新旧版本的数据库表结构差异很大,还跨了MySQL版本,但只要遵循SonarQube的官方升级路径分阶段过渡,就能搞定。下面是具体的操作步骤和注意事项:
1. 先做好万全的备份工作
不管做什么迁移,备份都是第一步:
- 导出旧服务器的MySQL 5.1数据库:用
mysqldump命令全量备份:mysqldump -u [你的数据库用户名] -p sonar > sonar_old_full_backup.sql - 同时备份旧SonarQube服务器上的
data目录(里面包含插件、索引等重要数据)
2. 通过中间LTS版本解决数据库版本兼容问题
因为v4.5.6不支持MySQL 5.7,v7.1又不支持MySQL 5.1,所以我们需要先借助SonarQube 5.6.x LTS这个中间版本(它同时兼容MySQL 5.1和5.7)来过渡:
- 在临时服务器或者旧服务器上部署SonarQube 5.6.x LTS,配置它连接到旧的MySQL 5.1数据库
- 启动服务,SonarQube会自动把v4.5.6的数据库结构升级到5.6.x的版本,等升级完成后再停止服务
- 导出升级后的5.6.x版本数据库:
mysqldump -u [用户名] -p sonar > sonar_5.6_backup.sql - 把这个备份导入到新服务器的MySQL 5.7数据库里:
mysql -u [用户名] -p sonar < sonar_5.6_backup.sql
3. 升级到6.7.x LTS(7.1的前置兼容版本)
SonarQube官方要求升级到7.1必须从6.7.x LTS过渡,不能直接从5.6.x跳过来:
- 在新服务器上安装SonarQube 6.7.x LTS,配置它连接到MySQL 5.7的数据库(6.7.x支持MySQL 5.6+,完全符合要求)
- 启动服务,等待自动完成数据库结构升级,期间不要中断服务
- 升级完成后,登录SonarQube界面检查数据是否正常(比如看几个核心项目的代码量、问题数是否和旧服务器一致),没问题的话再停止服务并备份数据库
4. 最终升级到SonarQube v7.1
- 在新服务器上安装SonarQube v7.1,配置好MySQL 5.7的数据库连接参数
- 启动服务,它会自动完成最后一步的数据库结构升级
- 升级完成后,全面验证数据:项目历史、代码质量报告、用户权限、自定义配置等,确保和旧服务器完全一致
关键注意事项
- 每一步升级都要使用对应版本要求的Java环境:5.6.x、6.7.x、7.1都需要Java 8,别用更高版本的Java,避免兼容性问题
- 如果旧服务器有自定义插件,一定要确认这些插件在5.6.x、6.7.x、7.1版本中都有兼容版本,否则可能导致升级失败或者功能缺失
- 不要跳过任何中间LTS版本,跳过的话大概率会出现数据库结构不匹配,导致数据损坏或者服务无法启动
- 每一步升级完成后都要做数据库备份,万一出问题可以回滚到上一个稳定状态
内容的提问来源于stack exchange,提问作者GID




