需求:
因为SonarQube7.9版本之后SonarQube官方将不再对Mysql进行支持,所以我将mysql中的sonar数据迁移到oracle数据库。随着项目增大,mysql效率也是考虑一个原因。
先决条件:
- SonarQube 6.7LTS至7.8版本
注意:您的源数据库和目标数据库必须使用相同版本的SonarQube。 - 当前正在使用MySQL
具体实施步骤:
1、下载最新版本的迁移器并解压缩。
2、确保源和目标的SonarQube版本相同。例如,如果你在源数据库上运行SonarQube 7.3,那么目标数据库上也确保是SonarQube 7.3。另外目标服务器执行一次生成好数据库表文件信息,然后将服务停止。
3、mysql-migrator脚本可以通过执行./mysql-migrator -help来获取使用说明。
必填参数: (样例 ./mysql-migrator -source /xx/source.properties -target /xx/source.propeties)
-source PATH
PATH
您的运行MySQL的SonarQube实例的配置文件的路径在哪里。-target PATH
PATH
您的运行非MySQL数据库的SonarQube实例的配置文件的路径在哪里。
以下是配置文件,请自行修改IP地址,支持远程连接,目标库和源码库不需要在同一个服务器。请照抄,实施时第一次将sonar.jdbc.username放在sonar.jdbc.url上出现了...CommunicationsException: Communications link failure 。
source.properties mysql
sonar.jdbc.url = jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username = sonar
sonar.jdbc.password = sonar
source.properties oracle
sonar.jdbc.url = jdbc:oracle:thin:@xx.xx.xx.xx:1521/SID
sonar.jdbc.username = sonar
sonar.jdbc.password = sonar
4、数据迁移完毕后,删除目标SonarQube实例中的Elasticsearch数据文件夹:data/es5(
在SonarQube 6.7-7.6);和 data/es6 在
SonarQube 7.7及更高版本上。如果不进行删除,你启动后在sonarqube平台上数据将不显示。
注意:如果迁移目标是oracle,你还需要将oracle驱动jar包放到mysql-migrator/lib目录下,另外驱动jar的名称必须改成oracle.jar。
相关链接
从SonarQube v7.9开始,官网将不再支持任何版本的MySQL。这是作者原话:https://community.sonarsource.com/t/end-of-life-of-mysql-support/8667
SonarQube提供了一个小工具以便于数据库数据从Mysql迁移至其它库。工具下载链接https://github.com/SonarSource/mysql-migrator
SonarQube社区论坛 https://community.sonarsource.com/