Sonarqube Mygration MySQL vers PostgreSql

De EjnTricks

Pour la mise à jour en version 7.9, la base MySql n'est plus supportée, comme indiqué dans la documentation officielle https://community.sonarsource.com/t/end-of-life-of-mysql-support/8667. Dans le cadre de cette installation les données ont été migrées vers PostgreSql


Cet article présente l'utilisation de l'outil de migration fourni gratuitement : https://github.com/SonarSource/mysql-migrator


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Download-icon.png Téléchargement

L'outil est téléchargée dans le répertoire /var/opt/sonarqube.

#sudo wget -O /var/opt/sonarqube/mysql-migrator-1.1.0.119.zip https://binaries.sonarsource.com/Distribution/mysql-migrator/mysql-migrator-1.1.0.119.zip


System-Install-icon.png Installation

Puis il faut décompresser l'archive dans la structure personnalisée sous /var/opt/sonarqube.

#sudo unzip /var/opt/sonarqube/mysql-migrator-1.1.0.119.zip -d /var/opt/sonarqube

Le fichier téléchargé peut être supprimé.

#sudo rm /var/opt/sonarqube/mysql-migrator-1.1.0.119.zip


System-Install-icon.png Installation instance vide

Il faut ensuite installée une version vierge de Sonarquabe avec la même version que celle à migrer. Dans le cadre de cette article, c'est une version 7.8. L'instance est mise en place dans le répertoire /var/opt/sonarqube/7.8.p, et elle est configurée pour une base PostgreSql.

Le fichier de configuration de la version sous MySql se trouve à l'emplacement /var/opt/sonarqube/7.8/conf/sonar.properties, et à l'emplacement /var/opt/sonarqube/7.8.p/conf/sonar.properties pour l'instance sous PostgreSql.

Attention, une fois l'instance installée, il est recommandée de purger les données ElasticSearch.

#sudo rm -rf /var/opt/sonarqube/7.8.p/data/es6


Bug-icon.png Bug MySql 8

Attention, cette migration a été réalisée suite à l'installation de Ubuntu 19.10 qui embarque une version 8 de MySql. Or les requêtes générées par Sonarqube utilise des mots réservés de MySql et l'outil ne fonctionne pas.

Une demande de modification a été réalisée : https://github.com/SonarSource/mysql-migrator/pull/51


Icon-database-process.png Migration des données

La migration des données s'effectue simplement en exécutant l'outil mysql-migrator et en indiquant l'emplacement du fichier de configuration contenant la configuration MySql avec l'argument source, l'argument target permet de spécifier le fichier de configuration contenant la configuration PostgreSql.

#/var/opt/sonarqube/mysql-migrator-1.1.0.119/bin/mysql-migrator -source /var/opt/sonarqube/7.8/conf/sonar.properties -target /var/opt/sonarqube/7.8.p/conf/sonar.properties


Icon-Configuration-Settings.png Paramétrages

Une fois la migration réalisée, il suffit de modifier le fichier de configuration de la précédente installation, soit à le fichier /var/opt/sonarqube/7.8/conf/sonar.properties dans le cadre de cette instance, pour pointer sur la base PostgreSql et de la relancer.

Attention, la chaîne de connexion étant modifiée un message d'avertissement est présent dans la trace, fichier sonar.log, indiquant la modification du Server ID.

2019.12.23 19:07:14 WARN  web[][o.s.s.p.s.ServerIdManager] Server ID is reset because it is not valid anymore. Database URL probably changed.
The new server ID affects SonarSource licensed products.
2019.12.23 19:07:18 INFO  web[][o.s.s.p.UpdateCenterClient] Update center: https://update.sonarsource.org/update-center.properties (no proxy)
2019.12.23 19:07:22 INFO  web[][o.s.s.e.IndexCreator] Delete Elasticsearch indices (DB vendor changed)

De plus, les données sont ré-indexées.

2019.12.23 19:08:19 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [rules/rule/activeRule] ...
2019.12.23 19:08:27 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [rules/rule/activeRule] done | time=7765ms
2019.12.23 19:08:27 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of types [rules/rule],[rules/rule/ruleExtension] ...
2019.12.23 19:08:52 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of types [rules/rule],[rules/rule/ruleExtension] done | time=25272ms
2019.12.23 19:08:52 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [users/user] ...
2019.12.23 19:08:54 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [users/user] done | time=1655ms
2019.12.23 19:08:54 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [components/auth/component] ...
2019.12.23 19:09:14 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [components/auth/component] done | time=20118ms
2019.12.23 19:09:14 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [views/view] ...
2019.12.23 19:09:15 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [views/view] done | time=359ms
2019.12.23 19:09:15 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [issues/auth/issue] ...
2019.12.23 19:09:27 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [issues/auth/issue] done | time=12036ms
2019.12.23 19:09:27 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of types [components/auth],[projectmeasures/auth],[issues/auth] ...
2019.12.23 19:09:44 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of types [components/auth],[projectmeasures/auth],[issues/auth] done | time=17877ms
2019.12.23 19:09:44 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [projectmeasures/auth/projectmeasure] ...
2019.12.23 19:09:49 INFO  web[][o.s.s.e.IndexerStartupTask] Indexing of type [projectmeasures/auth/projectmeasure] done | time=4532ms


Viewer icon.png Voir aussi

Documentation officielle: https://community.sonarsource.com/t/end-of-life-of-mysql-support/8667