I utvecklingen av MariaDB Server använder vi Atlassians Jira som problem- och projektspårningsprogram, men också för planering. Vi har använt Jira sedan 2012, då vi migrerade från Launchpad. Vid den tidpunkten använde vi Jira i Atlassians moln, men ett par år senare bestämde vi oss för att installera vår egen instans av Jira och köra den ovanpå MariaDB Server. Jag har tidigare skrivit ett blogginlägg om det.
Jira ovanpå MariaDB Server är INTE en kombination som stöds ännu. Jira stöder MySQL, men officiellt ännu inte MariaDB. Vi vill givetvis ha så många programvaror som möjligt för att stödja MariaDB Server för att underlätta för våra kunder och användare. Vi är inte ensamma om att tänka så här. Begäran om att stödja MariaDB Server i Jira finns här och den bredare begäran om att stödja MariaDB Server i Atlassian-produkter i allmänhet finns här. Lägg till din röst för att förhoppningsvis få MariaDB Server officiellt stöd snart. Men grejen är att även om det inte stöds officiellt fungerar kombinationen av Jira och MariaDB utmärkt. Vi har nyligen uppgraderat till den senaste Jira och den senaste versionen av MariaDB.
Innan uppgraderingen | Efter uppgraderingen | |
OS för Jira | Ubuntu 14.04 | Ubuntu 18.04 |
OS 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-drivrutin | MariaDB-kontakt/J 2.1.2 | MariaDB-kontakt/J 2.3.0 |
Webbserver | Nginx 1.10.1 | Nginx 1.14.0 |
Uppdatera Jira-tillägg
Jira har många plugins och plugin-versionerna måste vara kompatibla med versionen av Jira som körs. Det finns ett verktyg i Jira, Jira Update Check for add-ons, som finns i URL:en /plugins/servlet/upm/check . Använd det verktyget för att uppdatera alla tillägg till versioner som kommer att stödjas i Jira-versionen du ska uppgradera till.
Stoppa åtkomsten till Jira
Låt oss gå igång med själva uppgraderingen. Börja med att göra Jira otillgänglig för användare genom att tillhandahålla en underhållssida för alla som försöker komma åt Jira. Detta görs enkelt med Nginx. På platsen direktiv i Nginx-konfiguration, leta efter en underhållsfil och om den hittas visa den för alla webbadresser.
...
location / {
if (-f $document_root/maintenance.html) {
return 503;
}
...
error_page 503 @maintenance;
plats @underhåll {
skriv om ^(.*)$ /maintenance.html break;
}
Säkerhetskopiera databas och kataloger
Innan man startar en uppgradering bör man givetvis se till att säkerhetskopior finns. När det kommer till Jira bör man ha en fullständig säkerhetskopia av databasen och av de kataloger Jira använder för att lagra bilagor och användaravatarbilder. Vi hade ett säkerhetskopieringsverktyg igång på servern som producerade fullständiga säkerhetskopior på daglig basis. Dessutom gjorde jag en databasdumpning med hjälp av dumpverktyget.
Databassäkerhetskopiering med dumpverktyget:
$ mysqldump -u username -p databasename > jiradb20180907.sql
$ tar -zcvf jiradb20180907.tar.gz jiradb20180907.sql
Säkerhetskopiera bilagor och avatarer:
$ tar -zcvf attachments20180908.tar.gz /data/jira/data/attachments/
$ tar -zcvf avatars20180908.tar.gz /data/jira/data/avatars/
Kopiera säkerhetskopieringsfilerna till en annan server ifall något går hemskt fel i uppgraderingsprocessen.
OS-uppgradering
Vår Jira-server körde Ubuntu 14.04 och när vi uppgraderade programvaran ville vi också uppgradera operativsystemet. Jag kommer inte att gå in på detaljerna för uppgraderingen av Ubuntu, men i princip körde jag do-release-upgrade två gånger för att få servern till Ubuntu 18.04. Det var ett par saker jag var tvungen att göra. Jag var tvungen att skapa filen /etc/update-manager/release-upgrades.d/unauth.cfg och lägga till följande. Detta var för att tillåta bibliotek som versionsuppgraderingsprocessen inte kunde autentisera, vilket var Galera- och MariaDB-bibliotek.
[Distro]
AllowUnauthenticated=yes
Efter uppgraderingen tar du bort filen unauth.cfg.
I mitt fall ändrade uppgraderingen (från 16.04 till 18.04) SSH-serverns konfiguration och jag kunde inte SSH till servern längre. Jag antar att jag valde "Ja" någonstans jag inte borde ha gjort. Som tur var hade jag konsolåtkomst och fick SSH konfigurerad manuellt.
Nginx uppgraderas under OS-uppgraderingen. Verifiera genom att köra kommandot:nginx -v
MariaDB-serveruppgradering
I vårt fall hade vi MariaDB Server 10.1 installerad. Det här var stegen för att få den till den senaste stabila GA-versionen av MariaDB Server:
- Stoppa MariaDB Server 10.1:sudo service mysql stop
- Avinstallera 10.1:sudo apt remove mariadb-server
- Lägg till ett MariaDB Server 10.2-förråd. Jag kommer att använda mariadb.com repository setup script:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.2
För mer information om förvarsskriptet, se dokumentationen. - Installera 10.2:sudo apt installera mariadb-server
- Verifiera att MariaDB Server 10.2 körs och fungerar
- Stoppa MariaDB:sudo service mysql stop
- Avinstallera 10.2:sudo apt remove mariadb-server
- Lägg till ett MariaDB Server 10.2-förråd. Jag kommer återigen att använda mariadb.com repository setup script:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.3 - Installera 10.3:sudo apt installera mariadb-server
- Verifiera att MariaDB 10.3 körs och fungerar. Kontrollera den datadir in i /etc/mysql/my.cnf pekar på katalogen där du har dina databasfiler
JDBC, MariaDB Connector/J-uppdatering
Innan vi går vidare till att uppgradera själva Jira, låt oss uppdatera JDBC-drivrutinen först för att inte behöva starta om Jira flera gånger. Att uppdatera MariaDB Connector/J är enkelt. Hämta den senaste versionen av Connector/J från downloads.mariadb.com, placera den i lib-katalogen i Jira och ta bort den gamla:
$ 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-uppgradering
Uppgradera äntligen Jira med Jira-installationsprogrammet:
- Jira-installationsprogrammet är tillgängligt här:https://www.atlassian.com/software/jira/download
- Backup jira-konfiguration:sudo tar -zcvf conf20180909.tar.gz /opt/atlassian/jira/conf
- Stopp Jira:sudo service jira stop
- Starta uppgradering:sudo ./atlassian-jira-software-7.12.1-x64.bin
- Följ installationsanvisningarna
- Försök att starta Jira:sudo-tjänsten jira start (vilket inte kommer att fungera eftersom server.xml har ersatts)
Som sagt i det sista steget kommer Jira inte att starta eftersom installationsprogrammet har ersatt server.xml-konfigurationsfilen. Nu måste du ändra tillbaka till din konfiguration. Ett enkelt sätt att göra det är att göra en skillnad mellan server.xml som du hade tidigare och den här nya. När konfigurationen är på plats starta Jira.
Kom också ihåg att ta bort (eller byta namn på) filen maintenance.html som används av Nginx, om du använde det sättet att sätta Jira i underhållsläge.
Efter att ha haft Jira igång igen fungerade allt bra. Vi fick reda på ett par dagar senare att det var en sak som inte fungerade som tidigare. Vi använder Tableau för rapportering och vi har installerat tillägget "All-in-One Tableau Connector for Jira". Det visade sig att detta tillägg genererade SQL SELECT-frågor som hade kolumnen ROWS i sig. ROWS är ett reserverat ord i 10.3, så när man frågar efter en kolumn som heter på det sättet måste man backa för namnet, d.v.s. 'RADER'. Lyckligtvis ville företaget bakom det här tillägget också se till att tillägget fungerar för oss och när vi hittade anledningen försåg de oss med en ny version av tillägget ett par timmar senare.
Det finns en sak till som jag var tvungen att göra. Vi använde en tidigare backupversion som inte är kompatibel med MariaDB Server 10.3. Vi rekommenderar att du använder MariaDB Backup för dina säkerhetskopior. Ämnet förtjänar ett separat blogginlägg och jag kommer till det lite senare.
Sedan vår uppgradering i september har den senaste versionen av Jira varit igång hela tiden utöver den senaste versionen av MariaDB som betjänar användare av MariaDB:s Jira.