SonarQube升级过程记录

#Upgrading-ReleaseUpgradeNotes

2.停止SonarQube服务:

bin/<SYSTEM>/sonar stop

3.下载新版本的SonarQube及SonarQube Runner,并解压至新的目录NEW_SONARQUBE_HOME


4.更新NEW_SONARQUBE_HOME/conf下sonar.properties与wrapper.conf文件里的内容,文件内容参照OLD_SONARQUBE_HOME/conf下相应配置文件的内容,但切记千万不要直接将原来的配置文件拷贝覆盖,因为新的sonar.properties与wrapper.conf文件还包含新版本的一些配置项。

5.拷贝OLD_SONARQUBE_HOME/extensions/plugins中的插件至NEW_SONARQUBE_HOME/extensions/plugins

6.如果使用的是自定义的JDBC驱动,将其拷贝至NEW_SONARQUBE_HOME/extensions/jdbc-driver/<dialect>

7.备份数据库:MySQL:

/usr/local/mysql# mysqldump -u sonar -p sonar>sonar.sql

8.启动SonarQube:

bin/<SYSTEM>/sonar stop

9.用浏览器访问:9000/setup (注意:不再是直接访问localhost:9000),根据提示升级

 

10.根据实际情况修改系统中或持续集成中所有涉及SONAR_HOME和SONAR_RUNNER_HOME环境变量

 

11.使用新版SonarQube Runner分析项目

 

 

可能遇到的问题:

一、分析项目时报插件兼容性错误

解决:登录:9000 WEB中配置——更新中心,将plugins都更新至最新版本

注:更新Java Plugin时将会有个警告,

因此,在更新中心中下载新版本Java Plugin后,需要将$SONARQUBE_HOME/extensions/plugins下老的Surefire, JaCoCo, and Squid插件jar包删除,并重启服务

 

二、Impossible to upgrade database

Migration failed: An error has occurred, all later migrations canceled: ActiveRecord::JDBCError: Specified key was too long; max key length is 1000 bytes: CREATE UNIQUE INDEX `rules_repo_key` ON `rules` (`plugin_name`, `plugin_rule_key`) .
Please check logs.

 

原因:Sonar在MySQL中对表建立索引时,key的长度超过1000 bytes了,由于MySQL使用MyISAM engine时会有key长度的限制,若MySQL使用的是MyISAM engine的话将会出现这个问题

 

解决:将MySQL的默认engine修改为INNODB

1.检查当前的引擎 

mysql> show engines; 

 

2.确认确实使用的是MyISAM后,将默认engine修改为INNODB,并重启MySQL服务

修改my.cnf配置文件:

/etc/mysql/my.cnf

default-storage-engine=INNODB # Uncomment the following if you are using InnoDB tables innodb_data_home_dir = /usr/local/var innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /usr/local/var # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 256M innodb_additional_mem_pool_size = 20M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 64M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50

3.查看是否支持动态加载

mysql>show variables like "have_%";

查看have_dynamic_loading这行,如果是YES,则继续 

 

4.安装插件

mysql>INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_TRX SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_LOCKS SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_LOCK_WAITS SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_CMP SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_CMP_RESET SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_CMPMEM SONAME 'ha_innodb_plugin.so'; mysql>INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME 'ha_innodb_plugin.so'

5.再次查看当前的引擎

mysql> show engines;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15092.html