Při vývoji MariaDB Server používáme Atlassian’s Jira jako software pro sledování problémů a projektů, ale také pro plánování. Jiru používáme od roku 2012, kdy jsme migrovali z Launchpadu. V tu chvíli jsme použili Jiru v cloudu Atlassian, ale o pár let později jsme se rozhodli nainstalovat vlastní instanci Jira a spustit ji na MariaDB Server. Již dříve jsem o tom napsal příspěvek na blog.
Jira na serveru MariaDB zatím NENÍ podporovaná kombinace. Jira podporuje MySQL, ale oficiálně ještě ne MariaDB. Samozřejmě chceme, aby co nejvíce kusů softwaru podporovalo server MariaDB, abychom to našim zákazníkům a uživatelům usnadnili. Nejsme sami, kdo takto uvažuje. Požadavek na podporu serveru MariaDB v Jira naleznete zde a širší požadavek na podporu serveru MariaDB v produktech Atlassian obecně naleznete zde. Přidejte svůj hlas a doufejme, že MariaDB Server bude brzy oficiálně podporován. Jde ale o to, že i když to není oficiálně podporováno, kombinace Jira a MariaDB funguje skvěle. Nedávno jsme upgradovali na nejnovější Jiru a nejnovější verzi MariaDB.
Před upgradem | Po upgradu | |
OS pro Jira | Ubuntu 14.04 | Ubuntu 18.04 |
OS pro MariaDB | Ubuntu 14.04 | Ubuntu 18.04 |
Verze Jira | 7.2.1 | 7.12.1 |
Verze serveru MariaDB | 10.1.35 | 10.3.9 |
Ovladač JDBC | Konektor MariaDB/J 2.1.2 | Konektor MariaDB/J 2.3.0 |
Webový server | Nginx 1.10.1 | Nginx 1.14.0 |
Aktualizujte doplňky Jira
Jira má spoustu pluginů a verze pluginů musí být kompatibilní s verzí Jira, která běží. V Jira je obsažen nástroj, Jira Update Check for add-ons, který se nachází na URL /plugins/servlet/upm/check . Pomocí tohoto nástroje aktualizujte všechny doplňky na verze, které budou podporovány ve verzi Jira, na kterou se chystáte upgradovat.
Zastavit přístup k Jirovi
Pojďme ke skutečnému upgradu. Začněte tím, že znepřístupníte Jiru uživatelům tím, že zobrazíte stránku údržby všem, kteří se snaží získat přístup k Jirě. To lze snadno provést pomocí Nginx. V umístění direktivu v konfiguraci Nginx, vyhledejte soubor údržby a pokud jej najdete, zobrazte jej pro všechny adresy URL.
...
location / {
if (-f $document_root/maintenance.html) {
return 503;
}
...
error_page 503 @maintenance;
umístění @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
Zálohování databáze a adresářů
Před zahájením upgradu byste se měli samozřejmě ujistit, že existují zálohy. Pokud jde o Jiru, měli byste mít plnou zálohu databáze a adresářů, které Jira používá pro ukládání příloh a obrázků uživatelských avatarů. Na serveru nám běžel zálohovací nástroj, který denně produkoval plné zálohy. Kromě toho jsem také provedl výpis databáze pomocí nástroje dump.
Zálohování databáze pomocí nástroje pro výpis:
$ mysqldump -u username -p databasename > jiradb20180907.sql
$ tar -zcvf jiradb20180907.tar.gz jiradb20180907.sql
Zálohování příloh a avatarů:
$ tar -zcvf attachments20180908.tar.gz /data/jira/data/attachments/
$ tar -zcvf avatars20180908.tar.gz /data/jira/data/avatars/
Zkopírujte záložní soubory na jiný server pro případ, že by se v procesu upgradu něco vážně pokazilo.
Upgrade operačního systému
Na našem serveru Jira běžel Ubuntu 14.04 a při upgradu softwaru jsme také chtěli upgradovat OS. Nebudu zacházet do podrobností upgradu Ubuntu, ale v podstatě jsem dvakrát spustil do-release-upgrade, abych server dostal na Ubuntu 18.04. Musel jsem udělat pár věcí. Musel jsem vytvořit soubor /etc/update-manager/release-upgrades.d/unauth.cfg a přidat následující. To mělo umožnit knihovnám, které proces upgradu vydání nemohl ověřit, což byly knihovny Galera a MariaDB.
[Distro]
AllowUnauthenticated=yes
Po upgradu odstraňte soubor unauth.cfg.
V mém případě upgrade (z 16.04 na 18.04) změnil konfiguraci serveru SSH a už jsem nemohl SSH na server. Myslím, že jsem zvolil „Ano“ někde, kde jsem neměl. Naštěstí jsem měl přístup ke konzoli a SSH jsem nakonfiguroval ručně.
Nginx se upgraduje během upgradu operačního systému. Ověřte spuštěním příkazu:nginx -v
Upgrade serveru MariaDB
V našem případě jsme měli nainstalovaný MariaDB Server 10.1. Toto byly kroky k získání nejnovější stabilní verze GA serveru MariaDB:
- Zastavit server MariaDB 10.1:zastavení služby sudo mysql
- Odinstalace 10.1:sudo apt remove mariadb-server
- Přidejte úložiště MariaDB Server 10.2. Použiji skript nastavení úložiště mariadb.com:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.2
Další informace o skriptu úložiště najdete v dokumentaci. - Instalace 10.2:sudo apt install mariadb-server
- Ověřte, že MariaDB Server 10.2 běží a funguje
- Zastavit MariaDB:sudo service mysql stop
- Odinstalace 10.2:sudo apt remove mariadb-server
- Přidejte úložiště MariaDB Server 10.2. Znovu použiji skript nastavení úložiště mariadb.com:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.3 - Instalace 10.3:sudo apt install mariadb-server
- Ověřte, že MariaDB 10.3 běží a funguje. Zkontrolujte datadir v /etc/mysql/my.cnf ukazuje na adresář, kde máte soubory databáze
Aktualizace JDBC, MariaDB Connector/J
Než přejdeme k samotné aktualizaci Jiry, aktualizujme nejprve ovladač JDBC, abychom ji nemuseli několikrát restartovat. Aktualizace MariaDB Connector/J je přímočará. Vyzvedněte si nejnovější verzi Connector/J z downloads.mariadb.com, umístěte ji do lib adresáře Jira a odstraňte starou:
$ 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/
Upgrade Jira
Nakonec upgradujte Jiru pomocí instalačního programu Jira:
- Instalační program Jira je k dispozici zde:https://www.atlassian.com/software/jira/download
- Záložní konfigurace jira:sudo tar -zcvf conf20180909.tar.gz /opt/atlassian/jira/conf
- Stop Jira:sudo service jira stop
- Zahájit upgrade:sudo ./atlassian-jira-software-7.12.1-x64.bin
- Postupujte podle pokynů instalačního programu
- Zkuste spustit Jira:sudo service jira start (která nebude fungovat, protože server.xml byl nahrazen)
Jak bylo řečeno v posledním kroku, Jira se nespustí, protože instalační program nahradil konfigurační soubor server.xml. Nyní jej musíte změnit zpět na vaši konfiguraci. Snadný způsob, jak to udělat, je vytvořit rozdíl mezi souborem server.xml, který jste měli dříve, a tímto novým. Jakmile je konfigurace na místě, spusťte Jiru.
Nezapomeňte také odstranit (nebo přejmenovat) soubor maintenance.html používaný Nginxem v případě, že jste použili tento způsob uvedení Jiry do režimu údržby.
Poté, co byl Jira znovu uveden do provozu, vše fungovalo dobře. O pár dní později jsme se dozvěděli, že jedna věc nefunguje jako předtím. Pro hlášení používáme Tableau a nainstalovali jsme doplněk „All-in-One Tableau Connector for Jira“. Ukázalo se, že tento doplněk generoval dotazy SQL SELECT, které obsahovaly sloupec ROWS. ŘÁDKY je vyhrazené slovo v 10.3, takže když žádáte o takto pojmenovaný sloupec, musíte název zaškrtnout, tedy 'ROWS'. Naštěstí se společnost za tímto doplňkem také chtěla ujistit, že doplněk funguje pro nás, a jakmile jsme našli důvod, o několik hodin později nám poskytli novou verzi doplňku.
Je tu ještě jedna věc, kterou jsem musel udělat. Používali jsme předchozí verzi zálohy, která není kompatibilní s MariaDB Server 10.3. Pro zálohování doporučujeme používat MariaDB Backup. Téma si zaslouží samostatný blogový příspěvek a dostanu se k tomu o něco později.
Od našeho upgradu v září je nejnovější verze Jira neustále v provozu vedle nejnovější verze MariaDB, která slouží uživatelům MariaDB's Jira.