Ao instalar ou reinstalar o template CentOS 7 + LAMP em seu cloud server, são disponibilizados arquivos my.cnf personalizados de configuração do MySQL no diretório /etc/my.cnf.custom do servidor.

A CentralServer disponibiliza estes arquivos de configuração, já otimizados de acordo com a quantidade de memória contratada para o cloud server, conforme:

Quantidade de Memória do Servidor

Nome do Arquivo

de 1 a 3 GB

my-1G.cnf

de 4 a 9 GB

my-4G.cnf

de 10 a 15 GB

my-10G.cnf

de 16 a 27 GB

my-16G.cnf

de 28 a 40 GB

my-28G.cnf

Configurando link simbólico

É possível chamar o arquivo my-1G.cnf, do exemplo acima, através de um link simbólico montado em /etc/my.cnf. Para isto, é necessário mover ou renomear o arquivo original existente e, em seguida, criar o link simbólico, conforme:

# mv /etc/my.cnf /etc/my.cnf.default

# ln -s /etc/my.cnf.custom/my-1G.cnf /etc/my.cnf

Segue exemplo de um arquivo my.cnf que pode ser utilizado em um CloudFlex com 2 vCPU e 1 GB de memória. Neste caso, o arquivo será my-1G.cnf:

#::::::::::::::

#Cloud (2 vCPU, 1 GB RAM)

#:::::::::::::

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

#slow_query_log=1

#slow-query-log-file=/var/log/mariadb/mariadb_slow_queries.log

#max_user_connections=20

#max_connections=150

thread_cache_size=8

innodb_file_per_table

skip-name-resolve

wait_timeout=300

interactive_timeout=300

open_files_limit=10000

query_cache_type=1

secure_auth=0

query_cache_limit=2M

#::::::::::::::

#Parâmetros de acordo com o tamanho do Cloud Server

query_cache_size=32M

innodb_buffer_pool_size=256M

key_buffer_size=32M

#::::::::::::::

[mysql.server]

user=mysql

basedir=/var/lib

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

Os padrões que serão alterados nos arquivos, conforme a configuração do servidor, são:

query_cache_size=32M

innodb_buffer_pool_size=256M

key_buffer_size=32M

Especificações técnicas dos parâmetros

Segue descrição dos parâmetros a serem otimizados:

  • key_buffer_size: Buffer usado para indexar blocos.
  • innodb_buffer_pool_size: Tamanho em bytes do buffer de memória que o InnoDB usa para armazenar dados e índices de suas tabelas.
  • query_cache_size: Quantidade de memória alocada para cache de resultados de pesquisas.
  • max_connections: Número máximo permitido de conexões simultâneas.
  • max_user_connections: Número máximo de conexões por usuário.

Criando script de atualização da memória contratada

Após realizar upgrade de memória, é recomendado alterar os parâmetros para obter maior desempenho dos recursos e serviços. Em caso de downgrade, a readequação destes parâmetros é necessária para o correto funcionamento dos serviços, evitando que o MySQL realize alocação de memória superior aos recursos disponíveis no servidor.

É possível automatizar a configuração dos parâmetros do my.cnf, para isso crie um script de inicialização, conforme os passos a seguir:

1. Mova ou renomeie o arquivo original existente:

# mv /etc/my.cnf /etc/my.cnf.default

2. Acesse o diretório de inicialização do CentOS:

# cd /etc/rc.d/init.d

3. Crie o script a ser utilizado (ex: mycnf.sh):

# touch mycnf.sh

4. Dê permissão de execução para o script criado:

# chmod +x mycnf.sh

5. Abra o arquivo criado e, em seguida, edite-o colando o código abaixo:

#!/bin/bash

# chkconfig: – 10 60

# description: mycnf.sh script

#Remove link simbolico my.cnf

unlink /etc/my.cnf

#Verifica quantidade de memória do servidor

memory=`free -m | head -2 | tail -1 | awk ‘{print $2}’`

if [ “$memory” -le 3000 ]; then

ln -s /etc/my.cnf.custom/my-1G.cnf /etc/my.cnf

elif [ “$memory” -gt 3000 ] && [ “$memory” -le 9000 ]; then

ln -s /etc/my.cnf.custom/my-4G.cnf /etc/my.cnf

elif [ “$memory” -gt 9000 ] && [ “$memory” -le 15000 ]; then

ln -s /etc/my.cnf.custom/my-10G.cnf /etc/my.cnf

elif [ “$memory” -gt 15000 ] && [ “$memory” -le 27000 ]; then

ln -s /etc/my.cnf.custom/my-16G.cnf /etc/my.cnf

elif [ “$memory” -gt 27000 ]; then

ln -s /etc/my.cnf.custom/my-28G.cnf /etc/my.cnf

fi

6. Por fim, adicione o script de inicialização abaixo:

# chkconfig –add mycnf.sh

# chkconfig mycnf.sh on

Assim, na próxima inicialização do sistema, o script será executado verificando a memória disponível no sistema e ajustando o seu arquivo my.cnf.

AVISO LEGAL: Os procedimentos descritos neste documento devem ser executados de acordo com o contexto de cada sistema, de forma a evitar impactos negativos à segurança, disponibilidade, integridade e privacidade de dados. A CentralServer se reserva o direito de modificar a qualquer tempo e sem aviso prévio as informações aqui apresentadas a fim de refletir o lançamento de novos serviços, atualizações físicas e operacionais, e evolução do estado-da-arte da tecnologia.