#365Posts – Como substituir o MySQL pelo MariaDB nos servidores cPanel

Muitos administradores de servidores gostariam de trocar o MySQL de suas máquinas cPanel pelo novo e mais eficiente MariaDB. Este artigo contém um roteiro detalhado para alcançar este objetivo, o mesmo que eu uso em minhas próprias máquinas.

01 de junho de 2013 • Por Janio Sarmento, em #365Posts, Destaques

E eis que, mais uma vez, abordo um assunto técnico aqui no blog. Peço desculpas a quem gosta dos meus posts mais “humanos”, ou dos posts de gatinhos e outros bichinhos fofinhos. Em breve voltaremos à nossa programação normal.

Por que substituir o MySQL pelo MariaDB

Na verdade, se você não tem sua própria resposta a esta pergunta deveria parar de ler este post agora e fazer algo mais divertido, já que o assunto é bem complexo e exige algum conhecimento técnico específico anterior.

Se ainda assim você quiser saber mais sobre o assunto, posso sugerir o post MariaDB para todos — ou pelo menos para os corajosos, no blog da melhor empresa de hospedagem do mundo.

Caso você decida seguir o tutorial, recomendo que leia-o todo primeiramente, para evitar surpresas, e para você saber o que está fazendo. Será necessário, naturalmente, ter acesso como root do servidor para poder executar o procedimento inteiro.

Visão geral do procedimento

Basicamente o que vamos fazer será:

  • backup dos bancos de dados e do my.cnf atuais (para o caso de algo sair errado);
  • configuração do cPanel para não atualizar o MySQL automaticamente;
  • remoção total do MySQL do cPanel;
  • instalação do MariaDB a partir dos repositórios oficiais;
  • recompilação do Apache (a rigor nem precisaria) e do PHP;
  • comemorar.

Antes de começar

Antes de começar a efetivamente desinstalar e instalar programas, é necessário que o servidor esteja atualizado, e que esteja ao máximo dentro dos padrões definidos pela própria cPanel.

Em outras palavras, será necessário desinstalar (ou pelo menos desativar) quaisquer aceleradores HTTP (Varnish ou Nginx) existentes, bem como desativar o ModPageSpeed para que o processo de compilação não falhe.

Para atualizar o cPanel basta executar o comando /scripts/upcp −−force e aguardar o final do procedimento.

Passo 1: backup do MySQL e do arquivo de configuração

Passo 2: desabilitar atualizações

O cPanel na versão 11.36 ignora solenemente o método documentado de evitar atualizações do MySQL. Porém, a qualquer momento poderá voltar a respeitá-lo, razão pela qual vamos ser redundantes e empregar as duas técnicas.

O método alternativo consiste em editar o arquivo /etc/cpupdate.conf e adicionar a ele:

Passo 3: remover o MySQL instalado

Na teoria, o primeiro comando acima deve ser suficiente para remover totalmente o MySQL do sistema. Em alguns casos, porém, nos testes que efetuei antes de escrever este tutorial, os RPMs do MySQL continuavam no sistema, razão pela qual é necessário forçar sua exclusão pelo Yum.

Passo 4: Instalar o MariaDB

Primeiro, crie um arquivo chamado /etc/yum.repos.d/MariaDB.repo e ponha nele o seguinte conteúdo:

Agora é só instalar:

Passo 5: recompilar Apache e PHP

Neste momento o seu servidor já estará rodando o MariaDB, porém os sites estarão todos com erro 500 devido ao fato de o PHP não estar conseguindo se conectar ao banco de dados. Vamos corrigir isto recompilando o Apache e o PHP, e para nossa alegria (menção não intencional ao meme) vamos fazer tudo “por dentro” do EasyApache.

Se você preferir executar o EasyApache pelo WHM, na interface web, esteja a gosto. Eu prefiro fazer pelo terminal, porque o consumo de memória é menor durante a recompilação.

