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.