Ao instalar ou reinstalar o template CentOS 6.7 + LAMP em seu CloudFlex, 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 CloudFlex, 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 |
É 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
#:::::::::::::: #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
Segue descrição dos parâmetros a serem otimizados:
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:
# mv /etc/my.cnf /etc/my.cnf.default
# cd /etc/rc.d/init.d
# touch mycnf.sh
# chmod +x mycnf.sh
#!/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
# 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.