Após a avaliação geral do hardware e sistema operacional do banco de dados, o ideal é verificar as configurações gerais do MySQL que devem estar ajustadas para valores baseados na sua aplicação, normalmente muito maiores que o padrão do produto.
Versão do MySQL
Cada versão do MySQL é respaldada por um mínimo de 5 anos de suporte, conforme abaixo:
Versão | Suporte até |
---|---|
5.1 | Dezembro de 2013 |
5.5 | Dezembro de 2018 |
5.6 | Fevereiro de 2021 |
5.7 | Outubro de 2023 |
8.x | Abril de 2026 |
Componentes instalados
O MySQL, como qualquer outro software de banco de dados relacional, utilizará o máximo de recurso disponível no servidor, se você assim permitir em suas configurações. Por isso, se sua expectativa é ter uma aplicação servindo muitos usuários, o ideal é possuir um servidor exclusivo para o banco de dados.
Mantenha o MySQL sempre atualizado
Essa prática recomendada pode parecer óbvia, mas a importância de manter hardware, software e firmware atualizados não pode ser ignorada. Sempre que possível, considere atualizar para uma versão mais recente do produto, para aproveitar os novos recursos disponíveis. Mesmo que a empresa decida não migrar para uma versão mais recente, você ainda deve atualizar regularmente o MySQL e o sistema operacional para se beneficiar de quaisquer aprimoramentos de desempenho e segurança recentes. Nos links abaixo você encontrará os últimos updates disponíveis:
Parâmetros de inicialização para ajustes do desempenho do MySQL
Alguns parâmetros devem ser cuidadosamente configurados para permitir o correto consumo dos recursos do servidor pelo banco de dados, garantindo o desempenho desejado pelas aplicações. São eles:
innodb_buffer_pool_size
Por padrão, o MySQL tem permissão para usar até 128MB de memória do servidor. Normalmente isso é muito pouco para sua aplicação, então, precisaremos ajustar essa quantidade para que o sistema operacional também consiga ser executado adequadamente. Nossa recomendação é manter 10% ou 4GB (o que for menor) para o sistema operacional e fornecer algo em torno de 70% do total do servidor ao MySQL, através do parâmetro innodb_buffer_pool_size.
innodb_log_file_size
Esse parâmetro especifíca o tamanho de cada arquivo de log em um grupo, e deve ser suficientemente grande para armazenar em torno de uma hora de registros de log. O valor padrão é 48MB.
innodb_log_files_in_group
A quantidade de arquivos de log no grupo de logs. Recomendamos o valor mínimo de 8 arquivos de log por grupo.
innodb_file_per_table
Se não existe um DBA dentro da empresa, recomendamos habilitar essa opção, criando uma tablespaces para cada tabela do banco de dados.
innodb_stats_on_metadata
Quando esta opção está habilitada, as estatísticas de índice do InnoDB são atualizadas ao executar SHOW TABLE STATUS, SHOW INDEX ou ao consultar o dicionário INFORMATION_SCHEMA.TABLES ou INFORMATION_SCHEMA.STATISTICS. Essas estatísticas incluem a cardinalidade e o número de entradas, elas são usadas pelo otimizador para encontrar um plano de execução ideal. Recomendamos desligar essa opção.
max_connections
O número máximo de conexões permitidas no MySQL.
thread_cache_size
Quantos threads o servidor deve armazenar em cache para reutilização. Quando um cliente se desconecta, as threads do cliente são colocados no cache sempre que houver menos threads do que o configurado em thread_cache_size. Recomendamos a fórmula abaixo para esse parâmetro:
8 + (max_connections / 100)
performance_schema
Habilita o banco de dados de dicionários de dados de performance da instância MySQL. Recomendamos habilitá-lo.
Coleta de Eventos de Espera do MySQL
Recomendamos habilitar a coleta e armazenamento dos eventos de espera do MySQL, conforme abaixo:
Parâmetro de Inicialização | Valor Recomendado |
---|---|
performance-schema-instrument | ‘wait/%=ON’ |
performance-schema-consumer-events-waits-current | ON |
performance-schema-consumer-events-waits-history | ON |
performance-schema-consumer-events-waits-history-long | ON |
Localização padrão dos arquivos do banco de dados
Recomendamos configurar a instância para ter locais separados para arquivos de dados, log e backup. Essas configurações na instância permitirão, sempre que possível, desempenho satisfatório em operações concorrentes de leitura e escrita no sistema operacional.
Ocupação dos discos pelos bancos de dados
Em um servidor MySQL on-premisses, os discos utilizados para armazenamento dos dados devem estar sempre com um mínimo de 20% de espaço disponível, evitando assim indisponibilidades dos serviços para as aplicações.