No desenvolvimento do MariaDB Server usamos o Jira da Atlassian como software de acompanhamento de problemas e projetos, mas também para planejamento. Usamos o Jira desde 2012, quando migramos do Launchpad. Nesse ponto, usamos o Jira na nuvem da Atlassian, mas alguns anos depois decidimos instalar nossa própria instância do Jira e executá-la no MariaDB Server. Já escrevi um post no blog sobre isso.
Jira em cima do MariaDB Server ainda NÃO é uma combinação suportada. Jira suporta MySQL, mas oficialmente ainda não MariaDB. É claro que queremos o maior número possível de softwares para dar suporte ao MariaDB Server para facilitar a vida de nossos clientes e usuários. Não estamos sozinhos em pensar assim. A solicitação de suporte ao MariaDB Server no Jira pode ser encontrada aqui e a solicitação mais ampla de suporte ao MariaDB Server em produtos Atlassian em geral pode ser encontrada aqui. Adicione seu voto para ter o MariaDB Server oficialmente suportado em breve. Mas o problema é que, embora não seja oficialmente suportado, a combinação de Jira e MariaDB funciona muito bem. Atualizamos para o Jira mais recente e para a versão mais recente do MariaDB recentemente.
Antes da atualização | Após a atualização | |
SO para Jira | Ubuntu 14.04 | Ubuntu 18.04 |
SO para MariaDB | Ubuntu 14.04 | Ubuntu 18.04 |
versão do Jira | 7.2.1 | 7.12.1 |
Versão do servidor MariaDB | 10.1.35 | 10.3.9 |
Driver JDBC | Conector MariaDB/J 2.1.2 | Conector MariaDB/J 2.3.0 |
Servidor da Web | Nginx 1.10.1 | Nginx 1.14.0 |
Atualizar complementos do Jira
O Jira tem muitos plugins e as versões dos plugins precisam ser compatíveis com a versão do Jira que está sendo executada. Há uma ferramenta incluída no Jira, o Jira Update Check para complementos, que pode ser encontrado na URL /plugins/servlet/upm/check . Use essa ferramenta para atualizar todos os complementos para as versões que serão compatíveis com a versão do Jira para a qual você fará o upgrade.
Parar o acesso ao Jira
Vamos continuar com a atualização real. Comece tornando o Jira indisponível para os usuários, fornecendo uma página de manutenção para todos que tentarem acessar o Jira. Isso é feito facilmente com o Nginx. No local diretiva na configuração do Nginx, verifique se há um arquivo de manutenção e, se encontrado, mostre-o para todas as URLs.
...
location / {
if (-f $document_root/maintenance.html) {
return 503;
}
...
error_page 503 @maintenance;
location @maintenance {
reescrever ^(.*)$ /maintenance.html break;
}
Banco de dados e diretórios de backup
Antes de iniciar uma atualização, é claro que se deve certificar-se de que existem backups. Quando se trata do Jira, deve-se ter um backup completo do banco de dados e dos diretórios que o Jira usa para armazenar anexos e imagens de avatar do usuário. Tínhamos uma ferramenta de backup rodando no servidor produzindo backups completos diariamente. Além disso, fiz um dump de banco de dados usando o utilitário dump.
Backup de banco de dados com o utilitário de despejo:
$ mysqldump -u username -p databasename > jiradb20180907.sql
$ tar -zcvf jiradb20180907.tar.gz jiradb20180907.sql
Backup de anexos e avatares:
$ tar -zcvf attachments20180908.tar.gz /data/jira/data/attachments/
$ tar -zcvf avatars20180908.tar.gz /data/jira/data/avatars/
Copie os arquivos de backup para outro servidor caso algo dê muito errado no processo de atualização.
Atualização do SO
Nosso servidor Jira estava executando o Ubuntu 14.04 e, ao atualizar o software, também queríamos atualizar o sistema operacional. Não entrarei em detalhes da atualização do Ubuntu, mas basicamente executei do-release-upgrade duas vezes para levar o servidor para o Ubuntu 18.04. Havia algumas coisas que eu tinha que fazer. Eu tive que criar o arquivo /etc/update-manager/release-upgrades.d/unauth.cfg e adicionar o seguinte. Isso foi para permitir bibliotecas que o processo de atualização de lançamento não conseguiu autenticar, que eram bibliotecas Galera e MariaDB.
[Distro]
AllowUnauthenticated=yes
Após a atualização, remova o arquivo unauth.cfg.
No meu caso, a atualização (de 16.04 para 18.04) alterou a configuração do servidor SSH e não consegui mais SSH para o servidor. Acho que escolhi “Sim” em algum lugar que não deveria. Felizmente eu tinha acesso ao console e configurei o SSH manualmente.
O Nginx é atualizado durante a atualização do SO. Verifique executando o comando:nginx -v
Atualização do servidor MariaDB
No nosso caso tínhamos o MariaDB Server 10.1 instalado. Estas foram as etapas para obter a versão GA estável mais recente do MariaDB Server:
- Parar MariaDB Server 10.1:sudo service mysql stop
- Desinstalar 10.1:sudo apt remove mariadb-server
- Adicione um repositório MariaDB Server 10.2. Usarei o script de configuração do repositório mariadb.com:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.2
Para mais informações sobre o script do repositório, consulte a documentação. - Instalar 10.2:sudo apt install mariadb-server
- Verifique se o MariaDB Server 10.2 está em execução e funciona
- Parar MariaDB:sudo service mysql stop
- Desinstalar 10.2:sudo apt remove mariadb-server
- Adicione um repositório MariaDB Server 10.2. Vou usar novamente o script de configuração do repositório mariadb.com:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s — –mariadb-server-version=mariadb-10.3 - Instalar 10.3:sudo apt install mariadb-server
- Verifique se o MariaDB 10.3 está em execução e funciona. Verifique se datadir em /etc/mysql/my.cnf está apontando para o diretório onde você tem seus arquivos de banco de dados
JDBC, MariaDB Connector/atualização J
Antes de passar para a atualização do Jira, vamos atualizar o driver JDBC primeiro para não precisar reiniciar o Jira várias vezes. A atualização do MariaDB Connector/J é simples. Pegue a versão mais recente do Connector/J em downloads.mariadb.com, coloque-a no diretório lib do Jira e remova a antiga:
$ 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/
Atualização do Jira
Por fim, atualize o Jira com o instalador do Jira:
- O instalador do Jira está disponível aqui:https://www.atlassian.com/software/jira/download
- Backup da configuração do jira:sudo tar -zcvf conf20180909.tar.gz /opt/atlassian/jira/conf
- Parar Jira:sudo service jira stop
- Iniciar atualização:sudo ./atlassian-jira-software-7.12.1-x64.bin
- Siga as instruções do instalador
- Tente iniciar o Jira:sudo service jira start (que não funcionará desde que o server.xml foi substituído)
Como dito na última etapa, o Jira não inicia porque o instalador substituiu o arquivo de configuração server.xml. Agora você precisa alterá-lo de volta para sua configuração. Uma maneira fácil de fazer isso é fazer uma diferença entre o server.xml que você tinha antes e este novo. Quando a configuração estiver definida, inicie o Jira.
Lembre-se também de remover (ou renomear) o arquivo maintenance.html usado pelo Nginx, caso você tenha usado essa forma de colocar o Jira em modo de manutenção.
Depois de ter o Jira funcionando novamente, tudo funcionou bem. Descobrimos alguns dias depois que havia uma coisa que não funcionava como antes. Usamos o Tableau para geração de relatórios e instalamos o complemento “All-in-One Tableau Connector for Jira”. Acontece que esse complemento gerou consultas SQL SELECT que tinham a coluna ROWS nelas. ROWS é uma palavra reservada em 10.3, portanto, ao solicitar uma coluna com esse nome, deve-se dar um backtick no nome, ou seja, ´ROWS´. Felizmente, a empresa por trás desse complemento também queria garantir que o complemento funcionasse para nós e, assim que descobrimos o motivo, eles nos forneceram uma nova versão do complemento algumas horas depois.
Há mais uma coisa que eu tinha que fazer. Estávamos usando uma versão de backup anterior que não é compatível com o MariaDB Server 10.3. Recomendamos que você use o MariaDB Backup para seus backups. O tópico merece um post separado no blog e falarei sobre isso um pouco mais tarde.
Desde nossa atualização em setembro, a versão mais recente do Jira está funcionando o tempo todo em cima da versão mais recente do MariaDB atendendo aos usuários do Jira do MariaDB.