15 Dicas Úteis de Ajuste e Otimização de Desempenho do MySQL/MariaDB

O MySQL é um poderoso sistema de gerenciamento de banco de dados relacional de código aberto, ou, em resumo, RDBMS. Foi lançado em 1995 (com 20 anos de idade). Utiliza a Linguagem de Consulta Estruturada, que é provavelmente a escolha mais popular para gerenciar conteúdo em um banco de dados. A versão mais recente do MySQL é a 5.6.25 e foi lançada em 29 de maio de 2015.

Um fato interessante sobre o MySQL é que o nome vem da filha de Michael Widenius (criador do MySQL), My. Embora haja muitos fatos interessantes sobre o MySQL, este artigo tem como objetivo mostrar algumas práticas úteis para ajudar a gerenciar o servidor MySQL.

MySQL Performance Tuning

Em abril de 2009, o projeto MySQL foi adquirido pela Oracle. Como resultado, foi criado um fork da comunidade MySQL chamado MariaDB. O principal motivo para a criação do fork foi manter o projeto livre sob a Licença Pública Geral.

Hoje, o MySQL e o MariaDB estão entre os RDBMS mais frequentemente usados, se não os mais usados, para aplicativos da web, como WordPress, Joomla, Magento e outros.

Este artigo mostrará algumas dicas básicas, mas úteis, sobre como otimizar e ajustar o desempenho do MySQL/MariaDB. Por favor, tenha em mente que este artigo pressupõe que você já tenha o MySQL ou o MariaDB instalados. Se você ainda estiver se perguntando como instalá-los em seu sistema, pode seguir nossos guias extensivos aqui:

  1. Instalando LAMP no RHEL/CentOS 7
  2. Instalando LAMP no Fedora 22
  3. Configurando LAMP no Ubuntu 15.04
  4. Instalando MariaDB no Debian 8
  5. Instalar MariaDB no Gentoo Linux
  6. Instalar MariaDB no Arch Linux

Importante: Antes de começarmos – não aceite estas sugestões cegamente. Cada configuração do MySQL é única e requer reflexão adicional antes de qualquer mudança.

Coisas que precisa saber:

  1. O arquivo de configuração do MySQL/MariaDB está localizado em /etc/my.cnf. Cada vez que você modifica este arquivo, você precisará reiniciar o serviço do MySQL para as novas mudanças serem aplicadas.
  2. Para escrever este artigo, a versão do MySQL 5.6 foi usada como modelo.

1. Ativar o InnoDB arquivo-por-tabela

A primeira coisa que é importante explicar é que InnoDB é um motor de armazenamento. MySQL e MariaDB usam o InnoDB como motor de armazenamento padrão. No passado, o MySQL costumava manter as tabelas e índices do banco de dados em um sistema de espaço de tabela. Esta abordagem era destinada a servidores que tinham o único propósito de processamento de banco de dados e o disco de armazenamento não era usado para outros fins.

O InnoDB oferece uma abordagem mais flexível, e cada informação do banco de dados é mantida em um arquivo de dados .ibd. Cada arquivo .ibd representa seu próprio espaço de tabela. Desta forma, as operações de banco de dados, como “TRUNCATE”, podem ser concluídas mais rápido e você também pode reclamar espaço não usado quando eliminando ou truncando uma tabela do banco de dados.

Outro benefício desta configuração é o fato de que você pode manter algumas das tabelas do banco de dados em um dispositivo de armazenamento separado. Isso pode melhorar consideravelmente a carga de I/O em seus discos.

O innodb_file_per_table está habilitado por padrão no MySQL 5.6 e acima. Você pode ver isso no arquivo /etc/my.cnf. A diretiva parece assim:

innodb_file_per_table=1

2. Armazene os Dados do Banco de Dados do MySQL em Partições Separadas

Nota: Este setup funciona somente com MySQL, não funcionando com MariaDB.

Às vezes, as leituras/gravações do SO podem atrasar a performance do seu servidor MySQL, especialmente se estiver no mesmo disco rígido. Em vez disso, eu recomendaria usar um disco rígido separado (preferencialmente SSD) para o serviço do MySQL.

Para concluir, você precisará anexar o novo disco à sua máquina/servidor. Para fins deste artigo, assumerei que o disco estará sob /dev/sdb.

O próximo passo é preparar o novo disco:

# fdisk /dev/sdb

Agora pressione “n” para criar uma nova partição. Em seguida, pressione “p” para tornar a nova partição primária. Depois disso, defina o número da partição de 1 a 4. Em seguida, você selecionará o tamanho da partição. Pressione enter aqui. No próximo passo, você precisará configurar o tamanho da partição.

Se deseja usar o disco inteiro, pressione enter mais uma vez. Caso contrário, você pode definir manualmente o tamanho da nova partição. Quando estiver pronto, pressione “w” para escrever as alterações. Agora precisaremos criar um sistema de arquivos para a nossa nova partição. Isso pode ser facilmente feito com:

# mkfs.ext4 /dev/sdb1

Agora vamos montar nossa nova partição em uma pasta. Eu nomeei minha pasta de “ssd” e a criei no diretório raiz:

# mkdir /ssd/

Estamos prontos para montar a nova partição que acabamos de criar na nova pasta:

# mount /dev/sdb1  /ssd/

Você pode realizar a montagem na inicialização adicionando a seguinte linha no arquivo /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Agora você está pronto para mover o MySQL para o novo disco. Primeiro, pare o serviço do MySQL com:

# service mysqld stop

I would recommend you stopping Apache/nginx as well to prevent any attempts to write in the databases:

# service httpd stop
# service nginx stop

Agora copie todo o diretório do MySQL para o novo disco:

# cp /var/lib/mysql /ssd/ -Rp

Isso pode levar um tempo, dependendo do tamanho dos seus bancos de dados do MySQL. Uma vez que este processo estiver completo, renomeie o diretório do MySQL:

# mv /var/lib/mysql /var/lib/mysql-backup

Em seguida, criaremos um link simbólico.

# ln -s /ssd/mysql /var/lib/mysql

Agora você está pronto para iniciar o MySQL e o serviço web:

# service mysqld start
# service httpd start
# service nginx start

Neste ponto, seus bancos de dados do MySQL serão acessados a partir do novo disco.

Source:
https://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/