O MariaDB 10.5 foi lançado como GA em junho de 2020. Na versão, foi adicionado suporte para Amazon S3 ou qualquer nuvem pública ou privada de terceiros que ofereça suporte à API do S3. Ele também apresenta um tratamento sofisticado para privilégios, estendendo sua granularidade, o que permite que um DBA, por exemplo, forneça privilégios limitados a um usuário de banco de dados específico para maior segurança de seu banco de dados.
O MariaDB 10.5 também apresentou suas melhorias com o mecanismo de armazenamento InnoDB por seu desempenho e algumas novas variáveis também são apresentadas, mas as principais variáveis obsoletas foram marcadas como obsoletas ou totalmente removidas. Por exemplo, observe que no MariaDB 10.5, innodb_buffer_pool_instances já foi marcado como obsoleto enquanto está definido para ser removido na versão 10.6. Se você estiver curioso sobre qualquer motivo que eles digam, confira o MDEV-15058.
Com todas essas mudanças, é melhor entregar este blog para fornecer um guia sobre como atualizar o MariaDB 10.4 para o MariaDB 10.5. Vamos explicar passo a passo quais são as coisas que você precisa considerar para a atualização.
O que você precisa antes de atualizar
Nem sempre é o melhor método para atualizar seu banco de dados ao vivo em produção sem fazer um teste. Este jargão simples define o termo que chamamos de SNAFU. Você pode acessar o Google para encontrar o termo, mas, basicamente, é sempre melhor não tocar na saúde normal, especialmente nos sistemas que funcionam normalmente. No entanto, nem sempre seu sistema precisa permanecer constante, ele precisa ser atualizado para aproveitar os patches de segurança, correções de bugs e recursos avançados que estão presentes nas versões mais recentes. Portanto, neste caso, você sempre tem um mecanismo de failback planejado e configurado antes da atualização. Caso a atualização do sistema apresente problemas que não foram observados, isso pode trazer impacto ao seu negócio.
Sempre crie um backup do seu banco de dados
Nesse caso, sempre forneça backup de seus dados. Você pode usar ferramentas como mariabackup ou mydumper ou, se for um usuário do ClusterControl, usar a ferramenta Database Backup Management. Se você ainda não estiver preparado para o tipo de backup necessário, talvez seja necessário verificar as práticas recomendadas ao fazer um backup.
Teste...Teste… e teste novamente
Enquanto o backup fornece dados para alimentar no caso de você precisar restaurar para seu estado primário se ocorrerem problemas imprevistos, a atualização para uma versão principal deve ser testada primeiro em uma máquina de desenvolvimento ou teste. Para grandes empresas, é uma prática comum sempre fazer um teste de regressão em um ambiente de controle de qualidade ou ambiente de teste em que a atualização dos servidores de banco de dados para sua versão principal deve ser aplicada primeiro. Todos os sistemas do aplicativo e do banco de dados precisam passar por um teste de regressão ou uma série de testes de controle de qualidade até que tudo seja aprovado. Não é uma boa idéia simplificar um caso de teste de seu aplicativo indo para os sistemas de banco de dados e apenas descartar que tudo está bem desde que o banco de dados não falhe ou apenas tenha sido comprovado por um curto período de tempo em que o teste é resumindo, um teste muito simples que cobre apenas uma pequena porcentagem do seu sistema geral. Testar sua atualização primeiro em um ambiente de teste ou controle de qualidade deve ser priorizado de forma que ele atinja a forma perfeita de seu aplicativo sem afetar o lado comercial e também os usuários que utilizarão seu aplicativo, do que perceber tarde que a atualização do banco de dados faz com que seu sistema se comporte de forma anormal devido a alterações que você ainda não descobriu.
Prepare um procedimento de restauração
Tudo deve ser planejado durante a atualização do seu banco de dados. Sempre que o backup está disponível e o teste revela resultados fortes e promissores, ele sempre parece seguro e previsível caso ocorram desafios inesperados ao atualizar seus servidores de banco de dados MariaDB de produção. Nesse caso, sempre escreva e prepare um procedimento que faça as coisas voltarem ao normal sem problemas.
Se a janela de manutenção não for muito longa, preparar um procedimento de restauração usando ferramentas automatizadas como Ansible, Chef, Puppet, SaltStack ou Terraform pode ser uma boa opção para o procedimento de restauração. Minimiza erros humanos e proporciona velocidade e agilidade para realizar tarefas vitais. Embora possa causar danos caso um único erro possa ser encontrado se o script de automação falhar, isso também significa que você não pode ignorar a possibilidade de que isso possa acontecer. Portanto, isso também indica que a restauração deve ser perfeita e foi testada adequadamente para poder restaurar em um procedimento válido.
Procedimentos de atualização do MariaDB
Atualizar seu MariaDB versão 10.4 para 10.5 não é um problema, mas simples. Abaixo estão as etapas que você pode seguir para atualizar para a versão mais recente do MariaDB 10.5.
Prepare seu repositório
É compreensível que você tenha o MariaDB 10.4, então supõe-se que haja um repositório presente em seus nós de servidor MariaDB atuais. Caso contrário, você pode adicionar um repositório de qualquer maneira e isso é simples.
Ubuntu/Debian
Para sistemas baseados em Ubuntu/Debian, para um repositório mariadb existente, você pode editar o repositório. Você pode verificar se os repositórios existentes estão em seu host ou descobrir se há um repositório MariaDB existente em algum lugar. Para isso, basta,
$ grep ^[^#] /etc/apt/sources.list /etc/apt/sources.list.d/*
Normalmente, você tem um repositório mariadb.list. Na minha configuração no Ubuntu 18.0 (Bionic), isso mostra o seguinte:
[email protected]:/vagrant# cat /etc/apt/sources.list.d/mariadb.list
deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.4/ubuntu bionic main
Basta executar a seguinte linha de comando para adicionar o repositório MariaDB 10.5,
. /etc/os-release
sudo echo "deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.5/${ID} ${VERSION_CODENAME} main" >> /etc/apt/sources.list.d/mariadb.list
Antes que os pacotes MariaDB possam ser instalados, é necessário que os pacotes a serem instalados sejam importados com a chave pública GPG que é usada para verificar as assinaturas digitais dos pacotes em seu repositório. Você pode verificar suas chaves apt com o seguinte,
$ apt-key list |grep -C2 -i 'mariadb'
Se as chaves não forem importadas,
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
ou para versões mais recentes baseadas em Ubuntu/Debian, ou seja, começando com Debian 9 (Stretch) e Debian Unstable (Sid) e Ubuntu 16.04 LTS (Xenial),
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Uma vez feito, basta executar
$ sudo apt update
CentOS/RHEL
Para CentOS/RHEL, se você tiver um repositório existente, basta adicionar ou editar o arquivo. Caso contrário, adicionar as linhas abaixo para o repositório MariaDB 10.5 será suficiente para os requisitos do repositório (consulte mariadb.repo). Por exemplo, eu tenho o seguinte mariadb.repo no meu host CentOS 8.0.
[[email protected] ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB Repository
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
[mariadb_10.5]
name = MariaDB Repository For 10.5
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
Você pode verificar se o repositório MariaDB está habilitado e funciona bem:
[[email protected] ~]# dnf --disablerepo=* --enablerepo=mariadb_10.5 repolist
repo id repo name status
mariadb_10.5 MariaDB Repository For 10.5 83
Atualize seus pacotes MariaDB
A atualização com o MariaDB é muito simples. Certifique-se de ter desligado o servidor MariaDB corretamente primeiro.
Para um servidor de produção ocupado e ativo, certifique-se de que não haja conexões de entrada e que as páginas sujas sejam liberadas adequadamente para o disco. Antes de desligar o servidor, você pode definir a liberação de páginas sujas com seu mecanismo de armazenamento Innodb de forma agressiva para que todas as páginas sujas sejam liberadas e tornem o processo de desligamento mais rápido,
set global innodb_max_dirty_pages_pct = 0;
Em seguida, monitore as páginas sujas com o seguinte,
$ mysqladmin ext -i10 | grep dirty
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
Depois de bom, desligue a instância do MariaDB,
systemctl stop mariadb
Para um cluster de banco de dados mestre/réplica, é uma boa prática sempre iniciar a atualização na(s) réplica(s). Portanto, antes da atualização e após o desligamento, certifique-se de ter adicionado o seguinte em seu arquivo de configuração my.cnf,
[mysqld]
….
skip-slave-start
Isso permite que você evite iniciar automaticamente os threads de replicação quando o servidor MariaDB for iniciado. Isso lhe dá mais segurança e evita mais erros na replicação. Apenas inicie os threads de replicação manualmente quando estiver pronto com a seguinte instrução,
START SLAVE;
Ubuntu/Debian
Atualizar com sistemas baseados em Ubuntu/Debian é bastante simples,
sudo apt install --only-upgrade mariadb-server mariadb-client mariadb-backup mariadb-common
Claro, não forneça a opção -y para que você possa revisar os seguintes pacotes a serem atualizados.
Centos/RHEL
Igual aos sistemas baseados em Ubuntu/Debian, o CentOS/RHEL também não apresenta problemas para atualizar sua versão atual do MariaDB 10.4. Você pode executar o seguinte comando abaixo para bastar o processo,
$ dnf --disablerepo=* --enablerepo=mariadb_10.5 upgrade Mariadb-server MariaDB-client MariaDB-backup MariaDB-common Mariadb-shared
Pós-instalação/atualização de pacote
Uma vez que os pacotes tenham sido atualizados. Como esta é uma atualização importante, não se esqueça de recarregar o daemon para o systemd. Apenas corra,
$ systemctl daemon-reload
Agora que você está pronto, inicie o serviço mariadb
$ systemctl start mariadb
e execute mysqld_upgrade,
$ mysql_upgrade
Ao executar o mysql_upgrade, sempre monitore o log de erros para que você possa detectar quaisquer erros antes de executar e iniciar tudo para suas operações normais:
tail -5f /var/log/mariadb/mariadb.log
Dicas de atualização para usuários do ClusterControl
Como o ClusterControl não fornece atualização de versões principais, ao realizar uma atualização de pacote, sempre não se esqueça de desativar os modos de recuperação automática para seu cluster MariaDB. Configure os nós para o modo de manutenção para que os alertas sejam silenciosos e nenhum alerta falso seja notificado.