Agora, o verdadeiro pulo do gato: preste bem atenção nas opções relacionadas aos módulos de MySQL no PHP, e desmarque a opção de usar o MySQL do sistema. Se você não fizer isto os sites permanecerão mostrando erro 500 em vez de funcionar.

Ao final da compilação tudo estará lindo e cheiroso novamente, só que agora ainda mais lindo e mais cheiroso, porque em vez do MySQL o servidor estará com o MariaDB em funcionamento!

Passo 6: aparar arestas

A partir de agora você já pode sair comemorando, seu objetivo de substituir o MySQL pelo MariaDB foi alcançado.

Entretanto, para obter um desempenho ótimo do servidor alguns passos adicionais devem ser feitos.

Passo 6.1: evitar que o arquivo de log de erros do Apache inche rápido demais

Verifique se o arquivo /usr/local/apache/logs/error_log não está registrando um aviso, a cada visitante, de que o módulo mysql.so não foi carregado.

Você deve remover a referência a este módulo no php.ini (pelo terminal ou pelo editor de configurações do PHP em modo avançado via WHM) para parar este aviso.

Isto só vai acontecer caso você originalmente tivesse a opção para usar o MySQL do sistema marcada no EasyApache.

Passo 6.2: converter as tabelas dos bancos de dados para XtraDB

Ao simplesmente substituir o MySQL pelo MariaDB o servidor já deverá estar mais rápido para realizar consultas aos bancos de dados, porém o verdadeiro ganho, aquele que fará suas pernas tremerem, sua boca ficar seca e borboletas baterem asas no seu estômago virá mesmo é da troca do mecanismo de banco de dados padrão das tabelas (MyISAM) para o XtraDB (equivalente com melhorias ao InnoDB do MySQL — inclusive o nome se mantém InnoDB para máxima compatibilidade com os programas atualmente existentes).

Note que o processo de conversão tem que ser feito tabela por tabela, banco por banco, e consiste em duas etapas: remover todos os índices do tipo fulltext e efetivamente alterar o mecanismo da tabela.

Caso precise de mais informações a respeito da necessidade de remover os índices fulltext por favor consulte o Google, há uma imensidão de páginas falando sobre o assunto.

Para descobrir quais tabelas têm índices que precisem ser removidos utilize o código abaixo, tomando o cuidado de alterar db_wordpress pelo nome do banco de dados que deseja analisar.

Ao final você terá um arquivo chamado drop.sql que poderá ser usado para apagar os índices necessários à conversão das tabelas. Eu, particularmente, prefiro copiar o conteúdo deste arquivo e executar a sequência de comandos no phpMyAdmin, mas é mera questão de gosto — eu não teria um motivo lógico para justificar esta preferência.

Ao terminar de excluir os índices, será possível então converter as tabelas MyISAM para InnoDB (na verdade XtraDB, mas lembre-se que a nomenclatura foi mantida por razões de retrocompatibilidade).

Utilize o código abaixo, muito semelhante ao anterior, para gerar a lista de comandos ALTER TABLE necessários para converter todas as tabelas para o novo formato.

Da mesma forma, o código acima vai gerar um arquivo chamado alter.sql contendo a lista de comandos para modificar todas as tabelas do banco de dados db_wordpress (no exemplo, é claro que você vai mudar a cada vez para cada banco de dados do seu servidor).

Responsabilidades, garantias e suporte

Creio que nem seria necessário dizer, mas vamos lá…

  • A responsabilidade sobre o que você vier a fazer no seu servidor é sua.
  • Eu não tenho como ajudar você com o seu servidor além do que já fiz escrevendo este post.
  • Tenha backups de tudo antes de começar a mexer com o MySQL.
  • Caso algo dê errado você terá de se virar para consertar; eu não posso ajudar.
  • Esta não é a única maneira de fazer a conversão do MySQL para MariaDB, e provavelmente não é a melhor. É apenas a maneira que eu uso, e sobre a qual tenho total controle.
  • Não sei se já disse, e se sim repito: a responsabilidade sobre o que você vier a fazer no seu servidor é sua.

Compartilhe

Deixe seu comentário!