Bei der Entwicklung von MariaDB Server verwenden wir Jira von Atlassian als Issue- und Projekt-Tracking-Software, aber auch für die Planung. Wir verwenden Jira seit 2012, als wir von Launchpad migriert sind. Zu diesem Zeitpunkt nutzten wir Jira in der Atlassian-Cloud, aber ein paar Jahre später entschieden wir uns, unsere eigene Instanz von Jira zu installieren und sie auf MariaDB Server auszuführen. Ich habe zuvor einen Blogbeitrag darüber geschrieben.
Jira auf MariaDB Server ist noch KEINE unterstützte Kombination. Jira unterstützt MySQL, aber offiziell noch nicht MariaDB. Wir möchten natürlich, dass so viele Softwarekomponenten wie möglich MariaDB Server unterstützen, um es unseren Kunden und Benutzern einfacher zu machen. Wir sind nicht die Einzigen, die so denken. Die Anfrage zur Unterstützung von MariaDB Server in Jira finden Sie hier und die umfassendere Anfrage zur Unterstützung von MariaDB Server in Atlassian-Produkten im Allgemeinen finden Sie hier. Geben Sie Ihre Stimme ab, damit MariaDB Server hoffentlich bald offiziell unterstützt wird. Aber die Sache ist die, obwohl es nicht offiziell unterstützt wird, funktioniert die Kombination von Jira und MariaDB großartig. Wir haben kürzlich ein Upgrade auf das neueste Jira und die neueste Version von MariaDB durchgeführt.
Vor dem Upgrade | Nach dem Upgrade | |
Betriebssystem für Jira | Ubuntu 14.04 | Ubuntu 18.04 |
Betriebssystem für MariaDB | Ubuntu 14.04 | Ubuntu 18.04 |
Jira-Version | 7.2.1 | 7.12.1 |
MariaDB Server-Version | 10.1.35 | 10.3.9 |
JDBC-Treiber | MariaDB-Konnektor/J 2.1.2 | MariaDB-Konnektor/J 2.3.0 |
Webserver | Nginx 1.10.1 | Nginx 1.14.0 |
Jira-Add-ons aktualisieren
Jira hat viele Plugins und die Plugin-Versionen müssen mit der laufenden Version von Jira kompatibel sein. In Jira ist ein Tool enthalten, der Jira Update Check für Add-Ons, der unter der URL /plugins/servlet/upm/check zu finden ist. Verwenden Sie dieses Tool, um alle Add-Ons auf Versionen zu aktualisieren, die in der Jira-Version unterstützt werden, auf die Sie aktualisieren möchten.
Zugriff auf Jira stoppen
Beginnen wir mit dem eigentlichen Upgrade. Beginnen Sie damit, Jira für Benutzer nicht verfügbar zu machen, indem Sie allen, die versuchen, auf Jira zuzugreifen, eine Wartungsseite bereitstellen. Mit Nginx geht das ganz einfach. Am Standort Direktive in der Nginx-Konfiguration, suchen Sie nach einer Wartungsdatei und zeigen Sie sie, falls vorhanden, für alle URLs an.
...
location / {
if (-f $document_root/maintenance.html) {
return 503;
}
...
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
Datenbank und Verzeichnisse sichern
Vor Beginn eines Upgrades sollte man sich natürlich vergewissern, dass Backups vorhanden sind. Wenn es um Jira geht, sollte man ein vollständiges Backup der Datenbank und der Verzeichnisse haben, die Jira zum Speichern von Anhängen und Benutzer-Avatar-Bildern verwendet. Wir hatten ein Backup-Tool auf dem Server, das täglich vollständige Backups erstellte. Zusätzlich habe ich mit dem Dump-Utility auch einen Datenbank-Dump erstellt.
Datenbanksicherung mit dem Dump-Dienstprogramm:
$ mysqldump -u username -p databasename > jiradb20180907.sql
$ tar -zcvf jiradb20180907.tar.gz jiradb20180907.sql
Anhänge und Avatare sichern:
$ tar -zcvf attachments20180908.tar.gz /data/jira/data/attachments/
$ tar -zcvf avatars20180908.tar.gz /data/jira/data/avatars/
Kopieren Sie die Sicherungsdateien auf einen anderen Server, falls beim Upgrade-Vorgang etwas schief geht.
Betriebssystem-Upgrade
Auf unserem Jira-Server lief Ubuntu 14.04, und während wir die Software aktualisierten, wollten wir auch das Betriebssystem aktualisieren. Ich werde nicht auf die Details des Upgrades von Ubuntu eingehen, aber im Grunde habe ich do-release-upgrade zweimal ausgeführt, um den Server auf Ubuntu 18.04 zu bringen. Es gab ein paar Dinge, die ich erledigen musste. Ich musste die Datei /etc/update-manager/release-upgrades.d/unauth.cfg erstellen und Folgendes hinzufügen. Dies sollte Bibliotheken ermöglichen, die der Release-Upgrade-Prozess nicht authentifizieren konnte, also Galera- und MariaDB-Bibliotheken.
[Distro]
AllowUnauthenticated=yes
Entfernen Sie nach dem Upgrade die Datei unauth.cfg.
In meinem Fall hat das Upgrade (vom 16.04 auf den 18.04) die SSH-Serverkonfiguration geändert und ich konnte keine SSH-Verbindung zum Server mehr herstellen. Ich glaube, ich habe irgendwo „Ja“ gewählt, was ich nicht hätte tun sollen. Glücklicherweise hatte ich Zugriff auf die Konsole und konnte SSH manuell konfigurieren.
Nginx wird während des Betriebssystem-Upgrades aktualisiert. Überprüfen Sie dies, indem Sie den folgenden Befehl ausführen:nginx -v
MariaDB-Server-Upgrade
In unserem Fall hatten wir MariaDB Server 10.1 installiert. Dies waren die Schritte, um es auf die neueste stabile GA-Version von MariaDB Server zu bringen:
- MariaDB Server 10.1 stoppen:sudo service mysql stop
- Deinstallieren Sie 10.1:sudo apt remove mariadb-server
- Fügen Sie ein MariaDB Server 10.2-Repository hinzu. Ich verwende das Repository-Setup-Skript von mariadb.com:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.2
Weitere Informationen zum Repository-Skript finden Sie in der Dokumentation. - Installieren Sie 10.2:sudo apt install mariadb-server
- Stellen Sie sicher, dass MariaDB Server 10.2 ausgeführt wird und funktioniert
- MariaDB stoppen:sudo service mysql stop
- Deinstallieren Sie 10.2:sudo apt remove mariadb-server
- Fügen Sie ein MariaDB Server 10.2-Repository hinzu. Ich werde wieder das Einrichtungsskript des mariadb.com-Repositorys verwenden:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.3 - Installieren Sie 10.3:sudo apt install mariadb-server
- Stellen Sie sicher, dass MariaDB 10.3 ausgeführt wird und funktioniert. Überprüfen Sie das datadir in /etc/mysql/my.cnf zeigt auf das Verzeichnis, in dem Sie Ihre Datenbankdateien haben
JDBC, MariaDB Connector/J-Aktualisierung
Bevor wir zum Upgrade von Jira selbst übergehen, aktualisieren wir zuerst den JDBC-Treiber, um Jira nicht mehrmals neu starten zu müssen. Das Aktualisieren von MariaDB Connector/J ist unkompliziert. Holen Sie sich die neueste Version von Connector/J von downloads.mariadb.com, platzieren Sie sie im lib-Verzeichnis von Jira und entfernen Sie die alte:
$ wget https://downloads.mariadb.com/Connectors/java/connector-java-2.3.0/mariadb-java-client-2.3.0.jar
$ mv /opt/atlassian/jira/lib/mariadb-java-client-2.1.2.jar ~
$ mv mariadb-java-client-2.3.0.jar /opt/atlassian/jira/lib/
Jira-Upgrade
Aktualisieren Sie Jira schließlich mit dem Jira-Installationsprogramm:
- Das Jira-Installationsprogramm ist hier verfügbar:https://www.atlassian.com/software/jira/download
- Jira-Konfiguration sichern:sudo tar -zcvf conf20180909.tar.gz /opt/atlassian/jira/conf
- Jira stoppen:sudo service jira stop
- Upgrade starten:sudo ./atlassian-jira-software-7.12.1-x64.bin
- Folgen Sie den Anweisungen des Installationsprogramms
- Versuchen Sie, Jira zu starten:sudo service jira start (was nicht funktioniert, da server.xml ersetzt wurde)
Wie im letzten Schritt gesagt, startet Jira nicht, weil der Installer die Konfigurationsdatei server.xml ersetzt hat. Jetzt müssen Sie es wieder auf Ihre Konfiguration ändern. Eine einfache Möglichkeit, dies zu tun, besteht darin, einen Unterschied zwischen der server.xml, die Sie zuvor hatten, und dieser neuen Datei zu machen. Sobald die Konfiguration abgeschlossen ist, starten Sie Jira.
Denken Sie auch daran, die von Nginx verwendete Datei maintenance.html zu entfernen (oder umzubenennen), falls Sie Jira auf diese Weise in den Wartungsmodus versetzt haben.
Nachdem ich Jira wieder zum Laufen gebracht hatte, funktionierte alles gut. Ein paar Tage später erfuhren wir, dass es eine Sache gab, die nicht so funktionierte wie zuvor. Wir verwenden Tableau für die Berichterstellung und haben das Add-on „All-in-One Tableau Connector for Jira“ installiert. Es stellte sich heraus, dass dieses Add-On SQL SELECT-Abfragen generierte, die die Spalte ROWS enthielten. ROWS ist ein reserviertes Wort in 10.3, wenn man also nach einer so benannten Spalte fragt, muss man den Namen rückwärts ankreuzen, also ´ROWS´. Glücklicherweise wollte das Unternehmen hinter diesem Add-on auch sicherstellen, dass das Add-on für uns funktioniert, und nachdem wir den Grund gefunden hatten, stellten sie uns ein paar Stunden später eine neue Version des Add-ons zur Verfügung.
Es gibt noch eine Sache, die ich tun musste. Wir haben eine frühere Sicherungsversion verwendet, die nicht mit MariaDB Server 10.3 kompatibel ist. Wir empfehlen Ihnen, MariaDB Backup für Ihre Backups zu verwenden. Das Thema verdient einen eigenen Blogbeitrag, darauf komme ich etwas später.
Seit unserem Upgrade im September läuft die neueste Version von Jira ständig auf der neuesten Version von MariaDB und dient den Benutzern von Jira von MariaDB.